diff --git a/Localize/locales/en/plugin-translation.json b/Localize/locales/en/plugin-translation.json index 3b847f455..f428b7bbd 100644 --- a/Localize/locales/en/plugin-translation.json +++ b/Localize/locales/en/plugin-translation.json @@ -1,6 +1,6 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"AKS Cluster User Role\" scoped to the resource group", "(already enabled)": "(already enabled)", + "(existing — enter value to overwrite)": "(existing — enter value to overwrite)", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} cluster(s) hidden — no Azure Entra ID", "_{{count}} cluster(s) hidden — no Azure Entra ID_one.comment": "{Locked=\"Azure\"}", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} cluster(s) hidden — no Azure Entra ID", @@ -52,13 +52,18 @@ "Application Health": "Application Health", "Application Metrics": "Application Metrics", "Application name": "Application name", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.", + "_Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens..comment": "{Locked=\"Kubernetes\"}", "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}", "Applied {{count}} resource(s) successfully._one": "Applied {{count}} resource(s) successfully.", "Applied {{count}} resource(s) successfully._other": "Applied {{count}} resource(s) successfully.", "Are you sure you want to delete project \"{{projectId}}\"?": "Are you sure you want to delete project \"{{projectId}}\"?", "Assign permissions to users who need access to your namespace": "Assign permissions to users who need access to your namespace", "Assignee": "Assignee", - "Assigning AKS Cluster User Role...": "Assigning AKS Cluster User Role...", + "Assigning required Azure RBAC roles...": "Assigning required Azure RBAC roles...", + "_Assigning required Azure RBAC roles....comment": "{Locked=\"Azure\"}", + "Assigning required roles...": "Assigning required roles...", "Authorize AKS Desktop to create deployment pipelines in your repository.": "Authorize AKS Desktop to create deployment pipelines in your repository.", "Auto-generated Deployment and Service manifests": "Auto-generated Deployment and Service manifests", "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.", @@ -72,7 +77,12 @@ "_Azure CLI/aks-preview requirements not met.comment": "{Locked=\"Azure\",\"aks-preview\"}", "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor Metrics (Managed Prometheus)", "_Azure Monitor Metrics (Managed Prometheus).comment": "{Locked=\"Azure\",\"Prometheus\"}", + "Azure sign-in is required to configure workload identity.": "Azure sign-in is required to configure workload identity.", + "_Azure sign-in is required to configure workload identity..comment": "{Locked=\"Azure\"}", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.", + "_Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials..comment": "{Locked=\"Azure\"}", "Back": "Back", + "Basic": "Basic", "Basics": "Basics", "branch": "branch", "Bring your own Kubernetes manifests to deploy": "Bring your own Kubernetes manifests to deploy", @@ -91,8 +101,10 @@ "Checking repository readiness...": "Checking repository readiness...", "Checking...": "Checking...", "Choose a source for your deployment (container image, repo, etc.).": "Choose a source for your deployment (container image, repo, etc.).", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.", "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.", "Clear editor": "Clear editor", + "Client ID": "Client ID", "Close": "Close", "Cluster": "Cluster", "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster '{{cluster}}' successfully merged in kubeconfig", @@ -119,6 +131,7 @@ "Configure Cluster": "Configure Cluster", "Configure Container Deployment": "Configure Container Deployment", "Configure container health probes.": "Configure container health probes.", + "Configure Identity": "Configure Identity", "Configure Pipeline": "Configure Pipeline", "Configure security context settings for the container.": "Configure security context settings for the container.", "Configure Workload Identity": "Configure Workload Identity", @@ -140,6 +153,7 @@ "Connecting...": "Connecting...", "Container image": "Container image", "Container Image": "Container Image", + "Container Registry": "Container Registry", "Contents": "Contents", "Continue": "Continue", "Controls whether a process can gain more privileges than its parent process.": "Controls whether a process can gain more privileges than its parent process.", @@ -164,18 +178,24 @@ "Create Application": "Create Application", "Create deployment PRs": "Create deployment PRs", "Create Namespace": "Create Namespace", + "Create new identity": "Create new identity", "Create New Namespace": "Create New Namespace", + "Create new registry": "Create new registry", "Create Project": "Create Project", + "Create Registry": "Create Registry", "Create Setup PR": "Create Setup PR", "Create setup workflow in .github/workflows/": "Create setup workflow in .github/workflows/", "Creates a LoadBalancer to expose the application to the internet.": "Creates a LoadBalancer to expose the application to the internet.", "_Creates a LoadBalancer to expose the application to the internet..comment": "{Locked=\"LoadBalancer\"}", + "Creating federated credential...": "Creating federated credential...", "Creating managed identity...": "Creating managed identity...", "Creating namespace": "Creating namespace", "Creating Namespace": "Creating Namespace", "Creating Project": "Creating Project", + "Creating resource group...": "Creating resource group...", "Creating setup PR...": "Creating setup PR...", "Creating the trigger issue for the Copilot coding agent.": "Creating the trigger issue for the Copilot coding agent.", + "Creating...": "Creating...", "Current Replicas": "Current Replicas", "Current state": "Current state", "Degraded": "Degraded", @@ -225,6 +245,7 @@ "Enable resource requests and limits": "Enable resource requests and limits", "Enable startup probe": "Enable startup probe", "Enable topology spread constraints": "Enable topology spread constraints", + "Enable Workload Identity": "Enable Workload Identity", "Enabling Addons...": "Enabling Addons...", "Enabling these addons may incur additional Azure costs.": "Enabling these addons may incur additional Azure costs.", "_Enabling these addons may incur additional Azure costs..comment": "{Locked=\"Azure\"}", @@ -241,6 +262,7 @@ "Failed to apply": "Failed to apply", "Failed to apply resources.": "Failed to apply resources.", "Failed to convert namespace: {{message}}": "Failed to convert namespace: {{message}}", + "Failed to create container registry": "Failed to create container registry", "Failed to create namespace": "Failed to create namespace", "Failed to create project": "Failed to create project", "Failed to enable addon: {{error}}": "Failed to enable addon: {{error}}", @@ -268,6 +290,7 @@ "failureThreshold": "failureThreshold", "Features": "Features", "Federated Credential": "Federated Credential", + "Fetching OIDC issuer URL...": "Fetching OIDC issuer URL...", "Filter repositories": "Filter repositories", "Final status check failed: {{message}}": "Final status check failed: {{message}}", "Final status verification failed: {{message}}": "Final status verification failed: {{message}}", @@ -280,6 +303,7 @@ "_GitHub Pipelines.comment": "{Locked=\"GitHub\"}", "GitHub: {{username}}": "GitHub: {{username}}", "_GitHub: {{username}}.comment": "{Locked=\"GitHub\"}", + "Globally unique name. 5-50 alphanumeric characters.": "Globally unique name. 5-50 alphanumeric characters.", "Go To Projects": "Go To Projects", "Guided configuration for ports, replicas, env, and resources": "Guided configuration for ports, replicas, env, and resources", "Healthchecks": "Healthchecks", @@ -289,6 +313,7 @@ "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "How often (in seconds) to perform the startup probe. Default is 10 seconds.", "HPA scales pods based on CPU utilization.": "HPA scales pods based on CPU utilization.", "Identity Resource Group": "Identity Resource Group", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.", "Import AKS Projects": "Import AKS Projects", "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.", "Import Selected Projects": "Import Selected Projects", @@ -296,11 +321,6 @@ "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}", "in resource group": "in resource group", "Information about {{label}}": "Information about {{label}}", - "Information about CPU limit": "Information about CPU limit", - "Information about CPU request": "Information about CPU request", - "Information about memory limit": "Information about memory limit", - "Information about memory request": "Information about memory request", - "Information about target CPU utilization": "Information about target CPU utilization", "Ingress Policy": "Ingress Policy", "initialDelaySeconds": "initialDelaySeconds", "Initializing...": "Initializing...", @@ -330,6 +350,7 @@ "KEDA (Event-Driven Autoscaling)": "KEDA (Event-Driven Autoscaling)", "Keep Going": "Keep Going", "Key": "Key", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.", "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes restarts the container if this check fails repeatedly.", "_Kubernetes restarts the container if this check fails repeatedly..comment": "{Locked=\"Kubernetes\"}", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.", @@ -349,6 +370,7 @@ "less than a minute": "less than a minute", "Limits": "Limits", "Liveness path": "Liveness path", + "Load": "Load", "Loading": "Loading", "Loading AKS clusters": "Loading AKS clusters", "Loading Azure account information": "Loading Azure account information", @@ -357,12 +379,13 @@ "_Loading Azure context....comment": "{Locked=\"Azure\"}", "Loading clusters": "Loading clusters", "Loading configuration...": "Loading configuration...", + "Loading container registries...": "Loading container registries...", "Loading deployments": "Loading deployments", + "Loading identities...": "Loading identities...", "Loading metrics": "Loading metrics", "Loading scaling metrics from Prometheus": "Loading scaling metrics from Prometheus", "_Loading scaling metrics from Prometheus.comment": "{Locked=\"Prometheus\"}", "Loading subscriptions": "Loading subscriptions", - "Loading...": "Loading...", "Location": "Location", "Log out": "Log out", "Logged in as": "Logged in as", @@ -376,6 +399,8 @@ "Manual": "Manual", "Manual Deploy": "Manual Deploy", "Manually configure settings": "Manually configure settings", + "Mark as secret (stored as Kubernetes Secret)": "Mark as secret (stored as Kubernetes Secret)", + "_Mark as secret (stored as Kubernetes Secret).comment": "{Locked=\"Kubernetes\"}", "Max replicas": "Max replicas", "Maximum CPU allowed (1000m = 1 CPU core)": "Maximum CPU allowed (1000m = 1 CPU core)", "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximum memory allowed (1024 MiB = 1 GiB)", @@ -486,6 +511,7 @@ "PR {{number}}": "PR {{number}}", "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prefer scheduling pods on different nodes to improve availability and fault tolerance.", "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.", + "Premium": "Premium", "Preview and basic validation before apply": "Preview and basic validation before apply", "Preview Features": "Preview Features", "Project '{{name}}' successfully imported": "Project '{{name}}' successfully imported", @@ -508,6 +534,7 @@ "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.", "Readiness path": "Readiness path", "Ready": "Ready", + "Reconfigure Identity": "Reconfigure Identity", "Refresh": "Refresh", "Refreshing": "Refreshing", "Register AKS Cluster": "Register AKS Cluster", @@ -516,6 +543,8 @@ "_Register ManagedNamespacePreview Feature.comment": "{Locked=\"ManagedNamespacePreview\"}", "Registering": "Registering", "Registering cluster": "Registering cluster", + "Registry Name": "Registry Name", + "Registry name must be 5-50 alphanumeric characters.": "Registry name must be 5-50 alphanumeric characters.", "Regular": "Regular", "Regular Kubernetes namespace": "Regular Kubernetes namespace", "_Regular Kubernetes namespace.comment": "{Locked=\"Kubernetes\"}", @@ -527,8 +556,12 @@ "Request & error rate": "Request & error rate", "Request Rate": "Request Rate", "Requests": "Requests", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "Required Azure RBAC roles for cluster access, deployment, and container registry", + "_Required Azure RBAC roles for cluster access, deployment, and container registry.comment": "{Locked=\"Azure\"}", "Required Permissions": "Required Permissions", "Resource Group": "Resource Group", + "Resource group for the managed identity. Will be created if it does not exist.": "Resource group for the managed identity. Will be created if it does not exist.", + "Resource group to search for managed identities.": "Resource group to search for managed identities.", "Resource group where the managed identity will be created": "Resource group where the managed identity will be created", "Resource Limits": "Resource Limits", "Resource Usage": "Resource Usage", @@ -545,7 +578,7 @@ "_Review on GitHub.comment": "{Locked=\"GitHub\"}", "Review Project Configuration": "Review Project Configuration", "Role": "Role", - "Role Assignment": "Role Assignment", + "Role Assignments": "Role Assignments", "Run as non root user": "Run as non root user", "Run deployment workflows": "Run deployment workflows", "Save": "Save", @@ -566,16 +599,20 @@ "Select a user from the search results or enter a valid object ID (UUID)": "Select a user from the search results or enter a valid object ID (UUID)", "Select All": "Select All", "Select an AKS cluster": "Select an AKS cluster", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "Select an Azure Container Registry for building and pushing container images, or create a new one.", + "_Select an Azure Container Registry for building and pushing container images, or create a new one..comment": "{Locked=\"Azure\"}", "Select an Azure subscription": "Select an Azure subscription", "_Select an Azure subscription.comment": "{Locked=\"Azure\"}", "Select an option": "Select an option", "Select Deployment": "Select Deployment", + "Select managed identity": "Select managed identity", "Select Namespaces to Import": "Select Namespaces to Import", "Select repository": "Select repository", "Select Source": "Select Source", "Selected Cluster Details": "Selected Cluster Details", "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Selected cluster is missing from the kubeconfig. Register it before proceeding.", "_Selected cluster is missing from the kubeconfig. Register it before proceeding..comment": "{Locked=\"kubeconfig\"}", + "Service Account": "Service Account", "Service port": "Service port", "Service type": "Service type", "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.", @@ -599,10 +636,15 @@ "_Sign in with Azure.comment": "{Locked=\"Azure\"}", "Sign in with your Azure account to manage AKS clusters and resources": "Sign in with your Azure account to manage AKS clusters and resources", "_Sign in with your Azure account to manage AKS clusters and resources.comment": "{Locked=\"Azure\"}", + "Skip (configure manually later)": "Skip (configure manually later)", + "SKU": "SKU", "Source": "Source", + "Standard": "Standard", "Starting project creation": "Starting project creation", "Startup path": "Startup path", "Status": "Status", + "Stored as Kubernetes Secret": "Stored as Kubernetes Secret", + "_Stored as Kubernetes Secret.comment": "{Locked=\"Kubernetes\"}", "Subscription": "Subscription", "Successfully merged {{count}} cluster(s)_one": "Successfully merged {{count}} cluster(s)", "Successfully merged {{count}} cluster(s)_other": "Successfully merged {{count}} cluster(s)", @@ -652,6 +694,7 @@ "This PR was closed without merging. You may need to restart the process.": "This PR was closed without merging. You may need to restart the process.", "This typically takes 10–25 minutes.": "This typically takes 10–25 minutes.", "timeoutSeconds": "timeoutSeconds", + "toggle secret": "toggle secret", "Total Pods": "Total Pods", "Track agent progress": "Track agent progress", "Trigger": "Trigger", @@ -671,6 +714,7 @@ "Use ClusterIP. Best for services that are only reachable within the cluster.": "Use ClusterIP. Best for services that are only reachable within the cluster.", "_Use ClusterIP. Best for services that are only reachable within the cluster..comment": "{Locked=\"ClusterIP\"}", "Use custom service port": "Use custom service port", + "Use existing identity": "Use existing identity", "Use existing manifests for full control": "Use existing manifests for full control", "User assignment completed with errors": "User assignment completed with errors", "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.", @@ -697,14 +741,18 @@ "_When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting..comment": "{Locked=\"Kubernetes\"}", "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.", "_When a probe fails, Kubernetes will try this many times before marking the pod as not ready..comment": "{Locked=\"Kubernetes\"}", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.", + "_When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account..comment": "{Locked=\"Azure\"}", "with {{count}} project(s)_one": "with {{count}} project(s)", "with {{count}} project(s)_other": "with {{count}} project(s)", "with the following parameters:": "with the following parameters:", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.", "Wizard steps": "Wizard steps", "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Workflow dispatch triggered successfully. Check GitHub Actions for progress.", "_Workflow dispatch triggered successfully. Check GitHub Actions for progress..comment": "{Locked=\"GitHub\"}", "workflow on": "workflow on", "Workflows": "Workflows", + "Workload Identity": "Workload Identity", "Workload identity configured": "Workload identity configured", "Workload identity configured successfully.": "Workload identity configured successfully.", "Workloads": "Workloads", diff --git a/plugins/aks-desktop/locales/cs/translation.json b/plugins/aks-desktop/locales/cs/translation.json index 68d8cc2cb..e8288bed7 100644 --- a/plugins/aks-desktop/locales/cs/translation.json +++ b/plugins/aks-desktop/locales/cs/translation.json @@ -1,629 +1,693 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "Role uživatele clusteru AKS vymezená na skupinu prostředků", - "(already enabled)": "(již povoleno)", + "Failed to load subscriptions": "Nepovedlo se načíst předplatná.", + "Failed to load AKS clusters": "Nepovedlo se načíst clustery AKS.", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster {{cluster}} se úspěšně sloučil v kubeconfig.", + "Failed to register cluster: {{message}}": "Nepodařilo se zaregistrovat cluster: {{message}}.", + "Register AKS Cluster": "Zaregistrovat cluster AKS", + "Checking authentication status": "Kontroluje se stav ověřování.", + "You need to be logged in to Azure to register AKS clusters.": "Abyste mohli registrovat clustery AKS, musíte být přihlášení k Azure.", + "Subscription": "Předplatné", + "Select an Azure subscription": "Vyberte předplatné Azure", + "Loading subscriptions": "Načítání předplatných", + "Loading AKS clusters": "Načítání clusterů AKS", + "No AKS clusters found in this subscription.": "V tomto předplatném se nenašly žádné clustery AKS.", + "AKS Cluster": "Cluster AKS", + "Select an AKS cluster": "Vyberte cluster AKS", + "Selected Cluster Details": "Podrobnosti vybraného clusteru", + "Name": "Název", + "Resource Group": "Skupina prostředků", + "Location": "Umístění", + "Kubernetes Version": "Verze Kubernetes", + "Done": "Hotovo", + "Cancel": "Zrušit", + "Registering": "Probíhá registrace", + "Register Cluster": "Zaregistrovat cluster", + "Initiating Azure login": "Zahajuje se přihlášení k Azure.", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Dokončete prosím ověření v prohlížeči. Toto okno se po dokončení přihlášení automaticky přesměruje.", + "Login successful! Redirecting": "Přihlášení bylo úspěšné. Přesměrování", + "Login timeout. Please try again.": "Vypršel časový limit přihlášení. Zkuste to prosím znovu.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Čeká se na dokončení přihlášení... (zbývající počet minut: {{minutes}})", + "Failed to initiate login: {{message}}": "Nepovedlo se inicializovat přihlášení: {{message}}", + "Azure Authentication": "Ověřování Azure", + "Sign in with your Azure account to manage AKS clusters and resources": "Pro správu clusterů a prostředků AKS se přihlaste pomocí účtu Azure.", + "Sign in with Azure": "Přihlášení pomocí Azure", + "Loading Azure account information": "Načítají se informace o účtu Azure.", + "Back": "Zpět", + "Azure Account": "Účet Azure", + "Logged in as": "Přihlášeno jako", + "Add Cluster from Azure": "Přidat cluster z Azure", + "Logging out": "Probíhá odhlašování", + "Log out": "Odhlásit se", + "Azure CLI/aks-preview requirements not met": "Nesplněny požadavky Azure CLI/aks-preview", + "Dismiss": "Zrušit", + "Configure Pipeline": "Konfigurovat kanál", + "Loading Azure context...": "Načítá se kontext Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Oprávnění jen pro čtení k většině objektů v oboru názvů. Nemůžete zobrazit role, vazby rolí nebo tajné kódy.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Oprávnění ke čtení/zápisu k většině objektů v oboru názvů. Nelze zobrazit nebo upravit role nebo vazby rolí. Může mít přístup k tajným kódům a spouštět pody jako libovolný ServiceAccount v daném oboru názvů.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Oprávnění ke čtení/zápisu k většině prostředků v oboru názvů. Může vytvářet role a vazby rolí v rámci oboru názvů. Nemůže zapisovat do kvóty prostředků nebo samotného oboru názvů.", + "Access": "Přístup", + "Assign permissions to users who need access to your namespace": "Přiřaďte oprávnění uživatelům, kteří potřebují přístup k vašemu oboru názvů.", + "Assignee": "Pověřená osoba", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Role", + "Remove assignee": "Odebrat pověřenou osobu", + "Add assignee": "Přidat pověřenou osobu", + "Only clusters with Azure Entra ID authentication are shown.": "Zobrazují se jenom clustery s ověřováním Azure Entra ID.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "Byl skryt tento počet clusterů: {{count}} – bez ID Azure Entra", + "{{count}} cluster(s) hidden — no Azure Entra ID_few": "", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "Byl skryt tento počet clusterů: {{count}} – bez ID Azure Entra", + "No eligible clusters found in this subscription.": "V tomto předplatném se nenašly žádné oprávněné clustery.", "{{count}} eligible cluster(s) found._one": "Počet nalezených oprávněných clusterů: {{count}}", + "{{count}} eligible cluster(s) found._few": "", + "{{count}} eligible cluster(s) found._many": "", "{{count}} eligible cluster(s) found._other": "Počet nalezených oprávněných clusterů: {{count}}", - "{{count}} failed._one": "Neúspěšné: {{count}}.", - "{{count}} failed._other": "Neúspěšné: {{count}}.", - "{{count}} min_one": "{{count}} min", - "{{count}} min_other": "{{count}} min", - "{{count}} selected_one": "Vybráno: {{count}}", - "{{count}} selected_other": "Vybráno: {{count}}", - "{{days}}d ago": "Před {{days}} d", - "{{hours}}h ago": "Před {{hours}} h", - "{{minutes}} min ago": "před {{minutes}} min.", - "{{seconds}}s ago": "Před {{seconds}} s", - "{{weeks}}w ago": "před {{weeks}} týd.", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Je nutné vybrat cluster", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "V clusteru se vytvoří nový obor názvů s použitými popisky projektu. Zobrazí se okamžitě v seznamu projektů.", - "Absolute usage": "Absolutní využití", - "Access": "Přístup", - "Access Control ({{count}} assignee)_one": "Řízení přístupu (počet pověřených osob: {{count}})", - "Access Control ({{count}} assignee)_other": "Access Control (počet přiřazených: {{count}})", - "Actions": "Akce", - "Add assignee": "Přidat pověřenou osobu", - "Add Cluster from Azure": "Přidat cluster z Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Přidejte jeden nebo více manifestů Kubernetes. Nahrajte soubory pro naplnění editoru nebo je vložte či upravte přímo níže.", - "Add variable": "Přidat proměnnou", - "Advanced": "Rozšířené", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Po sloučení agent Copilota analyzuje vaše úložiště a vytvoří žádost o přijetí změn pro nasazení.", - "Agent is working": "Agent pracuje.", - "AKS Cluster": "Cluster AKS", - "AKS desktop logo": "Logo AKS Desktop", - "AKS Managed": "Spravované AKS", - "AKS Preview Extension installed successfully!": "Rozšíření AKS Preview se úspěšně nainstalovalo!", - "AKS Preview Extension Required": "Vyžaduje se rozšíření AKS Preview.", - "AKS Project?": "Projekt AKS?", - "All selected addons have been enabled successfully.": "Všechny vybrané doplňky byly úspěšně povoleny.", - "All verifications completed successfully!": "Všechna ověření se úspěšně dokončila!", - "Allow all traffic": "Povolit veškerý provoz", - "Allow privilege escalation": "Povolit elevaci oprávnění", - "Allow traffic within same namespace": "Povolit provoz v rámci stejného oboru názvů", - "Already AKS projects (will import directly):": "Už jsou projekty AKS (budou se importovat přímo):", - "Also delete the namespaces (this will remove all resources within them)": "Odstraňte také obory názvů (tím se odeberou všechny prostředky v nich)", - "Another project already exists with same name. Please choose a different name.": "Už existuje jiný projekt se stejným názvem. Zvolte prosím jiný název.", - "Application Health": "Stav aplikace", - "Application Metrics": "Metriky aplikací", - "Application name": "Název aplikace", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Byl aplikován tento počet prostředků: {{applied}}, ale tento počet selhal: {{failed}}:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Počet úspěšně aplikovaných prostředků: {{count}}", - "Applied {{count}} resource(s) successfully._other": "Počet úspěšně aplikovaných prostředků: {{count}}", - "Are you sure you want to delete project \"{{projectId}}\"?": "Opravdu chcete odstranit projekt {{projectId}}?", - "Assign permissions to users who need access to your namespace": "Přiřaďte oprávnění uživatelům, kteří potřebují přístup k vašemu oboru názvů.", - "Assignee": "Pověřená osoba", - "Assigning AKS Cluster User Role...": "Přiřazuje se role uživatele clusteru AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorizujte AKS Desktop k vytváření kanálů nasazení ve vašem úložišti.", - "Auto-generated Deployment and Service manifests": "Automaticky generované manifesty nasazení a služby", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automaticky škáluje počet podů na základě využití procesoru. HPA zvýší počet podů, když využití procesoru překročí cílovou hodnotu, a sníží ho, když bude pod touto hodnotou.", - "Available Replicas": "Dostupné repliky", - "Avg Response Time": "Průměrná doba odezvy", - "Azure Account": "Účet Azure", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Ověřování Azure", - "Azure CLI/aks-preview requirements not met": "Nesplněny požadavky Azure CLI/aks-preview", - "Azure Monitor Metrics (Managed Prometheus)": "Metriky Azure Monitoru (spravovaný Prometheus)", - "Back": "Zpět", - "Basics": "Základy", - "branch": "větev", - "Bring your own Kubernetes manifests to deploy": "Použijte k nasazení vlastní manifesty Kubernetes", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Ve výchozím nastavení používají testy požadavek HTTP GET na kořenovou cestu s rozumnými výchozími hodnotami. Tuto možnost povolte, pokud chcete nastavení testů přizpůsobit.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Ve výchozím nastavení port služby odpovídá cílovému portu. Tuto možnost povolte, pokud chcete pro službu použít jiný port.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Ve výchozím nastavení se odeberou popisky spravovaného oboru názvů a projektu Azure z následujících oborů názvů:", - "Cancel": "Zrušit", - "Canceling will discard your pipeline progress. Are you sure?": "Zrušením se zahodí průběh kanálu. Jste si jistí?", - "Cancelled deletion of project {{ projectId }}.": "Bylo zrušeno odstranění projektu {{ projectId }}.", - "Checking authentication status": "Kontroluje se stav ověřování.", - "Checking for existing identity...": "Kontroluje se existující identita...", - "Checking if another project exists with same name": "Kontroluje se, jestli existuje jiný projekt se stejným názvem.", - "Checking merge status...": "Kontroluje se stav sloučení...", - "Checking repository readiness...": "Kontroluje se připravenost úložiště...", - "Checking...": "Kontroluje se...", - "Choose a source for your deployment (container image, repo, etc.).": "Zvolte zdroj pro nasazení (image kontejneru, úložiště atd.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Kanál CI/CD pro {{repoFullName}} je připravený. Aktivujte nasazení z karty Nasadit.", - "Clear editor": "Vymazat historii editoru", - "Close": "Zavřít", - "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster {{cluster}} se úspěšně sloučil v kubeconfig.", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Před importem běžných oborů názvů musí být cluster {{clusterName}} zaregistrován. Nejprve importujte spravovaný obor názvů z tohoto clusteru.", - "Cluster Configuration": "Konfigurace clusteru", - "Cluster is being deleted. Cannot deploy to this cluster.": "Cluster se odstraňuje. Do tohoto clusteru nelze provést nasazení.", "Cluster is currently updating. Deployment may fail.": "Cluster se právě aktualizuje. Nasazení může selhat.", - "Cluster is deallocated. Please start the cluster before deploying.": "Cluster je uvolněný. Před nasazením prosím cluster spusťte.", - "Cluster is in a failed state. Please check Azure portal.": "Cluster je v neúspěšném stavu. Podívejte se prosím na Azure Portal.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Cluster se odstraňuje. Do tohoto clusteru nelze provést nasazení.", "Cluster is still being created. Please wait until creation completes.": "Cluster se stále vytváří. Počkejte prosím, než se vytváření dokončí.", + "Cluster is in a failed state. Please check Azure portal.": "Cluster je v neúspěšném stavu. Podívejte se prosím na Azure Portal.", "Cluster is stopped. Please start the cluster before deploying.": "Cluster je zastaven. Před nasazením prosím cluster spusťte.", + "Cluster is deallocated. Please start the cluster before deploying.": "Cluster je uvolněný. Před nasazením prosím cluster spusťte.", + "AKS Preview Extension Required": "Vyžaduje se rozšíření AKS Preview.", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "K vytvoření spravovaných oborů názvů se vyžaduje rozšíření aks-preview. Nainstalujte ho prosím, aby bylo možné pokračovat.", + "Installing": "Instalace", + "Install Extension": "Nainstalovat rozšíření", + "AKS Preview Extension installed successfully!": "Rozšíření AKS Preview se úspěšně nainstalovalo!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Funkce ManagedNamespacePreview musí být zaregistrována, aby bylo možné vytvářet spravované obory názvů.", + "Current state": "Aktuální stav", + "Please register it to continue.": "Pokud chcete pokračovat, zaregistrujte ho prosím.", + "Register ManagedNamespacePreview Feature": "Zaregistrovat funkci ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "Funkce ManagedNamespacePreview se úspěšně zaregistrovala.", + "Project Name": "Název projektu", + "Checking if another project exists with same name": "Kontroluje se, jestli existuje jiný projekt se stejným názvem.", + "Another project already exists with same name. Please choose a different name.": "Už existuje jiný projekt se stejným názvem. Zvolte prosím jiný název.", + "Project name is available": "Název projektu je k dispozici.", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Název projektu musí obsahovat jenom malá písmena, číslice a spojovníky (bez mezer).", + "Project Description": "Popis projektu", + "Enter project description": "Zadejte popis projektu.", + "Select a subscription": "Vyberte předplatné", + "Search subscriptions": "Hledat předplatná", + "No subscriptions found": "Nenašla se žádná předplatná", + "Retry": "Zkusit znovu", + "Cluster": "Cluster", + "Please select a subscription first": "Nejdříve prosím vyberte předplatné.", + "Loading clusters": "Načítání clusterů", + "Select a cluster": "Vyberte cluster", + "Search clusters": "Hledat clustery", + "No clusters with Azure Entra ID authentication found for this subscription": "Pro toto předplatné se nenašly žádné clustery s ověřováním Azure Entra ID.", "Cluster Not Ready": "Cluster není připravený", - "Collapse panel": "Sbalit panel", - "Complete authorization on your browser screen": "Dokončete autorizaci na obrazovce prohlížeče", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Dokončete instalaci v prohlížeči. Tato aktualizace se provede automaticky, jakmile se aplikace nainstaluje v úložišti {{repoName}}.", - "Compute Quota": "Kvóta výpočetních prostředků", - "Configuration Complete": "Konfigurace byla dokončena", - "Configuration Error": "Chyba konfigurace", + "Refreshing": "Aktualizace", + "Refresh": "Aktualizovat", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "V kubeconfig chybí vybraný cluster. Než budete pokračovat, zaregistrujte ho.", + "Registering cluster": "Registruje se cluster", + "Wizard steps": "Postup průvodce", + "Azure Monitor Metrics (Managed Prometheus)": "Metriky Azure Monitoru (spravovaný Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (automatické škálování řízené událostmi)", + "VPA (Vertical Pod Autoscaler)": "VPA (automatické vertikální škálování podů)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Konfigurace trvá déle, než se očekávalo. Zkontrolujte prosím aktuální stav clusteru na webu Azure Portal.", - "Configure": "Konfigurovat", - "Configure Cluster": "Nakonfigurovat cluster", - "Configure Container Deployment": "Konfigurovat nasazení kontejneru", - "Configure container health probes.": "Nakonfigurujte testy stavu kontejneru.", - "Configure Pipeline": "Konfigurovat kanál", - "Configure security context settings for the container.": "Nakonfigurujte nastavení kontextu zabezpečení pro kontejner.", - "Configure Workload Identity": "Nakonfigurovat identitu úlohy", - "Configured Replicas": "Nakonfigurované repliky", + "Failed to enable addons": "Nepovedlo se povolit doplňky.", + "Failed to enable addon: {{error}}": "Nepovedlo se povolit doplněk: {{error}}", + "Cluster Configuration": "Konfigurace clusteru", + "(already enabled)": "(již povoleno)", + "The following addons can be enabled on this cluster:": "V tomto clusteru je možné povolit následující doplňky:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Modul zásad sítě nelze po vytvoření clusteru změnit. Vytvořit nový cluster pomocí", + "for full network policy support.": "pro úplnou podporu zásad sítě.", + "Enabling these addons may incur additional Azure costs.": "Povolení těchto doplňků může způsobit dodatečné náklady v Azure.", + "Configuration Error": "Chyba konfigurace", + "Configuration Complete": "Konfigurace byla dokončena", + "All selected addons have been enabled successfully.": "Všechny vybrané doplňky byly úspěšně povoleny.", "Configuring cluster... This may take a few minutes.": "Konfiguruje se cluster... Může to trvat několik minut.", - "Configuring federated credential...": "Konfigurují se federované přihlašovací údaje...", + "Enabling Addons...": "Povolují se doplňky...", "Configuring...": "Probíhá konfigurace…", - "Confirm & Import": "Potvrdit a importovat", - "Connect": "Připojit", - "Connect GitHub": "Připojit GitHub", - "Connect Source": "Připojit zdroj", - "Connect to GitHub": "Připojit ke GitHubu", - "Connected": "Připojeno", - "Connected to '{{username}}'.": "Připojeno k: {{username}}", - "Connecting to GitHub...": "Připojování ke GitHubu...", - "Connecting...": "Připojování...", - "Container image": "Image kontejneru", - "Container Image": "Image kontejneru", - "Contents": "Obsah", - "Continue": "Pokračovat", - "Controls whether a process can gain more privileges than its parent process.": "Určuje, jestli proces může získat více oprávnění než nadřazený proces.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Určuje, jestli proces může získat více oprávnění než nadřazený proces. Zakázání této možnosti (doporučeno) zabrání útokům typu elevace oprávnění.", - "Convert Namespaces to AKS Projects": "Převést obory názvů na projekty AKS", - "Converting": "Probíhá převod", - "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} se převádí na projekt AKS (může to chvíli trvat)...", - "Copied!": "Zkopírováno!", - "Copilot agent": "Agent Copilota", - "Copilot agent reviewed your repo and generated deployment PR": "Agent Copilota zkontroloval vaše úložiště a vygeneroval žádost o přijetí změn pro nasazení.", - "Copy": "Kopírovat", - "Copy to clipboard": "Zkopírovat do schránky", - "CPU": "CPU", - "CPU limit": "Omezení CPU", - "CPU Limits": "Limity procesoru", - "CPU request": "Požadavek na CPU", - "CPU Requests": "Požadavky na procesor", + "Configure Cluster": "Nakonfigurovat cluster", + "Compute Quota": "Kvóta výpočetních prostředků", + "Set quota limits to prevent overuse and maintain cluster stability": "Nastavte limity kvót, abyste zabránili nadměrnému využívání a zajistili stabilitu clusteru.", "CPU Resources": "Prostředky procesoru", - "CPU Usage": "Využití procesoru", - "CPU Usage / Target": "Využití procesoru / cíl", - "Create a new namespace on an existing cluster and set it up as a project": "Vytvořte nový obor názvů v existujícím clusteru a nastavte ho jako projekt", - "Create Application": "Vytvořit aplikaci", - "Create deployment PRs": "Vytvořit žádosti o přijetí změn nasazení", - "Create Namespace": "Vytvořit obor názvů", - "Create New Namespace": "Vytvořit nový obor názvů", - "Create Project": "Vytvořit projekt", - "Create Setup PR": "Vytvořit žádost o přijetí změn pro nastavení", - "Create setup workflow in .github/workflows/": "Vytvořit pracovní postup nastavení v .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Vytvoří LoadBalancer pro zpřístupnění aplikace na internetu.", - "Creating managed identity...": "Vytváří se spravovaná identita...", - "Creating namespace": "Vytváření oboru názvů", - "Creating Namespace": "Vytváří se obor názvů", - "Creating Project": "Vytváří se projekt", - "Creating setup PR...": "Vytváří se žádost o přijetí změn pro nastavení...", - "Creating the trigger issue for the Copilot coding agent.": "Vytváří se problém s triggerem pro agenta Copilota pro psaní kódu.", - "Current Replicas": "Aktuální repliky", - "Current state": "Aktuální stav", - "Degraded": "Snížený výkon", - "Delete project": "Odstranit projekt", + "CPU Requests": "Požadavky na procesor", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimální zaručený procesor (1000m = 1 jádro procesoru)", + "CPU Limits": "Limity procesoru", + "Maximum CPU allowed (1000m = 1 CPU core)": "Maximální povolené využití procesoru (1000m = 1 jádro procesoru)", + "Memory Resources": "Prostředky paměti", + "Memory Requests": "Požadavky na paměť", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimální zaručená paměť (1024 MiB = 1 GiB)", + "Memory Limits": "Limity paměti", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximální povolená paměť (1024 MiB = 1 GiB)", + "Basics": "Základy", + "Networking Policies": "Zásady sítě", + "Review": "Kontrola", + "New Project": "Nový projekt", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Nastavit a nakonfigurovat nový projekt v Azure Kubernetes Service (AKS)", + "Creating Project": "Vytváří se projekt", + "Create Project": "Vytvořit projekt", + "Loading": "Načítání", + "Next": "Další", + "Project Created Successfully!": "Projekt se úspěšně vytvořil!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Váš projekt AKS {{projectName}} byl vytvořen a je připraven k použití.", + "Application name": "Název aplikace", + "Enter application name": "Zadejte název aplikace", + "Enter a name for your first application to get started with deployment.": "Pokud chcete začít s nasazením, zadejte název první aplikace.", + "Create Application": "Vytvořit aplikaci", + "Project Creation Failed": "Nepovedlo se vytvořit projekt", + "Set security, communication and access rules for incoming and outgoing traffic": "Nastavte pravidla zabezpečení, komunikace a přístupu pro příchozí a odchozí provoz", + "Allow traffic within same namespace": "Povolit provoz v rámci stejného oboru názvů", + "Allow all traffic": "Povolit veškerý provoz", + "Deny all traffic": "Odepřít veškerý provoz", + "Review Project Configuration": "Zkontrolovat konfiguraci projektu", + "Please review all the settings before creating your AKS project": "Před vytvořením projektu AKS si prosím projděte všechna nastavení.", + "Project Basics": "Základy projektu", + "Description": "Popis", + "No description provided": "Není zadaný žádný popis", + "Ingress Policy": "Zásada příchozího přenosu dat", + "Egress Policy": "Zásada výchozího přenosu dat", + "CPU": "CPU", + "Requests": "Žádosti", + "Limits": "Limity", + "Memory": "Paměť", + "Access Control ({{count}} assignee)_one": "Řízení přístupu (počet pověřených osob: {{count}})", + "Access Control ({{count}} assignee)_few": "", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Access Control (počet přiřazených: {{count}})", + "Not specified": "Neuvedeno", + "Select an option": "Vyberte některou z možností.", + "No options": "Žádné možnosti", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Spouští se vytváření projektu.", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Časový limit vytvoření projektu vypršel po 10 minutách. Zkontrolujte prosím, jestli se obor názvů vytvořil, a zkuste to znovu.", + "Initiating managed namespace creation": "Zahajuje se vytváření spravovaného oboru názvů.", + "Namespace creation failed: {{message}}": "Nepovedlo se vytvořit obor názvů: {{message}}.", + "Namespace creation initiated! Monitoring creation status": "Bylo zahájeno vytváření oboru názvů. Stav vytváření monitorování", + "Waiting for namespace to propagate": "Čeká se na rozšíření oboru názvů.", + "Namespace status check failed: {{message}}": "Kontrola stavu oboru názvů se nezdařila: {{message}}.", + "Waiting for namespace to be created": "Čeká se na vytvoření oboru názvů.", + "Namespace status verification failed: {{message}}": "Ověření stavu oboru názvů se nezdařilo: {{message}}.", + "Namespace creation API succeeded, proceeding with user assignments": "Rozhraní API pro vytvoření oboru názvů bylo úspěšné. Pokračuje se přiřazováním uživatelů.", + "Namespace creation completed successfully! Adding user access": "Vytváření oboru názvů bylo úspěšně dokončeno. Přidává se přístup uživatele.", + "User assignment completed with errors": "Přiřazení uživatele se dokončilo s chybami.", + "Project creation completed successfully!": "Vytváření projektu se úspěšně dokončilo.", + "Performing final status verification": "Provádí se konečné ověření stavu.", + "Final status check failed: {{message}}": "Kontrola konečného stavu se nezdařila: {{message}}", + "Final status verification failed: {{message}}": "Ověření konečného stavu se nezdařilo: {{message}}.", + "All verifications completed successfully!": "Všechna ověření se úspěšně dokončila!", + "Failed to create project": "Projekt se nepodařilo vytvořit.", + "A cluster must be selected": "Je nutné vybrat cluster", + "Namespace name is required": "Název oboru názvů je povinný", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Název oboru názvů musí obsahovat jenom malá písmena, číslice a spojovníky a musí začínat a končit alfanumerickým znakem", + "Namespace name must be 63 characters or fewer": "Název oboru názvů musí mít maximálně 63 znaků", + "Creating namespace": "Vytváření oboru názvů", + "Updating local settings": "Aktualizují se místní nastavení", + "Namespace created successfully!": "Obor názvů se úspěšně vytvořil!", + "Failed to create namespace": "Vytvoření oboru názvů se nezdařilo", + "No clusters found. Register a cluster first.": "Nenašly se žádné clustery. Nejprve zaregistrujte cluster.", + "Namespace Name": "Název oboru názvů", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Musí obsahovat jenom malá písmena, číslice a spojovníky a začínat a končit alfanumerickým znakem", + "The namespace will be created on the selected cluster and set up as a project": "Obor názvů se vytvoří ve vybraném clusteru a nastaví se jako projekt", + "Type": "Typ", + "Regular Kubernetes namespace": "Běžný obor názvů Kubernetes", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "V clusteru se vytvoří nový obor názvů s použitými popisky projektu. Zobrazí se okamžitě v seznamu projektů.", + "Create New Namespace": "Vytvořit nový obor názvů", + "Create a new namespace on an existing cluster and set it up as a project": "Vytvořte nový obor názvů v existujícím clusteru a nastavte ho jako projekt", + "Creating Namespace": "Vytváří se obor názvů", + "Namespace Creation Failed": "Nepovedlo se vytvořit obor názvů", + "Namespace Created Successfully!": "Obor názvů se úspěšně vytvořil!", + "Your project \"{{projectName}}\" is ready to use.": "Váš projekt {{projectName}} je připravený k použití.", + "Go To Projects": "Přejít na projekty", + "Create Namespace": "Vytvořit obor názvů", + "Delete project": "Odstranit projekt", "Delete Project": "Odstranit projekt", + "Are you sure you want to delete project \"{{projectId}}\"?": "Opravdu chcete odstranit projekt {{projectId}}?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Ve výchozím nastavení se odeberou popisky spravovaného oboru názvů a projektu Azure z následujících oborů názvů:", + "Also delete the namespaces (this will remove all resources within them)": "Odstraňte také obory názvů (tím se odeberou všechny prostředky v nich)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Varování: Tato akce je nevratná. Všechny prostředky v těchto oborech názvů se trvale odstraní.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Poznámka: U spravovaných oborů názvů AKS se správa Azure ARM odebere automaticky.", "Delete Project & Namespaces": "Odstranit projekt a obory názvů", - "Deleted project {{ projectId }}.": "Projekt {{ projectId }} byl odstraněn.", "Deleting project {{ projectId }}…": "Odstraňuje se projekt {{ projectId }}...", - "Deny all traffic": "Odepřít veškerý provoz", - "Deploy": "Nasadit", - "Deploy {{repo}}": "Nasadit {{repo}}", - "Deploy an application to start viewing metrics.": "Pokud chcete začít zobrazovat metriky, nasaďte aplikaci.", - "Deploy an application to view logs.": "Nasaďte aplikaci, abyste si mohli zobrazit protokoly.", + "Cancelled deletion of project {{ projectId }}.": "Bylo zrušeno odstranění projektu {{ projectId }}.", + "Deleted project {{ projectId }}.": "Projekt {{ projectId }} byl odstraněn.", + "Error deleting project {{ projectId }}.": "Při odstraňování projektu {{ projectId }} došlo k chybě.", "Deploy Application": "Nasadit aplikaci", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Nasadit ze služby Azure Container Registry, Docker Hubu nebo GHCR", + "Failed to load pipeline runs": "Nepodařilo se načíst spuštění kanálu.", + "Pipeline": "Kanál", + "Set up your pipeline": "Nastavte si kanál", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Nastavte si kanál CI/CD, který automatizuje vaše nasazení a zjednoduší váš pracovní postup", + "Waiting for browser authorization...": "Čeká se na autorizaci prohlížeče...", + "Sign in to GitHub to view pipeline runs.": "Pokud chcete zobrazit spuštění kanálu, přihlaste se ke GitHubu.", + "Connecting...": "Připojování...", + "No pipeline runs yet.": "Zatím nebyly spuštěny žádné kanály.", + "View on GitHub": "Zobrazit na GitHubu", + "View run on GitHub": "Zobrazit spuštění na GitHubu", + "Healthy": "V pořádku", + "Scaled down": "Vertikálně snížená kapacita", + "Degraded": "Snížený výkon", + "VS Code": "VS Code", + "Manual": "Ruční", + "Manual Deploy": "Ruční nasazení", + "Deploy {{repo}}": "Nasadit {{repo}}", "Deploy via Pipeline": "Nasadit přes kanál", - "Deploying": "Nasazování", + "No deployments found in this namespace.": "V tomto oboru názvů se nenašla žádná nasazení.", "Deployment": "Nasazení", - "Deployment PR": "Žádost o přijetí změn pro nasazení", - "Deployment PR Ready": "Žádost o přijetí změn nasazení je připravená", - "Deployment PR reviewed and merged": "Žádost o přijetí změn nasazení se zkontrolovala a sloučila.", - "Deployment source": "Zdroj nasazení", - "Description": "Popis", - "Deselect All": "Zrušit výběr", - "Desired Replicas": "Požadované repliky", - "Discard": "Zahodit", - "Dismiss": "Zrušit", - "Distributes pods evenly across nodes to improve workload distribution.": "Distribuuje pody rovnoměrně mezi uzly, aby se zlepšila distribuce úloh.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Rovnoměrně rozděluje pody mezi uzly, zóny nebo jiné topologické domény, čímž zlepšuje rozložení úloh a dostupnost.", - "Done": "Hotovo", - "Edit Configuration": "Upravit konfiguraci", + "Source": "Zdroj", + "Replicas": "Repliky", + "Ready": "Připraveno", + "Status": "Stav", + "Actions": "Akce", "Edit deployment": "Upravit nasazení", - "Edit HPA Configuration": "Upravit konfiguraci HPA", - "Edit Manual Scaling Configuration": "Upravit konfiguraci ručního škálování", - "Egress Policy": "Zásada výchozího přenosu dat", + "View workflow run": "Zobrazit spuštění pracovního postupu", + "Re-deploy": "Znovu nasadit", + "Failed to trigger deployment": "Nepovedlo se aktivovat nasazení.", + "Trigger": "Aktivační událost", + "workflow on": "pracovní postup na", + "with the following parameters:": "s následujícími parametry:", + "Namespace": "Obor názvů", + "Sign in": "Přihlásit se", + "GitHub authentication required to trigger deployment.": "K aktivaci nasazení se vyžaduje ověřování GitHubu.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Odeslání pracovního postupu se úspěšně aktivovalo. Průběh zkontrolujte v GitHub Actions.", + "Close": "Zavřít", + "Triggering...": "Spouštění...", + "Deploy": "Nasadit", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Pokud chcete používat nasazení kanálů, povolte kanály GitHubu tady: Nastavení → Funkce Preview.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Povolte kanály nasazení založené na GitHubu pro projekty AKS.", - "Enable Horizontal Pod Autoscaler": "Povolit automatické horizontální škálování podů", - "Enable liveness probe": "Povolit test aktivity", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Povolte nebo zakažte funkce, které jsou stále ve vývoji. Funkce Preview se můžou v budoucích verzích změnit nebo odebrat.", - "Enable pod anti-affinity": "Povolit ochranu proti spřažení podů", - "Enable public access": "Povolit veřejný přístup", - "Enable readiness probe": "Povolit test připravenosti", - "Enable resource requests and limits": "Povolit požadavky a limity prostředků", - "Enable startup probe": "Povolit test spuštění", - "Enable topology spread constraints": "Povolit omezení rozložení podle topologie", - "Enabling Addons...": "Povolují se doplňky...", - "Enabling these addons may incur additional Azure costs.": "Povolení těchto doplňků může způsobit dodatečné náklady v Azure.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Zajistěte, aby minimální počet replik byl menší nebo roven maximálnímu počtu replik a aby cílové využití procesoru bylo mezi 10 % a 95 %.", + "Workloads": "Sady funkcí", + "No clusters in this project.": "V tomto projektu nejsou žádné clustery.", + "Failed to fetch deployments": "Nepovedlo se načíst nasazení.", + "Failed to fetch cluster status": "Nepovedlo se načíst stav clusteru.", + "Configure security context settings for the container.": "Nakonfigurujte nastavení kontextu zabezpečení pro kontejner.", + "Run as non root user": "Spustit bez oprávnění uživatele root", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Zajišťuje, aby kontejner běžel jako uživatel bez oprávnění root (UID != 0) pro vyšší zabezpečení. Tím se zabrání útokům typu elevace oprávnění.", "Ensures the container runs as a non-root user for better security.": "Zajišťuje, aby kontejner běžel jako uživatel bez oprávnění root pro vyšší zabezpečení.", - "Ensuring resource group exists...": "Ověřuje se, že skupina prostředků existuje...", - "Enter a name for your first application to get started with deployment.": "Pokud chcete začít s nasazením, zadejte název první aplikace.", - "Enter application name": "Zadejte název aplikace", - "Enter project description": "Zadejte popis projektu.", - "Environment Variables": "Proměnné prostředí", - "Error deleting project {{ projectId }}.": "Při odstraňování projektu {{ projectId }} došlo k chybě.", - "Error Rate": "Chybovost", - "Failed to apply": "Použití selhalo", - "Failed to apply resources.": "Nepovedlo se aplikovat prostředky.", - "Failed to convert namespace: {{message}}": "Nepovedlo se převést obor názvů: {{message}}", - "Failed to create namespace": "Vytvoření oboru názvů se nezdařilo", - "Failed to create project": "Projekt se nepodařilo vytvořit.", - "Failed to enable addon: {{error}}": "Nepovedlo se povolit doplněk: {{error}}", - "Failed to enable addons": "Nepovedlo se povolit doplňky.", - "Failed to fetch cluster status": "Nepovedlo se načíst stav clusteru.", - "Failed to fetch deployment status": "Nepovedlo se načíst stav nasazení.", - "Failed to fetch deployments": "Nepovedlo se načíst nasazení.", - "Failed to fetch managed namespace details": "Nepovedlo se načíst podrobnosti o spravovaném oboru názvů.", - "Failed to fetch managed namespaces": "Nepovedlo se načíst spravované obory názvů.", - "Failed to fetch pod status": "Nepovedlo se načíst stav podu.", - "Failed to fetch service status": "Nepovedlo se načíst stav služby.", - "Failed to import any projects. See details below.": "Nepovedlo se naimportovat žádné projekty. Podrobnosti najdete níže.", - "Failed to initiate login: {{message}}": "Nepovedlo se inicializovat přihlášení: {{message}}", - "Failed to load AKS clusters": "Nepovedlo se načíst clustery AKS.", - "Failed to load Azure context": "Nepovedlo se načíst kontext Azure", - "Failed to load pipeline runs": "Nepodařilo se načíst spuštění kanálu.", - "Failed to load repositories": "Nepovedlo se načíst úložiště.", - "Failed to load subscriptions": "Nepovedlo se načíst předplatná.", - "Failed to merge cluster: {{message}}": "Sloučení clusteru se nezdařilo: {{message}}.", - "Failed to monitor deployment health": "Nepovedlo se monitorovat stav nasazení.", - "Failed to register cluster: {{message}}": "Nepodařilo se zaregistrovat cluster: {{message}}.", - "Failed to trigger deployment": "Nepovedlo se aktivovat nasazení.", - "Failed to update managed namespace": "Nepovedlo se aktualizovat spravovaný obor názvů.", - "failureThreshold": "failureThreshold", - "Features": "Funkce", - "Federated Credential": "Federované přihlašovací údaje", - "Filter repositories": "Filtrovat úložiště", - "Final status check failed: {{message}}": "Kontrola konečného stavu se nezdařila: {{message}}", - "Final status verification failed: {{message}}": "Ověření konečného stavu se nezdařilo: {{message}}.", - "for full network policy support.": "pro úplnou podporu zásad sítě.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Vygenerovány manifesty Kubernetes (obor názvů: {{namespace}})", - "GitHub authentication required to trigger deployment.": "K aktivaci nasazení se vyžaduje ověřování GitHubu.", - "GitHub Pipelines": "Kanály GitHubu", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Přejít na projekty", - "Guided configuration for ports, replicas, env, and resources": "Konfigurace s asistencí pro porty, repliky, prostředí a prostředky", + "Read only root filesystem": "Kořenový systém souborů jen pro čtení", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Připojí kořenový systém souborů kontejneru jako jen pro čtení, aby se zabránilo operacím zápisu. Tím se zvýší zabezpečení, protože se zabrání škodlivému kódu v upravování systémových souborů.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Připojí kořenový systém souborů kontejneru jako jen pro čtení, aby se zabránilo operacím zápisu.", + "Allow privilege escalation": "Povolit elevaci oprávnění", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Určuje, jestli proces může získat více oprávnění než nadřazený proces. Zakázání této možnosti (doporučeno) zabrání útokům typu elevace oprávnění.", + "Controls whether a process can gain more privileges than its parent process.": "Určuje, jestli proces může získat více oprávnění než nadřazený proces.", + "Enable pod anti-affinity": "Povolit ochranu proti spřažení podů", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Upřednostněte plánování podů na různých uzlech, aby se zlepšila dostupnost a odolnost proti chybám. To pomáhá zajistit, aby byly pody rozloženy napříč clusterem.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Upřednostněte plánování podů na různých uzlech, aby se zlepšila dostupnost a odolnost proti chybám.", + "Enable topology spread constraints": "Povolit omezení rozložení podle topologie", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Rovnoměrně rozděluje pody mezi uzly, zóny nebo jiné topologické domény, čímž zlepšuje rozložení úloh a dostupnost.", + "Distributes pods evenly across nodes to improve workload distribution.": "Distribuuje pody rovnoměrně mezi uzly, aby se zlepšila distribuce úloh.", + "Container image": "Image kontejneru", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Počet replik podů, které se mají spustit. Více replik zajišťuje lepší dostupnost a rozložení zátěže.", + "Continue": "Pokračovat", + "Configure Container Deployment": "Konfigurovat nasazení kontejneru", + "Networking": "Sítě", "Healthchecks": "Kontroly stavu", - "Healthy": "V pořádku", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Jak často (v sekundách) provádět test aktivity. Výchozí hodnota je 10 sekund.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Jak často (v sekundách) provádět test připravenosti. Výchozí hodnota je 10 sekund.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Jak často (v sekundách) provádět test spuštění. Výchozí hodnota je 10 sekund.", - "HPA scales pods based on CPU utilization.": "HPA škáluje pody na základě využití procesoru.", - "Identity Resource Group": "Skupina prostředků identity", - "Import AKS Projects": "Importovat projekty AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importujte existující spravované obory názvů a běžné obory názvů jako projekty. Obory názvů, které ještě nejsou projekty AKS Desktop, se převedou přidáním požadovaného popisku projektu.", - "Import Selected Projects": "Importovat vybrané projekty", - "Importing": "Probíhá import.", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Probíhá import {{current}} z(e) {{total}}: {{name}} z {{clusterName}}", - "in resource group": "ve skupině prostředků", + "Resource Limits": "Limity prostředků", + "Environment Variables": "Proměnné prostředí", + "Workload Identity": "", + "Advanced": "Rozšířené", "Information about {{label}}": "Informace na téma {{label}}", - "Information about CPU limit": "Informace o limitu procesoru", - "Information about CPU request": "Informace o požadavku na procesor", - "Information about memory limit": "Informace o limitu paměti", - "Information about memory request": "Informace o požadavku na paměť", - "Information about target CPU utilization": "Informace o cílovém využití procesoru", - "Ingress Policy": "Zásada příchozího přenosu dat", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Inicializování...", - "Initiating Azure login": "Zahajuje se přihlášení k Azure.", - "Initiating managed namespace creation": "Zahajuje se vytváření spravovaného oboru názvů.", - "Install Extension": "Nainstalovat rozšíření", - "Install GitHub App": "Nainstalovat aplikaci GitHub", - "Installing": "Instalace", - "Internal only": "Pouze interní", - "Invalid YAML": "Neplatný kód YAML", - "Invalid YAML: List item missing required field (kind)": "Neplatný YAML: V položce seznamu chybí povinné pole (kind).", - "Invalid YAML: List item missing required field (metadata.name)": "Neplatný YAML: V položce seznamu chybí povinné pole (metadata.name).", - "Invalid YAML: List resource must have an array \"items\" field": "Neplatný YAML: Prostředek seznamu musí mít pole items.", - "Invalid YAML: missing required field (kind)": "Neplatný YAML: Chybí povinné pole (kind).", - "Invalid YAML: missing required field (metadata.name)": "Neplatný YAML: Chybí povinné pole (metadata.name).", - "Issue {{number}}": "Problém {{number}}", - "Issues": "Problémy", - "just now": "právě teď", - "KEDA (Event-Driven Autoscaling)": "KEDA (automatické škálování řízené událostmi)", - "Keep Going": "Pokračujte", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Přidejte jeden nebo více manifestů Kubernetes. Nahrajte soubory pro naplnění editoru nebo je vložte či upravte přímo níže.", + "Upload files": "Nahrát soubory", + "Clear editor": "Vymazat historii editoru", + "Review & Deploy": "Zkontrolovat a nasadit", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Vygenerovány manifesty Kubernetes (obor názvů: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Prostředky, které se mají nasadit ({{count}} objekt)", + "Resources to be deployed ({{count}} object)_few": "", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Prostředky, které se mají nasadit ({{count}} objekt)", + "namespace: {{namespace}}": "obor názvů: {{namespace}}", + "Configure": "Konfigurovat", + "Deploying": "Nasazování", "Key": "Klíč", - "Kubernetes restarts the container if this check fails repeatedly.": "Pokud se tato kontrola opakovaně nezdaří, Kubernetes restartuje kontejner.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Hodnota", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "odebrat", + "Add variable": "Přidat proměnnou", + "Configure container health probes.": "Nakonfigurujte testy stavu kontejneru.", + "Manually configure settings": "Nakonfigurovat nastavení ručně", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Ve výchozím nastavení používají testy požadavek HTTP GET na kořenovou cestu s rozumnými výchozími hodnotami. Tuto možnost povolte, pokud chcete nastavení testů přizpůsobit.", + "Enable liveness probe": "Povolit test aktivity", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Pokud se tato kontrola opakovaně nezdaří, Kubernetes restartuje kontejner. Používá se k detekci zablokování nebo nereagujících kontejnerů a k zotavení z těchto stavů.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes dočasně zakáže test aktivity a připravenosti, dokud se spuštění úspěšně nedokončí.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes dočasně zakáže test aktivity a připravenosti, dokud se spuštění úspěšně nedokončí. Užitečné pro kontejnery, jejichž spuštění trvá dlouho.", - "Kubernetes Version": "Verze Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes nebude směrovat provoz do podu, dokud tato kontrola neproběhne úspěšně.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes nebude směrovat provoz do podu, dokud tato kontrola neproběhne úspěšně. Používá se k označení, kdy je kontejner připravený přijímat provoz.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "méně než minuta", - "Limits": "Limity", + "Kubernetes restarts the container if this check fails repeatedly.": "Pokud se tato kontrola opakovaně nezdaří, Kubernetes restartuje kontejner.", "Liveness path": "Cesta aktivity", - "Loading": "Načítání", - "Loading AKS clusters": "Načítání clusterů AKS", - "Loading Azure account information": "Načítají se informace o účtu Azure.", - "Loading Azure context...": "Načítá se kontext Azure...", - "Loading clusters": "Načítání clusterů", - "Loading configuration...": "Načítání konfigurace...", - "Loading deployments": "Načítají se nasazení", - "Loading metrics": "Načítají se metriky.", - "Loading scaling metrics from Prometheus": "Načítání metrik škálování ze služby Prometheus", - "Loading subscriptions": "Načítání předplatných", - "Loading...": "Načítání...", - "Location": "Umístění", - "Log out": "Odhlásit se", - "Logged in as": "Přihlášeno jako", - "Logging out": "Probíhá odhlašování", - "Login successful! Redirecting": "Přihlášení bylo úspěšné. Přesměrování", - "Login timeout. Please try again.": "Vypršel časový limit přihlášení. Zkuste to prosím znovu.", - "Managed Identity": "Spravovaná identita", - "managed namespaces only": "jenom spravované obory názvů", - "ManagedNamespacePreview feature registered successfully!": "Funkce ManagedNamespacePreview se úspěšně zaregistrovala.", - "Manual": "Ruční", - "Manual Deploy": "Ruční nasazení", - "Manually configure settings": "Nakonfigurovat nastavení ručně", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "HTTP cesta pro kontrolu aktivity (např. /healthz). Test provede požadavek HTTP GET na tuto cestu.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Počet sekund po spuštění kontejneru před zahájením testů aktivity", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Jak často (v sekundách) provádět test aktivity. Výchozí hodnota je 10 sekund.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Počet sekund po vypršení časového limitu testu. Výchozí hodnota je 1 sekunda.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Když test selže, Kubernetes to ještě několikrát zkusí, než to vzdá a restartuje kontejner.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimální počet po sobě jdoucích úspěchů, aby se test po selhání považoval za úspěšný. Výchozí hodnota je 1.", + "Enable readiness probe": "Povolit test připravenosti", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes nebude směrovat provoz do podu, dokud tato kontrola neproběhne úspěšně. Používá se k označení, kdy je kontejner připravený přijímat provoz.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes nebude směrovat provoz do podu, dokud tato kontrola neproběhne úspěšně.", + "Readiness path": "Cesta připravenosti", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Cesta HTTP pro kontrolu připravenosti (např. /ready). Test provede požadavek HTTP GET na tuto cestu.", + "Number of seconds after the container has started before readiness probes are initiated.": "Počet sekund po spuštění kontejneru před zahájením testů připravenosti", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Jak často (v sekundách) provádět test připravenosti. Výchozí hodnota je 10 sekund.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Když test selže, Kubernetes to ještě několikrát zkusí, než pod označí jako nepřipravený.", + "Enable startup probe": "Povolit test spuštění", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes dočasně zakáže test aktivity a připravenosti, dokud se spuštění úspěšně nedokončí. Užitečné pro kontejnery, jejichž spuštění trvá dlouho.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes dočasně zakáže test aktivity a připravenosti, dokud se spuštění úspěšně nedokončí.", + "Startup path": "Cesta při spuštění", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Cesta HTTP ke kontrole spuštění (např. /startup). Test provede požadavek HTTP GET na tuto cestu.", + "Number of seconds after the container has started before startup probes are initiated.": "Počet sekund po spuštění kontejneru před zahájením testů spuštění", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Jak často (v sekundách) provádět test spuštění. Výchozí hodnota je 10 sekund.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Když test selže, Kubernetes to ještě několikrát zkusí, než to vzdá. U testů spouštění to určuje, jak dlouho se má čekat před restartováním.", + "Enable Horizontal Pod Autoscaler": "Povolit automatické horizontální škálování podů", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automaticky škáluje počet podů na základě využití procesoru. HPA zvýší počet podů, když využití procesoru překročí cílovou hodnotu, a sníží ho, když bude pod touto hodnotou.", + "HPA scales pods based on CPU utilization.": "HPA škáluje pody na základě využití procesoru.", + "Min replicas": "Minimální počet replik", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Minimální počet replik podů, které HPA udržuje i při nízkém využití procesoru", "Max replicas": "Maximální počet replik", - "Maximum CPU allowed (1000m = 1 CPU core)": "Maximální povolené využití procesoru (1000m = 1 jádro procesoru)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximální povolená paměť (1024 MiB = 1 GiB)", - "Maximum Replicas": "Maximální počet replik", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Maximální počet replik podů, na který může HPA při vysokém využití procesoru vertikálně navýšit kapacitu.", + "Target CPU utilization": "Cílové využití procesoru", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Cílové průměrné procento využití procesoru napříč všemi pody. HPA vertikálně navýší kapacitu, když využití procesoru tuto hodnotu překročí, a vertikálně sníží kapacitu, když je nižší.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Zajistěte, aby minimální počet replik byl menší nebo roven maximálnímu počtu replik a aby cílové využití procesoru bylo mezi 10 % a 95 %.", + "Target port": "Cílový port", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Číslo portu, na kterém váš kontejner naslouchá. Je to port uvnitř kontejneru, kde běží vaše aplikace.", + "Service port": "Port služby", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Číslo portu zveřejněné službou Kubernetes. Provoz na tomto portu je přesměrován na cílový port.", + "Use custom service port": "Použít vlastní port služby", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Ve výchozím nastavení port služby odpovídá cílovému portu. Tuto možnost povolte, pokud chcete pro službu použít jiný port.", + "Service type": "Typ služby", + "Internal only": "Pouze interní", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Použijte ClusterIP. Nejvhodnější pro služby, které jsou dostupné jenom v rámci clusteru.", + "Enable public access": "Povolit veřejný přístup", + "Creates a LoadBalancer to expose the application to the internet.": "Vytvoří LoadBalancer pro zpřístupnění aplikace na internetu.", + "Enable resource requests and limits": "Povolit požadavky a limity prostředků", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Nastavením požadavků na procesor a paměť (garantované prostředky) a limitů (maximální prostředky) můžete řídit přidělování prostředků a zabránit tomu, aby kontejnery spotřebovávaly nadměrné množství prostředků clusteru.", + "CPU request": "Požadavek na CPU", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Minimální množství procesoru garantované kontejneru. Kubernetes naplánuje pod na uzlu, který má k dispozici alespoň toto množství procesoru.", + "millicores": "jednotky millicore", + "CPU limit": "Omezení CPU", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Maximální množství procesoru, které může kontejner použít. Při překročení se kontejner omezí.", + "Memory request": "Požadavek na paměť", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Minimální množství paměti garantované kontejneru. Kubernetes naplánuje pod na uzlu, který má k dispozici alespoň toto množství paměti.", "mebibytes": "mebibajty", - "Memory": "Paměť", "Memory limit": "Limit paměti", - "Memory Limits": "Limity paměti", - "Memory request": "Požadavek na paměť", - "Memory Requests": "Požadavky na paměť", - "Memory Resources": "Prostředky paměti", - "Memory Usage": "Využití paměti", - "Memory utilization": "Využití paměti", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Slučování clusteru {{clusterName}} (obory názvů: {{count}})", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Slučování clusteru {{clusterName}} (obory názvů: {{count}})", - "Metrics": "metriky", - "Metrics refreshed every 30 seconds": "Metriky se aktualizují každých 30 sekund.", - "Metrics Unavailable": "Metriky nejsou k dispozici", - "millicores": "jednotky millicore", - "Min replicas": "Minimální počet replik", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimální počet po sobě jdoucích úspěchů, aby se test po selhání považoval za úspěšný. Výchozí hodnota je 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimální zaručený procesor (1000m = 1 jádro procesoru)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimální zaručená paměť (1024 MiB = 1 GiB)", - "Minimum Replicas": "Minimální počet replik", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Chybí požadovaný kontext Azure. Ujistěte se prosím, že jste přihlášení a že je cluster přidružený k platnému předplatnému, skupině prostředků a tenantovi.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Připojí kořenový systém souborů kontejneru jako jen pro čtení, aby se zabránilo operacím zápisu.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Připojí kořenový systém souborů kontejneru jako jen pro čtení, aby se zabránilo operacím zápisu. Tím se zvýší zabezpečení, protože se zabrání škodlivému kódu v upravování systémových souborů.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Podpora více souborů (nasazení, služby, příchozí přenos dat atd.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Musí obsahovat jenom malá písmena, číslice a spojovníky a začínat a končit alfanumerickým znakem", - "Name": "Název", - "Namespace": "Obor názvů", - "Namespace '{{name}}' converted and imported as project": "Obor názvů {{name}} byl převeden a importován jako projekt", - "Namespace created successfully!": "Obor názvů se úspěšně vytvořil!", - "Namespace Created Successfully!": "Obor názvů se úspěšně vytvořil!", - "Namespace creation API succeeded, proceeding with user assignments": "Rozhraní API pro vytvoření oboru názvů bylo úspěšné. Pokračuje se přiřazováním uživatelů.", - "Namespace creation completed successfully! Adding user access": "Vytváření oboru názvů bylo úspěšně dokončeno. Přidává se přístup uživatele.", - "Namespace Creation Failed": "Nepovedlo se vytvořit obor názvů", - "Namespace creation failed: {{message}}": "Nepovedlo se vytvořit obor názvů: {{message}}.", - "Namespace creation initiated! Monitoring creation status": "Bylo zahájeno vytváření oboru názvů. Stav vytváření monitorování", - "Namespace Name": "Název oboru názvů", - "Namespace name is required": "Název oboru názvů je povinný", - "Namespace name must be 63 characters or fewer": "Název oboru názvů musí mít maximálně 63 znaků", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Název oboru názvů musí obsahovat jenom malá písmena, číslice a spojovníky a musí začínat a končit alfanumerickým znakem", - "Namespace status check failed: {{message}}": "Kontrola stavu oboru názvů se nezdařila: {{message}}.", - "Namespace status verification failed: {{message}}": "Ověření stavu oboru názvů se nezdařilo: {{message}}.", - "namespace: {{namespace}}": "obor názvů: {{namespace}}", - "Namespaces to convert:": "Obory názvů, které se mají převést:", - "Network I/O": "V/V sítě", - "Network In": "Síťové vstupy", - "Network Out": "Síťové výstupy", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Modul zásad sítě nelze po vytvoření clusteru změnit. Vytvořit nový cluster pomocí", - "Networking": "Sítě", - "Networking Policies": "Zásady sítě", - "New Project": "Nový projekt", - "Next": "Další", - "No": "Ne", - "No AKS clusters found in this subscription.": "V tomto předplatném se nenašly žádné clustery AKS.", - "No cluster is associated with this project.": "K tomuto projektu není přidružen žádný cluster.", - "No clusters found. Register a cluster first.": "Nenašly se žádné clustery. Nejprve zaregistrujte cluster.", - "No clusters in this project.": "V tomto projektu nejsou žádné clustery.", - "No clusters with Azure Entra ID authentication found for this subscription": "Pro toto předplatné se nenašly žádné clustery s ověřováním Azure Entra ID.", - "No data available": "K dispozici nejsou žádná data", - "No deployments found": "Nenašla se žádná nasazení", - "No Deployments Found": "Nenašla se žádná nasazení.", - "No deployments found in this namespace.": "V tomto oboru názvů se nenašla žádná nasazení.", - "No description provided": "Není zadaný žádný popis", - "No eligible clusters found in this subscription.": "V tomto předplatném se nenašly žádné oprávněné clustery.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Maximální velikost paměti, kterou může kontejner použít. Při překročení se kontejner ukončí (OOMKilled).", + "Container Image": "Image kontejneru", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Nasadit ze služby Azure Container Registry, Docker Hubu nebo GHCR", + "Auto-generated Deployment and Service manifests": "Automaticky generované manifesty nasazení a služby", + "Guided configuration for ports, replicas, env, and resources": "Konfigurace s asistencí pro porty, repliky, prostředí a prostředky", "No Kubernetes expertise required to get started": "Začít můžete i bez předchozích znalostí Kubernetes.", - "No options": "Žádné možnosti", - "No pipeline runs yet.": "Zatím nebyly spuštěny žádné kanály.", - "No pods found for deployment \"{{name}}\"": "Pro nasazení {{name}} nebyly nalezeny žádné pody.", - "No repositories found": "Nenašla se žádná úložiště", - "No repositories match your filter": "Vašemu filtru neodpovídají žádná úložiště.", - "No response time data available": "Nejsou k dispozici žádná data doby odezvy.", - "No scaling data available": "Nejsou k dispozici žádná data škálování.", - "No subscriptions found": "Nenašla se žádná předplatná", - "Not specified": "Neuvedeno", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Poznámka: U spravovaných oborů názvů AKS se správa Azure ARM odebere automaticky.", - "Number of Replicas": "Počet replik", - "Number of seconds after the container has started before liveness probes are initiated.": "Počet sekund po spuštění kontejneru před zahájením testů aktivity", - "Number of seconds after the container has started before readiness probes are initiated.": "Počet sekund po spuštění kontejneru před zahájením testů připravenosti", - "Number of seconds after the container has started before startup probes are initiated.": "Počet sekund po spuštění kontejneru před zahájením testů spuštění", - "Number of seconds after which the probe times out. Default is 1 second.": "Počet sekund po vypršení časového limitu testu. Výchozí hodnota je 1 sekunda.", - "OIDC trust for": "Vztah důvěryhodnosti OIDC pro", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Jakmile agent žádost o přijetí změn pro nasazení vytvoří, zkontrolujte vygenerované soubory a sloučením spusťte kanál nasazení.", - "Only clusters with Azure Entra ID authentication are shown.": "Zobrazují se jenom clustery s ověřováním Azure Entra ID.", - "Performing final status verification": "Provádí se konečné ověření stavu.", - "periodSeconds": "periodSeconds", - "Pipeline": "Kanál", - "Pipeline configured": "Kanál byl nakonfigurován.", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Dokončete prosím ověření v prohlížeči. Toto okno se po dokončení přihlášení automaticky přesměruje.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Pokud chcete pokračovat, zaregistrujte ho prosím.", - "Please review all the settings before creating your AKS project": "Před vytvořením projektu AKS si prosím projděte všechna nastavení.", - "Please select a deployment to view metrics": "Pokud si chcete zobrazit metriky, vyberte prosím nasazení.", - "Please select a subscription first": "Nejdříve prosím vyberte předplatné.", - "Please select at least one namespace to import": "Vyberte prosím aspoň jeden obor názvů, který se má importovat.", - "Please sign in to Azure to continue.": "Pokud chcete pokračovat, přihlaste se prosím k Azure.", - "Pod Details": "Podrobnosti podu", - "Pod Name": "Název podu", - "PR {{number}}": "Žádost o přijetí změn {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Upřednostněte plánování podů na různých uzlech, aby se zlepšila dostupnost a odolnost proti chybám.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Upřednostněte plánování podů na různých uzlech, aby se zlepšila dostupnost a odolnost proti chybám. To pomáhá zajistit, aby byly pody rozloženy napříč clusterem.", + "Bring your own Kubernetes manifests to deploy": "Použijte k nasazení vlastní manifesty Kubernetes", + "Use existing manifests for full control": "Použijte existující manifesty pro úplné řízení", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Podpora více souborů (nasazení, služby, příchozí přenos dat atd.)", "Preview and basic validation before apply": "Náhled a základní ověření před použitím", - "Preview Features": "Funkce Preview", - "Project '{{name}}' successfully imported": "Projekt {{name}} byl úspěšně importován", - "Project Basics": "Základy projektu", - "Project Created Successfully!": "Projekt se úspěšně vytvořil!", - "Project creation completed successfully!": "Vytváření projektu se úspěšně dokončilo.", - "Project Creation Failed": "Nepovedlo se vytvořit projekt", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Časový limit vytvoření projektu vypršel po 10 minutách. Zkontrolujte prosím, jestli se obor názvů vytvořil, a zkuste to znovu.", - "Project Description": "Popis projektu", - "Project Name": "Název projektu", - "Project name is available": "Název projektu je k dispozici.", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Název projektu musí obsahovat jenom malá písmena, číslice a spojovníky (bez mezer).", - "Project Status": "Stav projektu", - "Pull requests": "Žádosti o přijetí změn", + "Select Source": "Vybrat zdroj", + "Choose a source for your deployment (container image, repo, etc.).": "Zvolte zdroj pro nasazení (image kontejneru, úložiště atd.).", + "Deployment source": "Zdroj nasazení", + "Features": "Funkce", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Skupina prostředků identity", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Kontroluje se existující identita...", + "Creating managed identity...": "Vytváří se spravovaná identita...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Neplatný YAML: Chybí povinné pole (kind).", + "Invalid YAML: List resource must have an array \"items\" field": "Neplatný YAML: Prostředek seznamu musí mít pole items.", + "Invalid YAML: List item missing required field (kind)": "Neplatný YAML: V položce seznamu chybí povinné pole (kind).", + "Invalid YAML: List item missing required field (metadata.name)": "Neplatný YAML: V položce seznamu chybí povinné pole (metadata.name).", + "Invalid YAML: missing required field (metadata.name)": "Neplatný YAML: Chybí povinné pole (metadata.name).", + "Invalid YAML": "Neplatný kód YAML", + "Validation failed": "Ověření se nezdařilo", + "Failed to apply": "Použití selhalo", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Byl aplikován tento počet prostředků: {{applied}}, ale tento počet selhal: {{failed}}:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "Počet úspěšně aplikovaných prostředků: {{count}}", + "Applied {{count}} resource(s) successfully._few": "", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "Počet úspěšně aplikovaných prostředků: {{count}}", + "Failed to apply resources.": "Nepovedlo se aplikovat prostředky.", + "unnamed": "bez názvu", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Obsah", "Push agent config files": "Odeslat konfigurační soubory agenta", - "Re-deploy": "Znovu nasadit", - "Read only root filesystem": "Kořenový systém souborů jen pro čtení", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Oprávnění jen pro čtení k většině objektů v oboru názvů. Nemůžete zobrazit role, vazby rolí nebo tajné kódy.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Oprávnění ke čtení/zápisu k většině objektů v oboru názvů. Nelze zobrazit nebo upravit role nebo vazby rolí. Může mít přístup k tajným kódům a spouštět pody jako libovolný ServiceAccount v daném oboru názvů.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Oprávnění ke čtení/zápisu k většině prostředků v oboru názvů. Může vytvářet role a vazby rolí v rámci oboru názvů. Nemůže zapisovat do kvóty prostředků nebo samotného oboru názvů.", - "Readiness path": "Cesta připravenosti", - "Ready": "Připraveno", - "Refresh": "Aktualizovat", - "Refreshing": "Aktualizace", - "Register AKS Cluster": "Zaregistrovat cluster AKS", - "Register Cluster": "Zaregistrovat cluster", - "Register ManagedNamespacePreview Feature": "Zaregistrovat funkci ManagedNamespacePreview", - "Registering": "Probíhá registrace", - "Registering cluster": "Registruje se cluster", - "Regular": "Normální", - "Regular Kubernetes namespace": "Běžný obor názvů Kubernetes", - "remove": "odebrat", - "Remove assignee": "Odebrat pověřenou osobu", - "Reopen install page": "Znovu otevřít instalační stránku", - "Replica Bounds": "Meze počtu replik", - "Replicas": "Repliky", - "Request & error rate": "Žádost a chybovost", - "Request Rate": "Frekvence žádostí", - "Requests": "Žádosti", - "Required Permissions": "Požadovaná oprávnění", - "Resource Group": "Skupina prostředků", - "Resource group where the managed identity will be created": "Skupina prostředků, ve které se vytvoří spravovaná identita", - "Resource Limits": "Limity prostředků", - "Resource Usage": "Využití prostředků", - "Resources to be deployed ({{count}} object)_one": "Prostředky, které se mají nasadit ({{count}} objekt)", - "Resources to be deployed ({{count}} object)_other": "Prostředky, které se mají nasadit ({{count}} objekt)", - "Response Time": "Doba odezvy", - "Restarts": "Restarty", - "Retry": "Zkusit znovu", - "Review": "Kontrola", - "Review & Deploy": "Zkontrolovat a nasadit", - "Review & Merge": "Zkontrolovat a sloučit", - "Review and merge the setup PR to enable the Copilot agent.": "Zkontrolujte a slučte žádost o přijetí změn pro nastavení, aby bylo možné povolit agenta Copilota.", - "Review on GitHub": "Zkontrolovat na GitHubu", - "Review Project Configuration": "Zkontrolovat konfiguraci projektu", - "Role": "Role", - "Role Assignment": "Přiřazení role", - "Run as non root user": "Spustit bez oprávnění uživatele root", + "Workflows": "Pracovní postupy", + "Create setup workflow in .github/workflows/": "Vytvořit pracovní postup nastavení v .github/workflows/", + "Pull requests": "Žádosti o přijetí změn", + "Create deployment PRs": "Vytvořit žádosti o přijetí změn nasazení", + "Issues": "Problémy", + "Track agent progress": "Sledovat průběh agenta", "Run deployment workflows": "Spustit pracovní postupy nasazení", - "Save": "Uložit", - "Scaled down": "Vertikálně snížená kapacita", - "Scaling": "Škálování", - "Scaling Chart Unavailable": "Graf škálování není k dispozici", - "Scaling History (Last 24 Hours)": "Historie škálování (posledních 24 hodin)", - "Scaling Mode": "Režim měřítka", - "Scaling Overview": "Přehled škálování", - "Search clusters": "Hledat clustery", - "Search subscriptions": "Hledat předplatná", - "Select a cluster": "Vyberte cluster", - "Select a deployment to view metrics": "Pokud si chcete zobrazit metriky, vyberte nasazení.", - "Select a deployment to view scaling metrics": "Výběrem nasazení zobrazíte metriky škálování.", - "Select a subscription": "Vyberte předplatné", - "Select All": "Vybrat vše", - "Select an AKS cluster": "Vyberte cluster AKS", - "Select an Azure subscription": "Vyberte předplatné Azure", - "Select an option": "Vyberte některou z možností.", - "Select Deployment": "Vybrat nasazení", - "Select Namespaces to Import": "Vybrat obory názvů k importu", + "Connect to GitHub": "Připojit ke GitHubu", + "Connected to '{{username}}'.": "Připojeno k: {{username}}", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorizujte AKS Desktop k vytváření kanálů nasazení ve vašem úložišti.", + "Required Permissions": "Požadovaná oprávnění", + "Complete authorization on your browser screen": "Dokončete autorizaci na obrazovce prohlížeče", + "Connect": "Připojit", "Select repository": "Vybrat úložiště", - "Select Source": "Vybrat zdroj", - "Selected Cluster Details": "Podrobnosti vybraného clusteru", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "V kubeconfig chybí vybraný cluster. Než budete pokračovat, zaregistrujte ho.", - "Service port": "Port služby", - "Service type": "Typ služby", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Nastavením požadavků na procesor a paměť (garantované prostředky) a limitů (maximální prostředky) můžete řídit přidělování prostředků a zabránit tomu, aby kontejnery spotřebovávaly nadměrné množství prostředků clusteru.", - "Set quota limits to prevent overuse and maintain cluster stability": "Nastavte limity kvót, abyste zabránili nadměrnému využívání a zajistili stabilitu clusteru.", - "Set security, communication and access rules for incoming and outgoing traffic": "Nastavte pravidla zabezpečení, komunikace a přístupu pro příchozí a odchozí provoz", - "Set the desired number of pod replicas for this deployment": "Nastavit požadovaný počet replik podů pro toto nasazení", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Nastavte si kanál CI/CD, který automatizuje vaše nasazení a zjednoduší váš pracovní postup", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Nastavit a nakonfigurovat nový projekt v Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Nastavit agenta Copilota", - "Set up your pipeline": "Nastavte si kanál", - "Setting up Copilot agent...": "Nastavuje se agent Copilota...", - "Setup PR Created": "Žádost o přijetí změn pro nastavení se vytvořila", - "Setup PR reviewed and merged": "Žádost o přijetí změn pro nastavení se zkontrolovala a sloučila.", - "Sign in": "Přihlásit se", - "Sign in to GitHub": "Přihlásit se do GitHubu", - "Sign in to GitHub to view pipeline runs.": "Pokud chcete zobrazit spuštění kanálu, přihlaste se ke GitHubu.", - "Sign in with Azure": "Přihlášení pomocí Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Pro správu clusterů a prostředků AKS se přihlaste pomocí účtu Azure.", - "Source": "Zdroj", - "Starting project creation": "Spouští se vytváření projektu.", - "Startup path": "Cesta při spuštění", - "Status": "Stav", - "Subscription": "Předplatné", - "Successfully merged {{count}} cluster(s)_one": "Clustery (celkem {{count}}) byly úspěšně sloučeny", - "Successfully merged {{count}} cluster(s)_other": "Clustery (celkem {{count}}) byly úspěšně sloučeny", - "successThreshold": "successThreshold", - "Target CPU utilization": "Cílové využití procesoru", - "Target CPU Utilization (%)": "Cílové využití procesoru (%)", - "Target port": "Cílový port", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agent vytvořil žádost o přijetí změn pro nasazení. Zkontrolujte vygenerované soubory a sloučením spusťte kanál nasazení.", - "The agent is creating the setup PR to enable the Copilot agent.": "Agent vytváří žádost o přijetí změn pro nastavení, aby bylo možné povolit agenta Copilota.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Dokončete instalaci v prohlížeči. Tato aktualizace se provede automaticky, jakmile se aplikace nainstaluje v úložišti {{repoName}}.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Pokud chcete pokračovat, musí být v úložišti {{repoName}} nainstalována aplikace GitHub pro AKS Desktop.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "K vytvoření spravovaných oborů názvů se vyžaduje rozšíření aks-preview. Nainstalujte ho prosím, aby bylo možné pokračovat.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Agenta Copilota pro psaní kódu analyzuje vaše úložiště a generuje žádost o přijetí změn nasazení se souborem Dockerfile, manifesty Kubernetes a pracovním postupem GitHub Actions.", - "The following addons can be enabled on this cluster:": "V tomto clusteru je možné povolit následující doplňky:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Aby se váš kanál GitHub Actions mohl ověřovat vůči clusteru AKS, budou vytvořeny následující prostředky Azure:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Následující obory názvů se převedou na projekty AKS Desktop přidáním těchto popisků:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "HTTP cesta pro kontrolu aktivity (např. /healthz). Test provede požadavek HTTP GET na tuto cestu.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Cesta HTTP pro kontrolu připravenosti (např. /ready). Test provede požadavek HTTP GET na tuto cestu.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Cesta HTTP ke kontrole spuštění (např. /startup). Test provede požadavek HTTP GET na tuto cestu.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Funkce ManagedNamespacePreview musí být zaregistrována, aby bylo možné vytvářet spravované obory názvů.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Maximální množství procesoru, které může kontejner použít. Při překročení se kontejner omezí.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Maximální velikost paměti, kterou může kontejner použít. Při překročení se kontejner ukončí (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Maximální počet replik podů, na který může HPA při vysokém využití procesoru vertikálně navýšit kapacitu.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Minimální množství procesoru garantované kontejneru. Kubernetes naplánuje pod na uzlu, který má k dispozici alespoň toto množství procesoru.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Minimální množství paměti garantované kontejneru. Kubernetes naplánuje pod na uzlu, který má k dispozici alespoň toto množství paměti.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Minimální počet replik podů, které HPA udržuje i při nízkém využití procesoru", - "The namespace will be created on the selected cluster and set up as a project": "Obor názvů se vytvoří ve vybraném clusteru a nastaví se jako projekt", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Počet replik podů, které se mají spustit. Více replik zajišťuje lepší dostupnost a rozložení zátěže.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Operace může stále běžet na GitHubu. Nejnovější stav najdete na výše uvedeném odkazu.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Číslo portu zveřejněné službou Kubernetes. Provoz na tomto portu je přesměrován na cílový port.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Číslo portu, na kterém váš kontejner naslouchá. Je to port uvnitř kontejneru, kde běží vaše aplikace.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Cílové průměrné procento využití procesoru napříč všemi pody. HPA vertikálně navýší kapacitu, když využití procesoru tuto hodnotu překročí, a vertikálně sníží kapacitu, když je nižší.", - "There are no deployments in this project namespace yet.": "V tomto oboru názvů projektu zatím nejsou žádná nasazení.", + "Reopen install page": "Znovu otevřít instalační stránku", + "Install GitHub App": "Nainstalovat aplikaci GitHub", + "Checking...": "Kontroluje se...", + "Connecting to GitHub...": "Připojování ke GitHubu...", + "Connect GitHub": "Připojit GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Připojeno", + "Sign in to GitHub": "Přihlásit se do GitHubu", + "Failed to load repositories": "Nepovedlo se načíst úložiště.", + "Filter repositories": "Filtrovat úložiště", + "No repositories match your filter": "Vašemu filtru neodpovídají žádná úložiště.", + "No repositories found": "Nenašla se žádná úložiště", + "less than a minute": "méně než minuta", + "{{count}} min_one": "{{count}} min", + "{{count}} min_few": "", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}} min", + "Up next": "Následuje", + "PR {{number}}": "Žádost o přijetí změn {{number}}", + "Checking merge status...": "Kontroluje se stav sloučení...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Trvá to déle, než jsme čekali. Nejnovější stav najdete v žádosti o přijetí změn na GitHubu.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Může se jednat o problém s oprávněními. Zkontrolujte oprávnění aplikace GitHub a zkuste to znovu.", "This PR was closed without merging. You may need to restart the process.": "Tato žádost o přijetí změn byla uzavřena bez sloučení. Možná budete muset proces restartovat.", + "Review on GitHub": "Zkontrolovat na GitHubu", + "Agent is working": "Agent pracuje.", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Agenta Copilota pro psaní kódu analyzuje vaše úložiště a generuje žádost o přijetí změn nasazení se souborem Dockerfile, manifesty Kubernetes a pracovním postupem GitHub Actions.", + "Issue {{number}}": "Problém {{number}}", + "Waiting for agent workflow to start...": "Čeká se na spuštění pracovního postupu agenta...", "This typically takes 10–25 minutes.": "Obvykle to trvá 10–25 minut.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Celkový počet podů", - "Track agent progress": "Sledovat průběh agenta", - "Trigger": "Aktivační událost", - "Trigger Copilot Agent": "Aktivovat agenta Copilota", - "Triggering...": "Spouštění...", + "Pipeline configured": "Kanál byl nakonfigurován.", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Kanál CI/CD pro {{repoFullName}} je připravený. Aktivujte nasazení z karty Nasadit.", + "Setup PR reviewed and merged": "Žádost o přijetí změn pro nastavení se zkontrolovala a sloučila.", + "Copilot agent reviewed your repo and generated deployment PR": "Agent Copilota zkontroloval vaše úložiště a vygeneroval žádost o přijetí změn pro nasazení.", + "Deployment PR reviewed and merged": "Žádost o přijetí změn nasazení se zkontrolovala a sloučila.", + "View deployment": "Zobrazit nasazení", + "You can collapse this panel. Progress is saved and will resume when you return.": "Tento panel můžete sbalit. Průběh se uloží a po návratu se obnoví.", + "Creating setup PR...": "Vytváří se žádost o přijetí změn pro nastavení...", + "The agent is creating the setup PR to enable the Copilot agent.": "Agent vytváří žádost o přijetí změn pro nastavení, aby bylo možné povolit agenta Copilota.", + "Setup PR Created": "Žádost o přijetí změn pro nastavení se vytvořila", + "Review and merge the setup PR to enable the Copilot agent.": "Zkontrolujte a slučte žádost o přijetí změn pro nastavení, aby bylo možné povolit agenta Copilota.", + "Setting up Copilot agent...": "Nastavuje se agent Copilota...", + "Creating the trigger issue for the Copilot coding agent.": "Vytváří se problém s triggerem pro agenta Copilota pro psaní kódu.", + "Deployment PR Ready": "Žádost o přijetí změn nasazení je připravená", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agent vytvořil žádost o přijetí změn pro nasazení. Zkontrolujte vygenerované soubory a sloučením spusťte kanál nasazení.", + "Copilot agent": "Agent Copilota", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Po sloučení agent Copilota analyzuje vaše úložiště a vytvoří žádost o přijetí změn pro nasazení.", + "Deployment PR": "Žádost o přijetí změn pro nasazení", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Jakmile agent žádost o přijetí změn pro nasazení vytvoří, zkontrolujte vygenerované soubory a sloučením spusťte kanál nasazení.", + "Connect Source": "Připojit zdroj", + "Set up Copilot Agent": "Nastavit agenta Copilota", + "Review & Merge": "Zkontrolovat a sloučit", + "Collapse panel": "Sbalit panel", + "Keep Going": "Pokračujte", + "Discard": "Zahodit", + "Canceling will discard your pipeline progress. Are you sure?": "Zrušením se zahodí průběh kanálu. Jste si jistí?", + "Ensuring resource group exists...": "Ověřuje se, že skupina prostředků existuje...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Konfigurují se federované přihlašovací údaje...", + "Workload identity configured": "Identita úlohy je nakonfigurovaná.", + "Configure Workload Identity": "Nakonfigurovat identitu úlohy", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Aby se váš kanál GitHub Actions mohl ověřovat vůči clusteru AKS, budou vytvořeny následující prostředky Azure:", + "Managed Identity": "Spravovaná identita", + "in resource group": "ve skupině prostředků", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Federované přihlašovací údaje", + "OIDC trust for": "Vztah důvěryhodnosti OIDC pro", + "branch": "větev", + "Resource group where the managed identity will be created": "Skupina prostředků, ve které se vytvoří spravovaná identita", + "Workload identity configured successfully.": "Identita úlohy byla úspěšně nakonfigurována.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Může se jednat o problém s oprávněními. Zkontrolujte oprávnění aplikace GitHub a zkuste to znovu.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Operace může stále běžet na GitHubu. Nejnovější stav najdete na výše uvedeném odkazu.", "Try again, or check GitHub for details.": "Zkuste to znovu nebo vyhledejte podrobnosti na GitHubu.", - "Type": "Typ", + "Initializing...": "Inicializování...", + "Checking repository readiness...": "Kontroluje se připravenost úložiště...", + "Loading configuration...": "Načítání konfigurace...", "Unknown error": "Neznámá chyba", - "unnamed": "bez názvu", - "Up next": "Následuje", - "Update": "Aktualizovat", - "Updating": "Aktualizování", - "Updating local settings": "Aktualizují se místní nastavení", - "Upload files": "Nahrát soubory", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Použijte ClusterIP. Nejvhodnější pro služby, které jsou dostupné jenom v rámci clusteru.", - "Use custom service port": "Použít vlastní port služby", - "Use existing manifests for full control": "Použijte existující manifesty pro úplné řízení", - "User assignment completed with errors": "Přiřazení uživatele se dokončilo s chybami.", - "Validation failed": "Ověření se nezdařilo", - "Value": "Hodnota", - "View deployment": "Zobrazit nasazení", - "View on GitHub": "Zobrazit na GitHubu", - "View run on GitHub": "Zobrazit spuštění na GitHubu", - "View workflow run": "Zobrazit spuštění pracovního postupu", - "VPA (Vertical Pod Autoscaler)": "VPA (automatické vertikální škálování podů)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Čeká se na spuštění pracovního postupu agenta...", - "Waiting for browser authorization...": "Čeká se na autorizaci prohlížeče...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Čeká se na dokončení přihlášení... (zbývající počet minut: {{minutes}})", - "Waiting for namespace to be created": "Čeká se na vytvoření oboru názvů.", - "Waiting for namespace to propagate": "Čeká se na rozšíření oboru názvů.", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Varování: Tato akce je nevratná. Všechny prostředky v těchto oborech názvů se trvale odstraní.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Když test selže, Kubernetes to ještě několikrát zkusí, než to vzdá a restartuje kontejner.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Když test selže, Kubernetes to ještě několikrát zkusí, než to vzdá. U testů spouštění to určuje, jak dlouho se má čekat před restartováním.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Když test selže, Kubernetes to ještě několikrát zkusí, než pod označí jako nepřipravený.", + "Trigger Copilot Agent": "Aktivovat agenta Copilota", + "Create Setup PR": "Vytvořit žádost o přijetí změn pro nastavení", + "Failed to fetch deployment status": "Nepovedlo se načíst stav nasazení.", + "Failed to fetch pod status": "Nepovedlo se načíst stav podu.", + "Failed to fetch service status": "Nepovedlo se načíst stav služby.", + "Failed to monitor deployment health": "Nepovedlo se monitorovat stav nasazení.", + "Convert Namespaces to AKS Projects": "Převést obory názvů na projekty AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Následující obory názvů se převedou na projekty AKS Desktop přidáním těchto popisků:", + "managed namespaces only": "jenom spravované obory názvů", + "Namespaces to convert:": "Obory názvů, které se mají převést:", + "Already AKS projects (will import directly):": "Už jsou projekty AKS (budou se importovat přímo):", + "Converting": "Probíhá převod", + "Confirm & Import": "Potvrdit a importovat", + "Please select at least one namespace to import": "Vyberte prosím aspoň jeden obor názvů, který se má importovat.", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Před importem běžných oborů názvů musí být cluster {{clusterName}} zaregistrován. Nejprve importujte spravovaný obor názvů z tohoto clusteru.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Slučování clusteru {{clusterName}} (obory názvů: {{count}})", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_few": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Slučování clusteru {{clusterName}} (obory názvů: {{count}})", + "Failed to merge cluster: {{message}}": "Sloučení clusteru se nezdařilo: {{message}}.", + "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} se převádí na projekt AKS (může to chvíli trvat)...", + "Failed to convert namespace: {{message}}": "Nepovedlo se převést obor názvů: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Probíhá import {{current}} z(e) {{total}}: {{name}} z {{clusterName}}", + "Project '{{name}}' successfully imported": "Projekt {{name}} byl úspěšně importován", + "Namespace '{{name}}' converted and imported as project": "Obor názvů {{name}} byl převeden a importován jako projekt", + "Successfully merged {{count}} cluster(s)_one": "Clustery (celkem {{count}}) byly úspěšně sloučeny", + "Successfully merged {{count}} cluster(s)_few": "", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "Clustery (celkem {{count}}) byly úspěšně sloučeny", "with {{count}} project(s)_one": "s(e) {{count}} projekty", + "with {{count}} project(s)_few": "", + "with {{count}} project(s)_many": "", "with {{count}} project(s)_other": "s(e) {{count}} projekty", - "with the following parameters:": "s následujícími parametry:", - "Wizard steps": "Postup průvodce", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Odeslání pracovního postupu se úspěšně aktivovalo. Průběh zkontrolujte v GitHub Actions.", - "workflow on": "pracovní postup na", - "Workflows": "Pracovní postupy", - "Workload identity configured": "Identita úlohy je nakonfigurovaná.", - "Workload identity configured successfully.": "Identita úlohy byla úspěšně nakonfigurována.", - "Workloads": "Sady funkcí", + "{{count}} failed._one": "Neúspěšné: {{count}}.", + "{{count}} failed._few": "", + "{{count}} failed._many": "", + "{{count}} failed._other": "Neúspěšné: {{count}}.", + "Failed to import any projects. See details below.": "Nepovedlo se naimportovat žádné projekty. Podrobnosti najdete níže.", + "Import AKS Projects": "Importovat projekty AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importujte existující spravované obory názvů a běžné obory názvů jako projekty. Obory názvů, které ještě nejsou projekty AKS Desktop, se převedou přidáním požadovaného popisku projektu.", + "Select Namespaces to Import": "Vybrat obory názvů k importu", + "{{count}} selected_one": "Vybráno: {{count}}", + "{{count}} selected_few": "", + "{{count}} selected_many": "", + "{{count}} selected_other": "Vybráno: {{count}}", + "Select All": "Vybrat vše", + "Deselect All": "Zrušit výběr", + "AKS Managed": "Spravované AKS", + "Regular": "Normální", + "AKS Project?": "Projekt AKS?", "Yes": "Ano", - "You can collapse this panel. Progress is saved and will resume when you return.": "Tento panel můžete sbalit. Průběh se uloží a po návratu se obnoví.", - "You need to be logged in to Azure to register AKS clusters.": "Abyste mohli registrovat clustery AKS, musíte být přihlášení k Azure.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Váš projekt AKS {{projectName}} byl vytvořen a je připraven k použití.", - "Your project \"{{projectName}}\" is ready to use.": "Váš projekt {{projectName}} je připravený k použití." + "No": "Ne", + "Importing": "Probíhá import.", + "Import Selected Projects": "Importovat vybrané projekty", + "Failed to fetch managed namespaces": "Nepovedlo se načíst spravované obory názvů.", + "Failed to fetch managed namespace details": "Nepovedlo se načíst podrobnosti o spravovaném oboru názvů.", + "Failed to update managed namespace": "Nepovedlo se aktualizovat spravovaný obor názvů.", + "Updating": "Aktualizování", + "Update": "Aktualizovat", + "AKS desktop logo": "Logo AKS Desktop", + "No Deployments Found": "Nenašla se žádná nasazení.", + "There are no deployments in this project namespace yet.": "V tomto oboru názvů projektu zatím nejsou žádná nasazení.", + "Deploy an application to view logs.": "Nasaďte aplikaci, abyste si mohli zobrazit protokoly.", + "Metrics": "metriky", + "CPU Usage": "Využití procesoru", + "Memory Usage": "Využití paměti", + "Request Rate": "Frekvence žádostí", + "Error Rate": "Chybovost", + "Metrics refreshed every 30 seconds": "Metriky se aktualizují každých 30 sekund.", + "Select a deployment to view metrics": "Pokud si chcete zobrazit metriky, vyberte nasazení.", + "Metrics Unavailable": "Metriky nejsou k dispozici", + "Application Metrics": "Metriky aplikací", + "Request & error rate": "Žádost a chybovost", + "No data available": "K dispozici nejsou žádná data", + "Response Time": "Doba odezvy", + "Memory utilization": "Využití paměti", + "Network I/O": "V/V sítě", + "Deploy an application to start viewing metrics.": "Pokud chcete začít zobrazovat metriky, nasaďte aplikaci.", + "Please select a deployment to view metrics": "Pokud si chcete zobrazit metriky, vyberte prosím nasazení.", + "Project Status": "Stav projektu", + "Total Pods": "Celkový počet podů", + "Application Health": "Stav aplikace", + "Loading metrics": "Načítají se metriky.", + "Resource Usage": "Využití prostředků", + "Avg Response Time": "Průměrná doba odezvy", + "No response time data available": "Nejsou k dispozici žádná data doby odezvy.", + "Absolute usage": "Absolutní využití", + "Network In": "Síťové vstupy", + "Network Out": "Síťové výstupy", + "Pod Details": "Podrobnosti podu", + "Pod Name": "Název podu", + "Restarts": "Restarty", + "No pods found for deployment \"{{name}}\"": "Pro nasazení {{name}} nebyly nalezeny žádné pody.", + "Preview Features": "Funkce Preview", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Povolte nebo zakažte funkce, které jsou stále ve vývoji. Funkce Preview se můžou v budoucích verzích změnit nebo odebrat.", + "GitHub Pipelines": "Kanály GitHubu", + "Enable GitHub-based deployment pipelines for AKS projects.": "Povolte kanály nasazení založené na GitHubu pro projekty AKS.", + "Loading scaling metrics from Prometheus": "Načítání metrik škálování ze služby Prometheus", + "Scaling Chart Unavailable": "Graf škálování není k dispozici", + "No scaling data available": "Nejsou k dispozici žádná data škálování.", + "Edit HPA Configuration": "Upravit konfiguraci HPA", + "Edit Manual Scaling Configuration": "Upravit konfiguraci ručního škálování", + "Minimum Replicas": "Minimální počet replik", + "Maximum Replicas": "Maximální počet replik", + "Target CPU Utilization (%)": "Cílové využití procesoru (%)", + "Number of Replicas": "Počet replik", + "Set the desired number of pod replicas for this deployment": "Nastavit požadovaný počet replik podů pro toto nasazení", + "Save": "Uložit", + "Scaling Mode": "Režim měřítka", + "Current Replicas": "Aktuální repliky", + "Desired Replicas": "Požadované repliky", + "Configured Replicas": "Nakonfigurované repliky", + "Replica Bounds": "Meze počtu replik", + "Available Replicas": "Dostupné repliky", + "CPU Usage / Target": "Využití procesoru / cíl", + "Scaling": "Škálování", + "Select a deployment to view scaling metrics": "Výběrem nasazení zobrazíte metriky škálování.", + "Scaling Overview": "Přehled škálování", + "Edit Configuration": "Upravit konfiguraci", + "Scaling History (Last 24 Hours)": "Historie škálování (posledních 24 hodin)", + "Copied!": "Zkopírováno!", + "Copy": "Kopírovat", + "Copy to clipboard": "Zkopírovat do schránky", + "No deployments found": "Nenašla se žádná nasazení", + "Select Deployment": "Vybrat nasazení", + "Loading deployments": "Načítají se nasazení", + "No cluster is associated with this project.": "K tomuto projektu není přidružen žádný cluster.", + "Please sign in to Azure to continue.": "Pokud chcete pokračovat, přihlaste se prosím k Azure.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Chybí požadovaný kontext Azure. Ujistěte se prosím, že jste přihlášení a že je cluster přidružený k platnému předplatnému, skupině prostředků a tenantovi.", + "Failed to load Azure context": "Nepovedlo se načíst kontext Azure", + "just now": "právě teď", + "{{seconds}}s ago": "Před {{seconds}} s", + "{{minutes}} min ago": "před {{minutes}} min.", + "{{hours}}h ago": "Před {{hours}} h", + "{{days}}d ago": "Před {{days}} d", + "{{weeks}}w ago": "před {{weeks}} týd." } diff --git a/plugins/aks-desktop/locales/de/translation.json b/plugins/aks-desktop/locales/de/translation.json index 321bcd5b9..fd6ccef86 100644 --- a/plugins/aks-desktop/locales/de/translation.json +++ b/plugins/aks-desktop/locales/de/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "„AKS-Clusterbenutzerrolle“ im Bereich der Ressourcengruppe", - "(already enabled)": "(bereits aktiviert)", + "Failed to load subscriptions": "Fehler beim Laden von Abonnements.", + "Failed to load AKS clusters": "Fehler beim Laden von AKS-Clustern", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Der Cluster „{{cluster}}“ wurde erfolgreich in kubeconfig zusammengeführt", + "Failed to register cluster: {{message}}": "Fehler beim Registrieren des Clusters: {{message}}", + "Register AKS Cluster": "AKS-Cluster registrieren", + "Checking authentication status": "Der Authentifizierungsstatus wird überprüft", + "You need to be logged in to Azure to register AKS clusters.": "Sie müssen bei Azure angemeldet sein, um AKS-Cluster zu registrieren.", + "Subscription": "Abonnement", + "Select an Azure subscription": "Wählen Sie ein Azure-Abonnement aus.", + "Loading subscriptions": "Abonnements werden geladen", + "Loading AKS clusters": "Laden von AKS-Clustern", + "No AKS clusters found in this subscription.": "In diesem Abonnement wurden keine AKS-Cluster gefunden.", + "AKS Cluster": "AKS-Cluster", + "Select an AKS cluster": "AKS-Cluster auswählen", + "Selected Cluster Details": "Details zum ausgewählten Cluster", + "Name": "Name", + "Resource Group": "Ressourcengruppe", + "Location": "Speicherort", + "Kubernetes Version": "Kubernetes-Version", + "Done": "Fertig", + "Cancel": "Abbrechen", + "Registering": "Wird registriert", + "Register Cluster": "Cluster registrieren", + "Initiating Azure login": "Die Azure-Anmeldung wird initiiert", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Schließen Sie die Authentifizierung in Ihrem Browser ab. Dieses Fenster wird automatisch umgeleitet, sobald die Anmeldung abgeschlossen ist.", + "Login successful! Redirecting": "Die Anmeldung war erfolgreich! Umleitung", + "Login timeout. Please try again.": "Anmeldetimeout. Versuchen Sie es bitte noch mal.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Es wird auf den Abschluss der Anmeldung gewartet... ({{minutes}} Minuten verbleibend)", + "Failed to initiate login: {{message}}": "Fehler beim Initiieren der Anmeldung: {{message}}", + "Azure Authentication": "Azure-Authentifizierung", + "Sign in with your Azure account to manage AKS clusters and resources": "Melden Sie sich mit Ihrem Azure-Konto an, um AKS-Cluster und -Ressourcen zu verwalten", + "Sign in with Azure": "Mit Azure anmelden", + "Loading Azure account information": "Laden von Azure-Kontoinformationen", + "Back": "Zurück", + "Azure Account": "Azure-Konto", + "Logged in as": "Angemeldet als", + "Add Cluster from Azure": "Einen Cluster aus Azure hinzufügen", + "Logging out": "Abmeldung wird durchgeführt", + "Log out": "Abmelden", + "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview-Anforderungen nicht erfüllt", + "Dismiss": "Schließen", + "Configure Pipeline": "Pipeline konfigurieren", + "Loading Azure context...": "Azure-Kontext wird geladen\u00a0...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Schreibgeschützter Zugriff auf die meisten Objekte in einem Namespace. Kann Rollen, Rollenbindungen oder Geheimnisse nicht anzeigen.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Lese-/Schreibzugriff auf die meisten Objekte in einem Namespace. Kann Rollen oder Rollenbindungen nicht anzeigen oder ändern. Kann auf Geheimnisse zugreifen und Pods als beliebiges ServiceAccount im Namespace ausführen.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Lese-/Schreibzugriff auf die meisten Ressourcen in einem Namespace. Kann Rollen und Rollenbindungen innerhalb des Namespace erstellen. Kann nicht in das Ressourcenkontingent oder den Namespace selbst schreiben.", + "Access": "Zugriff", + "Assign permissions to users who need access to your namespace": "Weisen Sie Benutzern, die Zugriff auf Ihren Namespace benötigen, Berechtigungen zu", + "Assignee": "Zugewiesene Person", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Rolle", + "Remove assignee": "Zugewiesene Person entfernen", + "Add assignee": "Zugewiesene Person hinzufügen", + "Only clusters with Azure Entra ID authentication are shown.": "Es werden nur Cluster mit Azure Entra ID-Authentifizierung angezeigt.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} Cluster ausgeblendet – keine Azure Entra-ID", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} Cluster ausgeblendet – keine Azure Entra-ID", + "No eligible clusters found in this subscription.": "In diesem Abonnement wurden keine geeigneten Cluster gefunden.", "{{count}} eligible cluster(s) found._one": "{{count}} geeignete Cluster gefunden.", "{{count}} eligible cluster(s) found._other": "{{count}} geeignete Cluster gefunden.", - "{{count}} failed._one": "{{count}} fehlgeschlagen.", - "{{count}} failed._other": "{{count}} fehlgeschlagen.", - "{{count}} min_one": "{{count}} Min.", - "{{count}} min_other": "{{count}} Min.", - "{{count}} selected_one": "{{count}} ausgewählt", - "{{count}} selected_other": "{{count}} ausgewählt", - "{{days}}d ago": "Vor {{days}} Tag(en)", - "{{hours}}h ago": "Vor {{hours}} Stunde(n)", - "{{minutes}} min ago": "Vor {{minutes}} Min.", - "{{seconds}}s ago": "vor {{seconds}} Sekunde(n)", - "{{weeks}}w ago": "Vor {{weeks}} Woche(n)", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Es muss ein Cluster ausgewählt werden.", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Auf dem Cluster wird ein neuer Namespace mit angewendeten Projektlabels erstellt. Er erscheint sofort in Ihrer Projektliste.", - "Absolute usage": "Absoluter Verbrauch", - "Access": "Zugriff", - "Access Control ({{count}} assignee)_one": "Access Control ({{count}} zugewiesene Person)", - "Access Control ({{count}} assignee)_other": "Zugriffssteuerung ({{count}} zugewiesene Personen)", - "Actions": "Aktionen", - "Add assignee": "Zugewiesene Person hinzufügen", - "Add Cluster from Azure": "Einen Cluster aus Azure hinzufügen", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Fügen Sie ein oder mehrere Kubernetes-Manifeste hinzu. Laden Sie Dateien hoch, um den Editor aufzufüllen, oder fügen Sie ihn direkt unten ein.", - "Add variable": "Variable hinzufügen", - "Advanced": "Erweitert", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Nach dem Zusammenführen analysiert der Copilot-Agent Ihr Repository und erstellt einen Bereitstellungs-PR.", - "Agent is working": "Agent arbeitet", - "AKS Cluster": "AKS-Cluster", - "AKS desktop logo": "AKS-Desktoplogo", - "AKS Managed": "von AKS verwaltet", - "AKS Preview Extension installed successfully!": "Die AKS-Vorschauerweiterung wurde erfolgreich installiert!", - "AKS Preview Extension Required": "AKS-Vorschauerweiterung erforderlich", - "AKS Project?": "AKS-Projekt?", - "All selected addons have been enabled successfully.": "Alle ausgewählten Add-Ons wurden erfolgreich aktiviert.", - "All verifications completed successfully!": "Alle Überprüfungen wurden erfolgreich abgeschlossen!", - "Allow all traffic": "Gesamten Datenverkehr zulassen", - "Allow privilege escalation": "Rechteausweitung zulassen", - "Allow traffic within same namespace": "Netzwerkdatenverkehr innerhalb desselben Namespace zulassen", - "Already AKS projects (will import directly):": "Bereits AKS-Projekte (werden direkt importiert):", - "Also delete the namespaces (this will remove all resources within them)": "Löschen Sie auch die Namespaces (dadurch werden alle darin enthaltenen Ressourcen entfernt)", - "Another project already exists with same name. Please choose a different name.": "Ein anderes Projekt mit diesem Namen ist bereits vorhanden. Wählen Sie einen anderen Namen aus.", - "Application Health": "Anwendungsintegrität", - "Application Metrics": "Anwendungsmetriken", - "Application name": "Anwendungsname", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} Ressource(n) wurde(n) angewendet, aber {{failed}} ist/sind fehlgeschlagen:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} Ressource(n) erfolgreich angewendet.", - "Applied {{count}} resource(s) successfully._other": "{{count}} Ressource(n) erfolgreich angewendet.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Möchten Sie das Projekt „{{projectId}}“ löschen?", - "Assign permissions to users who need access to your namespace": "Weisen Sie Benutzern, die Zugriff auf Ihren Namespace benötigen, Berechtigungen zu", - "Assignee": "Zugewiesene Person", - "Assigning AKS Cluster User Role...": "AKS-Clusterbenutzerrolle wird zugewiesen...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorisieren Sie AKS Desktop, um Bereitstellungspipelines in Ihrem Repository zu erstellen.", - "Auto-generated Deployment and Service manifests": "Automatisch generierte Bereitstellungs- und Dienstmanifeste", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Skaliert automatisch die Anzahl der Pods basierend auf der CPU-Auslastung. HPA erhöht die Pod-Anzahl, wenn die CPU-Auslastung den Zielwert überschreitet, und verringert die Pod-Anzahl, wenn die CPU-Auslastung darunter liegt.", - "Available Replicas": "Verfügbare Replikate", - "Avg Response Time": "Durchschnittliche Antwortzeit", - "Azure Account": "Azure-Konto", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Azure-Authentifizierung", - "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview-Anforderungen nicht erfüllt", - "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor-Metriken (verwalteter Prometheus)", - "Back": "Zurück", - "Basics": "Basiseinstellungen", - "branch": "Branch", - "Bring your own Kubernetes manifests to deploy": "Eigene Kubernetes-Manifeste zur Bereitstellung verwenden", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Standardmäßig verwenden Tests HTTP GET auf dem Stammpfad mit sinnvollen Standardeinstellungen. Aktivieren Sie diese Option, um die Testeinstellungen anzupassen.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Standardmäßig entspricht der Dienstport dem Zielport. Aktivieren Sie diese Option, um einen anderen Port für den Dienst zu verwenden.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Standardmäßig werden dadurch die von Azure verwalteten Namespace- und Projektbezeichnungen aus den folgenden Namespaces entfernt:", - "Cancel": "Abbrechen", - "Canceling will discard your pipeline progress. Are you sure?": "Wenn Sie den Vorgang abbrechen, wird der Pipelinestatus verworfen. Sind Sie sicher?", - "Cancelled deletion of project {{ projectId }}.": "Das Löschen des Projekts {{ projectId }} wurde abgebrochen.", - "Checking authentication status": "Der Authentifizierungsstatus wird überprüft", - "Checking for existing identity...": "Überprüfung auf vorhandene Identität ...", - "Checking if another project exists with same name": "Es wird überprüft, ob ein anderes Projekt mit demselben Namen vorhanden ist", - "Checking merge status...": "Der Zusammenführungsstatus wird überprüft ...", - "Checking repository readiness...": "Repositorybereitschaft wird überprüft ...", - "Checking...": "Überprüfung …", - "Choose a source for your deployment (container image, repo, etc.).": "Wählen Sie eine Quelle für Ihre Bereitstellung aus (Containerimage, Repository usw.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Die CI/CD-Pipeline für {{repoFullName}} ist bereit. Lösen Sie Bereitstellungen über die Registerkarte „Bereitstellen“ aus.", - "Clear editor": "Editor löschen", - "Close": "Schließen", - "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Der Cluster „{{cluster}}“ wurde erfolgreich in kubeconfig zusammengeführt", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Der Cluster {{clusterName}} muss vor dem Import regulärer Namespaces registriert sein. Importieren Sie zuerst einen verwalteten Namespace aus diesem Cluster.", - "Cluster Configuration": "Clusterkonfiguration", - "Cluster is being deleted. Cannot deploy to this cluster.": "Der Cluster wird gelöscht. Die Bereitstellung kann in diesem Cluster nicht erfolgen.", "Cluster is currently updating. Deployment may fail.": "Der Cluster wird zurzeit aktualisiert. Bei der Bereitstellung kann ein Fehler auftreten.", - "Cluster is deallocated. Please start the cluster before deploying.": "Die Zuordnung des Clusters wurde aufgehoben. Starten Sie den Cluster vor der Bereitstellung.", - "Cluster is in a failed state. Please check Azure portal.": "Der Cluster befindet sich in einem fehlerhaften Zustand. Überprüfen Sie das Azure-Portal.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Der Cluster wird gelöscht. Die Bereitstellung kann in diesem Cluster nicht erfolgen.", "Cluster is still being created. Please wait until creation completes.": "Der Cluster wird noch erstellt. Warten Sie, bis die Erstellung abgeschlossen ist.", + "Cluster is in a failed state. Please check Azure portal.": "Der Cluster befindet sich in einem fehlerhaften Zustand. Überprüfen Sie das Azure-Portal.", "Cluster is stopped. Please start the cluster before deploying.": "Der Cluster wurde beendet. Starten Sie den Cluster vor der Bereitstellung.", + "Cluster is deallocated. Please start the cluster before deploying.": "Die Zuordnung des Clusters wurde aufgehoben. Starten Sie den Cluster vor der Bereitstellung.", + "AKS Preview Extension Required": "AKS-Vorschauerweiterung erforderlich", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Die aks-preview-Erweiterung ist erforderlich, um verwaltete Namespaces zu erstellen. Installieren Sie sie, um den Vorgang fortzusetzen.", + "Installing": "Die Installation wird ausgeführt.", + "Install Extension": "Erweiterung installieren", + "AKS Preview Extension installed successfully!": "Die AKS-Vorschauerweiterung wurde erfolgreich installiert!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Die Funktion ManagedNamespacePreview muss registriert werden, um verwaltete Namespaces zu erstellen.", + "Current state": "Aktueller Status", + "Please register it to continue.": "Bitte registrieren Sie das, um fortzufahren.", + "Register ManagedNamespacePreview Feature": "Die Funktion ManagedNamespacePreview registrieren", + "ManagedNamespacePreview feature registered successfully!": "Die Funktion ManagedNamespacePreview wurde erfolgreich registriert!", + "Project Name": "Projektname", + "Checking if another project exists with same name": "Es wird überprüft, ob ein anderes Projekt mit demselben Namen vorhanden ist", + "Another project already exists with same name. Please choose a different name.": "Ein anderes Projekt mit diesem Namen ist bereits vorhanden. Wählen Sie einen anderen Namen aus.", + "Project name is available": "Der Projektname ist verfügbar", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Der Projektname darf nur Kleinbuchstaben, Ziffern und Bindestriche (keine Leerzeichen) enthalten", + "Project Description": "Projektbeschreibung", + "Enter project description": "Projektbeschreibung eingeben", + "Select a subscription": "Abonnement auswählen", + "Search subscriptions": "Abonnements durchsuchen", + "No subscriptions found": "Keine Abonnements gefunden", + "Retry": "Wiederholen", + "Cluster": "Cluster", + "Please select a subscription first": "Wählen Sie zuerst ein Abonnement aus", + "Loading clusters": "Cluster werden geladen", + "Select a cluster": "Cluster auswählen", + "Search clusters": "Cluster durchsuchen", + "No clusters with Azure Entra ID authentication found for this subscription": "Für dieses Abonnement wurden keine Cluster mit Azure Entra ID-Authentifizierung gefunden", "Cluster Not Ready": "Cluster nicht bereit", - "Collapse panel": "Bereich reduzieren", - "Complete authorization on your browser screen": "Autorisierung auf Ihrem Browserbildschirm abschließen", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Schließen Sie die Installation in Ihrem Browser ab. Dies wird automatisch aktualisiert, sobald die App auf {{repoName}} installiert worden ist.", - "Compute Quota": "Computekontingent", - "Configuration Complete": "Konfiguration abgeschlossen", - "Configuration Error": "Konfigurationsfehler", + "Refreshing": "Wird aktualisiert", + "Refresh": "Aktualisieren", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Der ausgewählte Cluster fehlt in kubeconfig. Registrieren Sie ihn, bevor Sie fortfahren.", + "Registering cluster": "Cluster wird registriert", + "Wizard steps": "Assistentenschritte", + "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor-Metriken (verwalteter Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (ereignisgesteuerte automatische Skalierung)", + "VPA (Vertical Pod Autoscaler)": "VPA (Automatische vertikale Podskalierung)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Die Konfiguration dauert länger als erwartet. Überprüfen Sie im Azure-Portal den aktuellen Status Ihres Clusters.", - "Configure": "Konfigurieren", + "Failed to enable addons": "Fehler beim Aktivieren von Add-Ons", + "Failed to enable addon: {{error}}": "Fehler beim Aktivieren des Add-On: {{error}}", + "Cluster Configuration": "Clusterkonfiguration", + "(already enabled)": "(bereits aktiviert)", + "The following addons can be enabled on this cluster:": "Die folgenden Add-Ons können in diesem Cluster aktiviert werden:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Die Netzwerkrichtlinien-Engine kann nach der Clustererstellung nicht mehr geändert werden. Erstellen Sie einen neuen Cluster mit", + "for full network policy support.": "für die vollständige Unterstützung von Netzwerkrichtlinien.", + "Enabling these addons may incur additional Azure costs.": "Durch das Aktivieren dieser Add-Ons können zusätzliche Azure-Kosten anfallen.", + "Configuration Error": "Konfigurationsfehler", + "Configuration Complete": "Konfiguration abgeschlossen", + "All selected addons have been enabled successfully.": "Alle ausgewählten Add-Ons wurden erfolgreich aktiviert.", + "Configuring cluster... This may take a few minutes.": "Cluster wird konfiguriert\u00a0... Dies kann einige Minuten dauern.", + "Enabling Addons...": "Add-Ons werden aktiviert\u00a0...", + "Configuring...": "Konfiguration wird durchgeführt\u00a0…", "Configure Cluster": "Cluster konfigurieren", - "Configure Container Deployment": "Konfigurieren der Containerbereitstellung", - "Configure container health probes.": "Konfigurieren Sie Containerintegritätstests.", - "Configure Pipeline": "Pipeline konfigurieren", - "Configure security context settings for the container.": "Konfigurieren Sie Sicherheitskontexteinstellungen für den Container.", - "Configure Workload Identity": "Workloadidentität konfigurieren", - "Configured Replicas": "Replikate wurden konfiguriert", - "Configuring cluster... This may take a few minutes.": "Cluster wird konfiguriert ... Dies kann einige Minuten dauern.", - "Configuring federated credential...": "Verbundanmeldeinformationen werden konfiguriert ...", - "Configuring...": "Konfiguration wird durchgeführt …", - "Confirm & Import": "Bestätigen und importieren", - "Connect": "Verbinden", - "Connect GitHub": "GitHub verbinden", - "Connect Source": "Quelle verbinden", - "Connect to GitHub": "Mit GitHub verbinden", - "Connected": "Verbunden", - "Connected to '{{username}}'.": "Verbunden mit „{{username}}“.", - "Connecting to GitHub...": "Verbindung mit GitHub wird hergestellt ...", - "Connecting...": "Verbindung wird hergestellt ...", - "Container image": "Containerimage", - "Container Image": "Containerimage", - "Contents": "Inhalt", - "Continue": "Weiter", - "Controls whether a process can gain more privileges than its parent process.": "Steuert, ob ein Prozess mehr Berechtigungen als der übergeordnete Prozess erhalten kann.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Steuert, ob ein Prozess mehr Berechtigungen als der übergeordnete Prozess erhalten kann. Wenn Sie diese Option deaktivieren (empfohlen), werden Rechteausweitungsangriffe verhindert.", - "Convert Namespaces to AKS Projects": "Namespaces in AKS-Projekte konvertieren", - "Converting": "Konvertierung wird durchgeführt", - "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} wird in ein AKS-Projekt konvertiert (dies kann einen Moment dauern) …", - "Copied!": "Kopiert!", - "Copilot agent": "Copilot-Agent", - "Copilot agent reviewed your repo and generated deployment PR": "Der Copilot-Agent hat Ihr Repository überprüft und einen Bereitstellungs-PR erstellt.", - "Copy": "Kopieren", - "Copy to clipboard": "In Zwischenablage kopieren", - "CPU": "CPU", - "CPU limit": "CPU-Limit", - "CPU Limits": "CPU-Grenzwerte", - "CPU request": "CPU-Anforderung", - "CPU Requests": "CPU-Anforderungen", + "Compute Quota": "Computekontingent", + "Set quota limits to prevent overuse and maintain cluster stability": "Kontingentgrenzen festlegen, um eine übermäßige Nutzung zu verhindern und die Clusterstabilität aufrechtzuerhalten", "CPU Resources": "CPU-Ressourcen", - "CPU Usage": "CPU-Auslastung", - "CPU Usage / Target": "CPU-Auslastung/ Ziel", - "Create a new namespace on an existing cluster and set it up as a project": "Erstellen Sie einen neuen Namespace in einem vorhandenen Cluster und richten Sie ihn als Projekt ein.", - "Create Application": "Anwendung erstellen", - "Create deployment PRs": "Bereitstellungs-PR erstellen", - "Create Namespace": "Namespace erstellen", - "Create New Namespace": "Neuen Namespace erstellen", - "Create Project": "Projekt erstellen", - "Create Setup PR": "Setup-PR erstellen", - "Create setup workflow in .github/workflows/": "Setupworkflow in .github/workflows/ erstellen", - "Creates a LoadBalancer to expose the application to the internet.": "Erstellt einen LoadBalancer, um die Anwendung für das Internet verfügbar zu machen.", - "Creating managed identity...": "Verwaltete Identität wird erstellt ...", - "Creating namespace": "Namespace wird erstellt", - "Creating Namespace": "Namespace wird erstellt", + "CPU Requests": "CPU-Anforderungen", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Garantierte Mindest-CPU (1000m = 1 CPU-Kern)", + "CPU Limits": "CPU-Grenzwerte", + "Maximum CPU allowed (1000m = 1 CPU core)": "Maximal zulässige CPU(1000m = 1 CPU-Kern)", + "Memory Resources": "Arbeitsspeicherressourcen", + "Memory Requests": "Arbeitsspeicheranforderungen", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Garantierter Mindestarbeitsspeicher (1024\u00a0MiB = 1\u00a0GiB)", + "Memory Limits": "Arbeitsspeicherlimits", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximal zulässiger Arbeitsspeicher (1024\u00a0MiB = 1\u00a0GiB)", + "Basics": "Basiseinstellungen", + "Networking Policies": "Netzwerkrichtlinien", + "Review": "Überprüfen", + "New Project": "Neues Projekt", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Ein neues Projekt in Azure Kubernetes Service (AKS) einrichten und konfigurieren", "Creating Project": "Projekt wird erstellt", - "Creating setup PR...": "Setup-PR wird erstellt ...", - "Creating the trigger issue for the Copilot coding agent.": "Erstellen des Triggerproblems für den Copilot-Programmierungs-Agent.", - "Current Replicas": "Aktuelle Replikate", - "Current state": "Aktueller Status", - "Degraded": "Heruntergestuft", - "Delete project": "Projekt löschen", - "Delete Project": "Projekt löschen", - "Delete Project & Namespaces": "Projekt und Namespaces löschen", - "Deleted project {{ projectId }}.": "Projekt {{ projectId }} wurde gelöscht.", - "Deleting project {{ projectId }}…": "Das Projekt {{ projectId }} wird gelöscht …", - "Deny all traffic": "Den gesamten Datenverkehr verweigern", - "Deploy": "Bereitstellen", - "Deploy {{repo}}": "{{repo}} bereitstellen", - "Deploy an application to start viewing metrics.": "Stellen Sie eine Anwendung bereit, um mit der Anzeige von Metriken zu beginnen.", - "Deploy an application to view logs.": "Stellen Sie eine Anwendung bereit, um Protokolle anzuzeigen.", + "Create Project": "Projekt erstellen", + "Loading": "Wird geladen", + "Next": "Weiter", + "Project Created Successfully!": "Das Projekt wurde erfolgreich erstellt!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Ihr AKS-Projekt „{{projectName}}“ wurde erstellt und kann jetzt verwendet werden.", + "Application name": "Anwendungsname", + "Enter application name": "Anwendungsnamen eingeben", + "Enter a name for your first application to get started with deployment.": "Geben Sie einen Namen für Ihre erste Anwendung ein, um mit der Bereitstellung zu beginnen.", + "Create Application": "Anwendung erstellen", + "Project Creation Failed": "Fehler bei der Projekterstellung", + "Set security, communication and access rules for incoming and outgoing traffic": "Sicherheits-, Kommunikations- und Zugriffsregeln für eingehenden und ausgehenden Datenverkehr festlegen", + "Allow traffic within same namespace": "Netzwerkdatenverkehr innerhalb desselben Namespace zulassen", + "Allow all traffic": "Gesamten Datenverkehr zulassen", + "Deny all traffic": "Den gesamten Datenverkehr verweigern", + "Review Project Configuration": "Projektkonfiguration überprüfen", + "Please review all the settings before creating your AKS project": "Überprüfen Sie alle Einstellungen, bevor Sie Ihr AKS-Projekt erstellen", + "Project Basics": "Projektgrundlagen", + "Description": "Beschreibung", + "No description provided": "Keine Beschreibung angegeben", + "Ingress Policy": "Eingangsrichtlinie", + "Egress Policy": "Ausgangsrichtlinie", + "CPU": "CPU", + "Requests": "Anforderungen", + "Limits": "Grenzwerte", + "Memory": "Arbeitsspeicher", + "Access Control ({{count}} assignee)_one": "Access Control ({{count}} zugewiesene Person)", + "Access Control ({{count}} assignee)_other": "Zugriffssteuerung ({{count}} zugewiesene Personen)", + "Not specified": "Nicht angegeben", + "Select an option": "Eine Option auswählen", + "No options": "Keine Optionen", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Die Projekterstellung wird gestartet", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Timeout bei der Projekterstellung nach 10 Minuten. Überprüfen Sie, ob der Namespace erstellt wurde, und versuchen Sie es noch mal.", + "Initiating managed namespace creation": "Die Erstellung eines verwalteten Namespace wird initiiert", + "Namespace creation failed: {{message}}": "Fehler bei der Namespaceerstellung: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Die Namespaceerstellung wurde initiiert! Den Erstellungsstatus überwachen", + "Waiting for namespace to propagate": "Es wird auf die Verteilung des Namespace gewartet", + "Namespace status check failed: {{message}}": "Fehler bei der Namespacestatusüberprüfung: {{message}}", + "Waiting for namespace to be created": "Es wird auf die Erstellung des Namespace gewartet", + "Namespace status verification failed: {{message}}": "Fehler bei der Überprüfung des Namespacestatus: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "Die Namespaceerstellungs-API wurde erfolgreich erstellt, und die Benutzerzuweisungen werden fortgesetzt", + "Namespace creation completed successfully! Adding user access": "Die Namespaceerstellung wurde erfolgreich abgeschlossen! Der Benutzerzugriff wird hinzugefügt", + "User assignment completed with errors": "Benutzerzuweisung mit Fehlern abgeschlossen", + "Project creation completed successfully!": "Projekterstellung erfolgreich abgeschlossen", + "Performing final status verification": "Abschließende Statusüberprüfung wird ausgeführt", + "Final status check failed: {{message}}": "Fehler bei der abschließenden Statusüberprüfung: {{message}}", + "Final status verification failed: {{message}}": "Fehler bei der abschließenden Statusüberprüfung: {{message}}", + "All verifications completed successfully!": "Alle Überprüfungen wurden erfolgreich abgeschlossen!", + "Failed to create project": "Fehler beim Erstellen des Projekts.", + "A cluster must be selected": "Es muss ein Cluster ausgewählt werden.", + "Namespace name is required": "Namespacename ist erforderlich", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Der Namespacename darf nur aus Kleinbuchstaben, Zahlen und Bindestrichen bestehen und muss mit einem alphanumerischen Zeichen beginnen und enden.", + "Namespace name must be 63 characters or fewer": "Der Namespacename darf höchstens 63\u00a0Zeichen lang sein.", + "Creating namespace": "Namespace wird erstellt", + "Updating local settings": "Lokale Einstellungen werden aktualisiert", + "Namespace created successfully!": "Namespace erfolgreich erstellt!", + "Failed to create namespace": "Fehler beim Erstellen des Namespace", + "No clusters found. Register a cluster first.": "Keine Cluster gefunden. Registrieren Sie zuerst einen Cluster.", + "Namespace Name": "Namespacename", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten und muss mit einem alphanumerischen Zeichen beginnen und enden.", + "The namespace will be created on the selected cluster and set up as a project": "Der Namespace wird auf dem ausgewählten Cluster erstellt und als Projekt eingerichtet.", + "Type": "Typ", + "Regular Kubernetes namespace": "Namespace für reguläres Kubernetes", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Auf dem Cluster wird ein neuer Namespace mit angewendeten Projektlabels erstellt. Er erscheint sofort in Ihrer Projektliste.", + "Create New Namespace": "Neuen Namespace erstellen", + "Create a new namespace on an existing cluster and set it up as a project": "Erstellen Sie einen neuen Namespace in einem vorhandenen Cluster und richten Sie ihn als Projekt ein.", + "Creating Namespace": "Namespace wird erstellt", + "Namespace Creation Failed": "Fehler bei der Namespaceerstellung", + "Namespace Created Successfully!": "Namespace erfolgreich erstellt!", + "Your project \"{{projectName}}\" is ready to use.": "Ihr Projekt „{{projectName}}“ ist einsatzbereit.", + "Go To Projects": "Zu Projekten wechseln", + "Create Namespace": "Namespace erstellen", + "Delete project": "Projekt löschen", + "Delete Project": "Projekt löschen", + "Are you sure you want to delete project \"{{projectId}}\"?": "Möchten Sie das Projekt „{{projectId}}“ löschen?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Standardmäßig werden dadurch die von Azure verwalteten Namespace- und Projektbezeichnungen aus den folgenden Namespaces entfernt:", + "Also delete the namespaces (this will remove all resources within them)": "Löschen Sie auch die Namespaces (dadurch werden alle darin enthaltenen Ressourcen entfernt)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Warnung: Diese Aktion kann nicht rückgängig gemacht werden. Alle Ressourcen in diesen Namespaces werden dauerhaft gelöscht.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Hinweis: Bei verwalteten AKS-Namespaces wird die Azure ARM-Verwaltung automatisch entfernt.", + "Delete Project & Namespaces": "Projekt und Namespaces löschen", + "Deleting project {{ projectId }}…": "Das Projekt {{ projectId }} wird gelöscht\u00a0…", + "Cancelled deletion of project {{ projectId }}.": "Das Löschen des Projekts {{ projectId }} wurde abgebrochen.", + "Deleted project {{ projectId }}.": "Projekt {{ projectId }} wurde gelöscht.", + "Error deleting project {{ projectId }}.": "Fehler beim Löschen des Projekts {{ projectId }}.", "Deploy Application": "Anwendung bereitstellen", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Über Azure Container Registry, Docker Hub oder GHCR bereitstellen", + "Failed to load pipeline runs": "Fehler beim Laden der Pipelineausführungen", + "Pipeline": "Pipeline", + "Set up your pipeline": "Pipeline einrichten", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "CI/CD-Pipeline zum Automatisieren Ihrer Bereitstellungen und Optimieren Ihres Workflows einrichten", + "Waiting for browser authorization...": "Es wird auf die Browserautorisierung gewartet\u00a0...", + "Sign in to GitHub to view pipeline runs.": "Melden Sie sich bei GitHub an, um Pipelineausführungen anzuzeigen.", + "Connecting...": "Verbindung wird hergestellt\u00a0...", + "No pipeline runs yet.": "Es wird noch keine Pipeline ausgeführt.", + "View on GitHub": "In GitHub anzeigen", + "View run on GitHub": "Ausführung auf GitHub anzeigen", + "Healthy": "Fehlerfrei", + "Scaled down": "Herunterskaliert", + "Degraded": "Heruntergestuft", + "VS Code": "VS Code", + "Manual": "Manuell", + "Manual Deploy": "Manuelle Bereitstellung", + "Deploy {{repo}}": "{{repo}} bereitstellen", "Deploy via Pipeline": "Über Pipeline bereitstellen", - "Deploying": "Wird bereitgestellt", + "No deployments found in this namespace.": "In diesem Namespace wurden keine Bereitstellungen gefunden.", "Deployment": "Bereitstellung", - "Deployment PR": "Bereitstellungs-PR", - "Deployment PR Ready": "Bereitstellungs-PR bereit", - "Deployment PR reviewed and merged": "Bereitstellungs-PR überprüft und zusammengeführt", - "Deployment source": "Bereitstellungsquelle", - "Description": "Beschreibung", - "Deselect All": "Gesamte Auswahl aufheben", - "Desired Replicas": "Gewünschte Replikate", - "Discard": "Verwerfen", - "Dismiss": "Schließen", - "Distributes pods evenly across nodes to improve workload distribution.": "Verteilt Pods gleichmäßig auf Knoten, um die Workloadverteilung zu verbessern.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Verteilt Pods gleichmäßig auf Knoten, Zonen oder andere Topologiedomänen, um die Verteilung und Verfügbarkeit von Workloads zu verbessern.", - "Done": "Fertig", - "Edit Configuration": "Konfiguration bearbeiten", + "Source": "Quelle", + "Replicas": "Replikate", + "Ready": "Bereit", + "Status": "Status", + "Actions": "Aktionen", "Edit deployment": "Bereitstellung bearbeiten", - "Edit HPA Configuration": "HPA-Konfiguration bearbeiten", - "Edit Manual Scaling Configuration": "Manuelle Skalierungskonfiguration bearbeiten", - "Egress Policy": "Ausgangsrichtlinie", + "View workflow run": "Workflowausführung anzeigen", + "Re-deploy": "Erneut bereitstellen", + "Failed to trigger deployment": "Fehler beim Auslösen der Bereitstellung", + "Trigger": "Trigger", + "workflow on": "Workflow-ID", + "with the following parameters:": "mit den folgenden Parametern:", + "Namespace": "Namespace", + "Sign in": "Anmelden", + "GitHub authentication required to trigger deployment.": "Zum Auslösen der Bereitstellung ist eine GitHub-Authentifizierung erforderlich.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Die Workflowverteilung wurde erfolgreich ausgelöst. Überprüfen Sie den Status der GitHub Actions.", + "Close": "Schließen", + "Triggering...": "Auslösen\u00a0...", + "Deploy": "Bereitstellen", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "GitHub Pipelines in den Einstellungen aktivieren → Previewfunktionen für die Verwendung von Pipelinebereitstellungen.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Aktivieren Sie GitHub-basierte Bereitstellungspipelines für AKS-Projekte.", - "Enable Horizontal Pod Autoscaler": "Horizontale automatische Podskalierung (HPA) aktivieren", - "Enable liveness probe": "Livetest aktivieren", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Aktivieren oder deaktivieren Sie Funktionen, die sich noch in der Entwicklung befinden. Vorschaufunktionen können in zukünftigen Versionen geändert oder entfernt werden.", - "Enable pod anti-affinity": "Pod-Antiaffinität aktivieren", - "Enable public access": "Öffentlichen Zugriff aktivieren", - "Enable readiness probe": "Bereitschaftstest aktivieren", - "Enable resource requests and limits": "Ressourcenanforderungen und -grenzwerte aktivieren", - "Enable startup probe": "Starttest aktivieren", - "Enable topology spread constraints": "Topologieverteilungseinschränkungen aktivieren", - "Enabling Addons...": "Add-Ons werden aktiviert ...", - "Enabling these addons may incur additional Azure costs.": "Durch das Aktivieren dieser Add-Ons können zusätzliche Azure-Kosten anfallen.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Stellen Sie sicher, dass mindestens ≤ maximale Replikate und die Ziel-CPU zwischen 10 % und 95 % liegen.", + "Workloads": "Workloads", + "No clusters in this project.": "Dieses Projekt enthält keine Cluster.", + "Failed to fetch deployments": "Fehler beim Abrufen von Bereitstellungen", + "Failed to fetch cluster status": "Fehler beim Abrufen des Clusterstatus", + "Configure security context settings for the container.": "Konfigurieren Sie Sicherheitskontexteinstellungen für den Container.", + "Run as non root user": "Als Nicht-Root-Benutzer ausführen", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Stellt sicher, dass der Container als Nicht-Rootbenutzer (UID != 0) ausgeführt wird, um die Sicherheit zu erhöhen. Dadurch werden Rechteausweitungsangriffe verhindert.", "Ensures the container runs as a non-root user for better security.": "Stellt sicher, dass der Container als Nicht-Rootbenutzer ausgeführt wird, um die Sicherheit zu erhöhen.", - "Ensuring resource group exists...": "Sicherstellen, dass die Ressourcengruppe vorhanden ist...", - "Enter a name for your first application to get started with deployment.": "Geben Sie einen Namen für Ihre erste Anwendung ein, um mit der Bereitstellung zu beginnen.", - "Enter application name": "Anwendungsnamen eingeben", - "Enter project description": "Projektbeschreibung eingeben", + "Read only root filesystem": "Schreibgeschütztes Stammdateisystem", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Stellt das Stammdateisystem des Containers als schreibgeschützt bereit, um Schreibvorgänge zu verhindern. Dadurch wird die Sicherheit erhöht, indem verhindert wird, dass bösartiger Code Systemdateien ändert.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Stellt das Stammdateisystem des Containers als schreibgeschützt bereit, um Schreibvorgänge zu verhindern.", + "Allow privilege escalation": "Rechteausweitung zulassen", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Steuert, ob ein Prozess mehr Berechtigungen als der übergeordnete Prozess erhalten kann. Wenn Sie diese Option deaktivieren (empfohlen), werden Rechteausweitungsangriffe verhindert.", + "Controls whether a process can gain more privileges than its parent process.": "Steuert, ob ein Prozess mehr Berechtigungen als der übergeordnete Prozess erhalten kann.", + "Enable pod anti-affinity": "Pod-Antiaffinität aktivieren", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Planen Sie Pods bevorzugt auf verschiedenen Knoten, um die Verfügbarkeit und Fehlertoleranz zu verbessern. Dadurch wird sichergestellt, dass Pods über den Cluster verteilt werden.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Planen Sie Pods auf verschiedenen Knoten vor, um die Verfügbarkeit und Fehlertoleranz zu verbessern.", + "Enable topology spread constraints": "Topologieverteilungseinschränkungen aktivieren", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Verteilt Pods gleichmäßig auf Knoten, Zonen oder andere Topologiedomänen, um die Verteilung und Verfügbarkeit von Workloads zu verbessern.", + "Distributes pods evenly across nodes to improve workload distribution.": "Verteilt Pods gleichmäßig auf Knoten, um die Workloadverteilung zu verbessern.", + "Container image": "Containerimage", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Die Anzahl der auszuführenden Podreplikate. Mehr Replikate bieten eine bessere Verfügbarkeit und Lastenverteilung.", + "Continue": "Weiter", + "Configure Container Deployment": "Konfigurieren der Containerbereitstellung", + "Networking": "Netzwerk", + "Healthchecks": "Integritätsprüfungen", + "Resource Limits": "Ressourcengrenzwerte", "Environment Variables": "Umgebungsvariablen", - "Error deleting project {{ projectId }}.": "Fehler beim Löschen des Projekts {{ projectId }}.", - "Error Rate": "Fehlerquote", - "Failed to apply": "Fehler beim Anwenden", - "Failed to apply resources.": "Fehler beim Anwenden von Ressourcen.", - "Failed to convert namespace: {{message}}": "Fehler beim Konvertieren des Namespace: {{message}}", - "Failed to create namespace": "Fehler beim Erstellen des Namespace", - "Failed to create project": "Fehler beim Erstellen des Projekts.", - "Failed to enable addon: {{error}}": "Fehler beim Aktivieren des Add-On: {{error}}", - "Failed to enable addons": "Fehler beim Aktivieren von Add-Ons", - "Failed to fetch cluster status": "Fehler beim Abrufen des Clusterstatus", - "Failed to fetch deployment status": "Fehler beim Abrufen von Bereitstellungsprotokollen", - "Failed to fetch deployments": "Fehler beim Abrufen von Bereitstellungen", - "Failed to fetch managed namespace details": "Fehler beim Abrufen der Details des verwalteten Namespaces", - "Failed to fetch managed namespaces": "Fehler beim Abrufen verwalteter Namespaces", - "Failed to fetch pod status": "Fehler beim Abrufen des Podstatus", - "Failed to fetch service status": "Fehler beim Abrufen des Dienststatus", - "Failed to import any projects. See details below.": "Fehler beim Importieren von Projekten. Weitere Informationen finden Sie weiter unten.", - "Failed to initiate login: {{message}}": "Fehler beim Initiieren der Anmeldung: {{message}}", - "Failed to load AKS clusters": "Fehler beim Laden von AKS-Clustern", - "Failed to load Azure context": "Fehler beim Laden des Azure-Kontexts", - "Failed to load pipeline runs": "Fehler beim Laden der Pipelineausführungen", - "Failed to load repositories": "Fehler beim Laden von Repositorys", - "Failed to load subscriptions": "Fehler beim Laden von Abonnements.", - "Failed to merge cluster: {{message}}": "Fehler beim Zusammenführen des Clusters: {{message}}", - "Failed to monitor deployment health": "Fehler beim Überwachen der Bereitstellungsintegrität", - "Failed to register cluster: {{message}}": "Fehler beim Registrieren des Clusters: {{message}}", - "Failed to trigger deployment": "Fehler beim Auslösen der Bereitstellung", - "Failed to update managed namespace": "Fehler beim Aktualisieren des verwalteten Namespace", - "failureThreshold": "failureThreshold", - "Features": "Features", - "Federated Credential": "Verbundanmeldeinformationen", - "Filter repositories": "Repositorys filtern", - "Final status check failed: {{message}}": "Fehler bei der abschließenden Statusüberprüfung: {{message}}", - "Final status verification failed: {{message}}": "Fehler bei der abschließenden Statusüberprüfung: {{message}}", - "for full network policy support.": "für die vollständige Unterstützung von Netzwerkrichtlinien.", + "Workload Identity": "", + "Advanced": "Erweitert", + "Information about {{label}}": "Informationen zu {{label}}", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Fügen Sie ein oder mehrere Kubernetes-Manifeste hinzu. Laden Sie Dateien hoch, um den Editor aufzufüllen, oder fügen Sie ihn direkt unten ein.", + "Upload files": "Dateien hochladen", + "Clear editor": "Editor löschen", + "Review & Deploy": "Überprüfen und bereitstellen", "Generated Kubernetes manifests (namespace: {{namespace}})": "Generierte Kubernetes-Manifeste (Namespace: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Zum Auslösen der Bereitstellung ist eine GitHub-Authentifizierung erforderlich.", - "GitHub Pipelines": "GitHub-Pipelines", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Zu Projekten wechseln", - "Guided configuration for ports, replicas, env, and resources": "Geführte Konfiguration für Ports, Replikate, Umgebungen und Ressourcen", - "Healthchecks": "Integritätsprüfungen", - "Healthy": "Fehlerfrei", + "Resources to be deployed ({{count}} object)_one": "Bereitzustellende Ressourcen ({{count}} Objekt)", + "Resources to be deployed ({{count}} object)_other": "Bereitzustellende Ressourcen ({{count}} Objekt)", + "namespace: {{namespace}}": "Namespace: {{namespace}}", + "Configure": "Konfigurieren", + "Deploying": "Wird bereitgestellt", + "Key": "Schlüssel", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Wert", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "entfernen", + "Add variable": "Variable hinzufügen", + "Configure container health probes.": "Konfigurieren Sie Containerintegritätstests.", + "Manually configure settings": "Einstellungen manuell konfigurieren", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Standardmäßig verwenden Tests HTTP GET auf dem Stammpfad mit sinnvollen Standardeinstellungen. Aktivieren Sie diese Option, um die Testeinstellungen anzupassen.", + "Enable liveness probe": "Livetest aktivieren", + "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes startet den Container neu, wenn diese Überprüfung wiederholt fehlschlägt. Wird zum Erkennen und Wiederherstellen von Deadlocks oder nicht reagierenden Containern verwendet.", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes startet den Container neu, wenn diese Überprüfung wiederholt fehlschlägt.", + "Liveness path": "Livepfad", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Der HTTP-Pfad, der auf Liveness überprüft werden soll (z. B. /healthz). Für diesen Test wird eine HTTP GET-Anforderung für diesen Pfad ausgeführt.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Anzahl von Sekunden nach dem Start des Containers, bevor Livetests initiiert werden.", + "periodSeconds": "periodSeconds", "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Gibt an, wie oft (in Sekunden) der Livetest ausgeführt werden soll. Der Standardwert ist 10 Sekunden.", + "timeoutSeconds": "TimeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Die Anzahl von Sekunden bis zum Timeout des Tests. Der Standardwert beträgt 1 Sekunde.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Wenn ein Test fehlschlägt, führt Kubernetes viele Wiederholungsversuche durch, bevor Vorgang abgebrochen oder der Container aufgegeben und neu gestartet wird.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Mindestanzahl aufeinanderfolgenden Erfolge, damit der Test als erfolgreich gilt, nachdem er fehlgeschlagen ist. Der Standardwert ist 1.", + "Enable readiness probe": "Bereitschaftstest aktivieren", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes sendet erst Datenverkehr an den Pod, wenn diese Überprüfung erfolgreich ist. Wird verwendet, um anzugeben, wann ein Container bereit ist, Datenverkehr zu akzeptieren.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes sendet erst Datenverkehr an den Pod, wenn diese Überprüfung erfolgreich ist.", + "Readiness path": "Bereitschaftspfad", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Der HTTP-Pfad, der auf Bereitschaft überprüft werden soll (z. B. /ready). Für diesen Test wird eine HTTP GET-Anforderung für diesen Pfad ausgeführt.", + "Number of seconds after the container has started before readiness probes are initiated.": "Anzahl von Sekunden nach dem Start des Containers, bevor Bereitschaftstests initiiert werden.", "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Gibt an, wie oft (in Sekunden) der Bereitschaftstest ausgeführt werden soll. Der Standardwert ist 10 Sekunden.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Wenn ein Test fehlschlägt, führt Kubernetes viele Wiederholungsversuche durch, bevor der Pod als nicht bereit markiert wird.", + "Enable startup probe": "Starttest aktivieren", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes deaktiviert vorübergehend Liveness/Bereitschaft, bis der Start erfolgreich ist. Nützlich für Container, deren Start viel Zeit in Anspruch nimmt.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes deaktiviert vorübergehend Liveness/Bereitschaft, bis der Start erfolgreich ist.", + "Startup path": "Startpfad", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Der HTTP-Pfad, der auf den Start überprüft werden soll (z. B. /startup). Für diesen Test wird eine HTTP GET-Anforderung für diesen Pfad ausgeführt.", + "Number of seconds after the container has started before startup probes are initiated.": "Anzahl von Sekunden nach dem Start des Containers, bevor Starttests initiiert werden.", "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Gibt an, wie oft (in Sekunden) der Starttest ausgeführt werden soll. Der Standardwert ist 10 Sekunden.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Wenn ein Test fehlschlägt, führt Kubernetes viele Wiederholungsversuche durch, bevor der Vorgang abgebrochen wird. Bei Starttests bestimmt diese Einstellung die Wartezeit vor dem Neustart.", + "Enable Horizontal Pod Autoscaler": "Horizontale automatische Podskalierung (HPA) aktivieren", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Skaliert automatisch die Anzahl der Pods basierend auf der CPU-Auslastung. HPA erhöht die Pod-Anzahl, wenn die CPU-Auslastung den Zielwert überschreitet, und verringert die Pod-Anzahl, wenn die CPU-Auslastung darunter liegt.", "HPA scales pods based on CPU utilization.": "HPA skaliert Pods basierend auf der CPU-Auslastung.", - "Identity Resource Group": "Identitätsressourcengruppe", - "Import AKS Projects": "Importieren von AKS-Projekten", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importieren Sie vorhandene verwaltete Namespaces und reguläre Namespaces als Projekte. Namespaces, die noch keine AKS-Desktopprojekte sind, werden durch Hinzufügen des erforderlichen Projektlabels konvertiert.", - "Import Selected Projects": "Ausgewählte Projekte importieren", - "Importing": "Import wird ausgeführt", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}} von {{total}} werden importiert: {{name}} aus {{clusterName}}", - "in resource group": "in Ressourcengruppe", - "Information about {{label}}": "Informationen zu {{label}}", - "Information about CPU limit": "Informationen zum CPU-Grenzwert", - "Information about CPU request": "Informationen zur CPU-Anforderung", - "Information about memory limit": "Informationen zum Arbeitsspeicherlimit", - "Information about memory request": "Informationen zur Speicheranforderung", - "Information about target CPU utilization": "Informationen zur CPU-Zielauslastung", - "Ingress Policy": "Eingangsrichtlinie", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Initialisierung ...", - "Initiating Azure login": "Die Azure-Anmeldung wird initiiert", - "Initiating managed namespace creation": "Die Erstellung eines verwalteten Namespace wird initiiert", - "Install Extension": "Erweiterung installieren", - "Install GitHub App": "GitHub-App installieren", - "Installing": "Die Installation wird ausgeführt.", + "Min replicas": "Mindestanzahl Replikate", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Die Mindestanzahl von Podreplikaten, die HPA selbst bei geringer CPU-Auslastung verwalten wird.", + "Max replicas": "Maximale Anzahl Replikate", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Die maximale Anzahl von Podreplikaten, auf die HPA hochskaliert werden kann, wenn die CPU-Auslastung hoch ist.", + "Target CPU utilization": "Gezielte CPU-Auslastung", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Der durchschnittliche CPU-Auslastungsprozentsatz des Ziels für alle Pods. HPA wird zentral hochskaliert, wenn die CPU-Auslastung diesen Wert überschreitet, und herunterskaliert, wenn dieser Wert darunter liegt.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Stellen Sie sicher, dass mindestens ≤ maximale Replikate und die Ziel-CPU zwischen 10\u00a0% und 95\u00a0% liegen.", + "Target port": "Zielport", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Die Portnummer, die von Ihrem Container überwacht wird. Dies ist der Port innerhalb des Containers, in dem Ihre Anwendung ausgeführt wird.", + "Service port": "Dienstport", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Die Portnummer, die vom Kubernetes-Dienst verfügbar gemacht wird. An diesen Port gerichteten Datenverkehr wird an den Zielport weitergeleitet.", + "Use custom service port": "Benutzerdefinierten Dienstport verwenden", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Standardmäßig entspricht der Dienstport dem Zielport. Aktivieren Sie diese Option, um einen anderen Port für den Dienst zu verwenden.", + "Service type": "Diensttyp", "Internal only": "Nur intern", - "Invalid YAML": "Ungültiges YAML", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Verwenden Sie ClusterIP. Am besten geeignet für Dienste, die nur innerhalb des Clusters erreichbar sind.", + "Enable public access": "Öffentlichen Zugriff aktivieren", + "Creates a LoadBalancer to expose the application to the internet.": "Erstellt einen LoadBalancer, um die Anwendung für das Internet verfügbar zu machen.", + "Enable resource requests and limits": "Ressourcenanforderungen und -grenzwerte aktivieren", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Legen Sie CPU- und Arbeitsspeicheranforderungen (garantierte Ressourcen) und Grenzwerte (maximale Ressourcen) fest, um die Ressourcenzuordnung zu steuern und zu verhindern, dass Container zu viele Clusterressourcen verbrauchen.", + "CPU request": "CPU-Anforderung", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Die dem Container garantierte Mindestmenge an CPU-Leistung. Kubernetes plant den Pod auf einem Knoten ein, auf dem mindestens diese Menge an CPU-Leistung verfügbar ist.", + "millicores": "Millicore", + "CPU limit": "CPU-Limit", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Die maximale CPU-Menge, die der Container verwenden kann. Wenn dieser Wert überschritten wird, wird der Container gedrosselt.", + "Memory request": "Speicheranforderung", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Die Mindestmenge an Speicher, die dem Container garantiert wird. Kubernetes plant den Pod auf einem Knoten ein, auf dem mindestens diese Speichermenge verfügbar ist.", + "mebibytes": "Mebibytes", + "Memory limit": "Arbeitsspeicherlimit", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Die maximale Speichermenge, die der Container verwenden kann. Wenn dieser Wert überschritten wird, wird der Container beendet (OOMKilled).", + "Container Image": "Containerimage", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Über Azure Container Registry, Docker Hub oder GHCR bereitstellen", + "Auto-generated Deployment and Service manifests": "Automatisch generierte Bereitstellungs- und Dienstmanifeste", + "Guided configuration for ports, replicas, env, and resources": "Geführte Konfiguration für Ports, Replikate, Umgebungen und Ressourcen", + "No Kubernetes expertise required to get started": "Für den Einstieg sind keine Kubernetes-Kompetenzen erforderlich", + "Bring your own Kubernetes manifests to deploy": "Eigene Kubernetes-Manifeste zur Bereitstellung verwenden", + "Use existing manifests for full control": "Vorhandene Manifeste für Vollzugriff verwenden", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Unterstützung mehrerer Dateien (Bereitstellungen, Dienste, Eingang usw.)", + "Preview and basic validation before apply": "Vorschau und grundlegende Validierung vor der Anwendung", + "Select Source": "Quelle auswählen", + "Choose a source for your deployment (container image, repo, etc.).": "Wählen Sie eine Quelle für Ihre Bereitstellung aus (Containerimage, Repository usw.).", + "Deployment source": "Bereitstellungsquelle", + "Features": "Features", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Identitätsressourcengruppe", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Überprüfung auf vorhandene Identität\u00a0...", + "Creating managed identity...": "Verwaltete Identität wird erstellt\u00a0...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Ungültiges YAML: Erforderliches Feld (Art) fehlt.", + "Invalid YAML: List resource must have an array \"items\" field": "Ungültiges YAML: Die Listenressource muss ein Arrayfeld \"items\" enthalten.", "Invalid YAML: List item missing required field (kind)": "Ungültiges YAML: Erforderliches Feld (kind) im Listenelement fehlt.", "Invalid YAML: List item missing required field (metadata.name)": "Ungültiges YAML: Erforderliches Feld (metadata.name) im Listenelement fehlt.", - "Invalid YAML: List resource must have an array \"items\" field": "Ungültiges YAML: Die Listenressource muss ein Arrayfeld \"items\" enthalten.", - "Invalid YAML: missing required field (kind)": "Ungültiges YAML: Erforderliches Feld (Art) fehlt.", "Invalid YAML: missing required field (metadata.name)": "Ungültiges YAML: Erforderliches Feld fehlt (metadata.name)", - "Issue {{number}}": "Problem {{number}}", + "Invalid YAML": "Ungültiges YAML", + "Validation failed": "Fehler bei der Überprüfung", + "Failed to apply": "Fehler beim Anwenden", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} Ressource(n) wurde(n) angewendet, aber {{failed}} ist/sind fehlgeschlagen:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "{{count}} Ressource(n) erfolgreich angewendet.", + "Applied {{count}} resource(s) successfully._other": "{{count}} Ressource(n) erfolgreich angewendet.", + "Failed to apply resources.": "Fehler beim Anwenden von Ressourcen.", + "unnamed": "unbenannt", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Inhalt", + "Push agent config files": "Push-Agent-Konfigurationsdateien", + "Workflows": "Workflows", + "Create setup workflow in .github/workflows/": "Setupworkflow in .github/workflows/ erstellen", + "Pull requests": "Pull Requests", + "Create deployment PRs": "Bereitstellungs-PR erstellen", "Issues": "Probleme", - "just now": "gerade eben", - "KEDA (Event-Driven Autoscaling)": "KEDA (ereignisgesteuerte automatische Skalierung)", - "Keep Going": "Fortfahren", - "Key": "Schlüssel", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes startet den Container neu, wenn diese Überprüfung wiederholt fehlschlägt.", - "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes startet den Container neu, wenn diese Überprüfung wiederholt fehlschlägt. Wird zum Erkennen und Wiederherstellen von Deadlocks oder nicht reagierenden Containern verwendet.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes deaktiviert vorübergehend Liveness/Bereitschaft, bis der Start erfolgreich ist.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes deaktiviert vorübergehend Liveness/Bereitschaft, bis der Start erfolgreich ist. Nützlich für Container, deren Start viel Zeit in Anspruch nimmt.", - "Kubernetes Version": "Kubernetes-Version", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes sendet erst Datenverkehr an den Pod, wenn diese Überprüfung erfolgreich ist.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes sendet erst Datenverkehr an den Pod, wenn diese Überprüfung erfolgreich ist. Wird verwendet, um anzugeben, wann ein Container bereit ist, Datenverkehr zu akzeptieren.", - "Kubernetes YAML": "Kubernetes YAML", + "Track agent progress": "Agent-Fortschritt nachverfolgen", + "Run deployment workflows": "Bereitstellungsworkflows ausführen", + "Connect to GitHub": "Mit GitHub verbinden", + "Connected to '{{username}}'.": "Verbunden mit „{{username}}“.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorisieren Sie AKS Desktop, um Bereitstellungspipelines in Ihrem Repository zu erstellen.", + "Required Permissions": "Erforderliche Berechtigungen", + "Complete authorization on your browser screen": "Autorisierung auf Ihrem Browserbildschirm abschließen", + "Connect": "Verbinden", + "Select repository": "Repository auswählen", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Schließen Sie die Installation in Ihrem Browser ab. Dies wird automatisch aktualisiert, sobald die App auf {{repoName}} installiert worden ist.", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Die AKS-Desktop-GitHub-App muss auf installiert {{repoName}} sein, um den Vorgang fortzusetzen.", + "Reopen install page": "Installationsseite erneut öffnen", + "Install GitHub App": "GitHub-App installieren", + "Checking...": "Überprüfung\u00a0…", + "Connecting to GitHub...": "Verbindung mit GitHub wird hergestellt\u00a0...", + "Connect GitHub": "GitHub verbinden", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Verbunden", + "Sign in to GitHub": "Bei GitHub anmelden", + "Failed to load repositories": "Fehler beim Laden von Repositorys", + "Filter repositories": "Repositorys filtern", + "No repositories match your filter": "Keine Repositorys entsprechen Ihrem Filter", + "No repositories found": "Keine Repositorys gefunden", "less than a minute": "Weniger als eine Minute", - "Limits": "Grenzwerte", - "Liveness path": "Livepfad", - "Loading": "Wird geladen", - "Loading AKS clusters": "Laden von AKS-Clustern", - "Loading Azure account information": "Laden von Azure-Kontoinformationen", - "Loading Azure context...": "Azure-Kontext wird geladen ...", - "Loading clusters": "Cluster werden geladen", - "Loading configuration...": "Konfiguration wird geladen…", - "Loading deployments": "Bereitstellungen werden geladen", - "Loading metrics": "Metriken werden geladen", - "Loading scaling metrics from Prometheus": "Laden von Skalierungsmetriken aus Prometheus", - "Loading subscriptions": "Abonnements werden geladen", - "Loading...": "Wird geladen...", - "Location": "Speicherort", - "Log out": "Abmelden", - "Logged in as": "Angemeldet als", - "Logging out": "Abmeldung wird durchgeführt", - "Login successful! Redirecting": "Die Anmeldung war erfolgreich! Umleitung", - "Login timeout. Please try again.": "Anmeldetimeout. Versuchen Sie es bitte noch mal.", + "{{count}} min_one": "{{count}}\u00a0Min.", + "{{count}} min_other": "{{count}}\u00a0Min.", + "Up next": "Als Nächstes", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "Der Zusammenführungsstatus wird überprüft\u00a0...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Der Vorgang dauert länger als erwartet. Überprüfen Sie in GitHub den aktuellen PR-Status.", + "This PR was closed without merging. You may need to restart the process.": "Dieser PR wurde ohne Zusammenführen geschlossen. Möglicherweise müssen Sie den Prozess neu starten.", + "Review on GitHub": "Vorschau in GitHub", + "Agent is working": "Agent arbeitet", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Der Copilot-Progammierungs-Agent analysiert Ihr Repository und generiert einen Bereitstellungs-PR mit Dockerfile, Kubernetes-Manifesten und einem GitHub Actions-Workflow.", + "Issue {{number}}": "Problem {{number}}", + "Waiting for agent workflow to start...": "Es wird auf den Start des Agentworkflows gewartet\u00a0...", + "This typically takes 10–25 minutes.": "In der Regel dauert dies 10–25\u00a0Minuten.", + "Pipeline configured": "Pipeline konfiguriert", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Die CI/CD-Pipeline für {{repoFullName}} ist bereit. Lösen Sie Bereitstellungen über die Registerkarte „Bereitstellen“ aus.", + "Setup PR reviewed and merged": "Setup-PR überprüft und zusammengeführt", + "Copilot agent reviewed your repo and generated deployment PR": "Der Copilot-Agent hat Ihr Repository überprüft und einen Bereitstellungs-PR erstellt.", + "Deployment PR reviewed and merged": "Bereitstellungs-PR überprüft und zusammengeführt", + "View deployment": "Bereitstellung anzeigen", + "You can collapse this panel. Progress is saved and will resume when you return.": "Sie können diesen Bereich reduzieren. Der Fortschritt wird gespeichert und der Vorgang wird fortgesetzt, wenn Sie zurückkehren.", + "Creating setup PR...": "Setup-PR wird erstellt\u00a0...", + "The agent is creating the setup PR to enable the Copilot agent.": "Der Agent erstellt den Setup-PR, um den Copilot-Agent zu aktivieren.", + "Setup PR Created": "Setup-PR erstellt", + "Review and merge the setup PR to enable the Copilot agent.": "Überprüfen Sie den Setup-PR, und führen Sie diesen zusammen, um den Copilot-Agent zu aktivieren.", + "Setting up Copilot agent...": "Copilot-Agent wird eingerichtet...", + "Creating the trigger issue for the Copilot coding agent.": "Erstellen des Triggerproblems für den Copilot-Programmierungs-Agent.", + "Deployment PR Ready": "Bereitstellungs-PR bereit", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Der Agent hat den Bereitstellungs-PR erstellt. Überprüfen Sie die generierten Dateien, und führen Sie diese zusammen, um die Bereitstellungspipeline zu starten.", + "Copilot agent": "Copilot-Agent", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Nach dem Zusammenführen analysiert der Copilot-Agent Ihr Repository und erstellt einen Bereitstellungs-PR.", + "Deployment PR": "Bereitstellungs-PR", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Sobald der Agent den Bereitstellungs-PR erstellt hat, überprüfen Sie die generierten Dateien, und führen Sie diese zusammen, um die Bereitstellungspipeline zu starten.", + "Connect Source": "Quelle verbinden", + "Set up Copilot Agent": "Copilot-Agent einrichten", + "Review & Merge": "Überprüfen und zusammenführen", + "Collapse panel": "Bereich reduzieren", + "Keep Going": "Fortfahren", + "Discard": "Verwerfen", + "Canceling will discard your pipeline progress. Are you sure?": "Wenn Sie den Vorgang abbrechen, wird der Pipelinestatus verworfen. Sind Sie sicher?", + "Ensuring resource group exists...": "Sicherstellen, dass die Ressourcengruppe vorhanden ist...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Verbundanmeldeinformationen werden konfiguriert\u00a0...", + "Workload identity configured": "Workloadidentität konfiguriert", + "Configure Workload Identity": "Workloadidentität konfigurieren", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Die folgenden Azure-Ressourcen werden erstellt, damit sich Ihre GitHub Actions-Pipeline bei Ihrem AKS-Cluster authentifizieren kann:", "Managed Identity": "Verwaltete Identität", + "in resource group": "in Ressourcengruppe", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Verbundanmeldeinformationen", + "OIDC trust for": "OIDC-Vertrauensstellung für", + "branch": "Branch", + "Resource group where the managed identity will be created": "Ressourcengruppe, in der die verwaltete Identität erstellt wird", + "Workload identity configured successfully.": "Die Workloadidentität wurde erfolgreich konfiguriert.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Es kann sich um ein Berechtigungsproblem handeln. Überprüfen Sie Ihre GitHub-App-Berechtigungen, und versuchen Sie es erneut.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Der Vorgang wird möglicherweise noch auf GitHub ausgeführt. Überprüfen Sie den obigen Link auf den aktuellen Status.", + "Try again, or check GitHub for details.": "Versuchen Sie es erneut, oder überprüfen Sie GitHub auf Details.", + "Initializing...": "Initialisierung\u00a0...", + "Checking repository readiness...": "Repositorybereitschaft wird überprüft\u00a0...", + "Loading configuration...": "Konfiguration wird geladen…", + "Unknown error": "Unbekannter Fehler", + "Trigger Copilot Agent": "Copilot-Agent auslösen", + "Create Setup PR": "Setup-PR erstellen", + "Failed to fetch deployment status": "Fehler beim Abrufen von Bereitstellungsprotokollen", + "Failed to fetch pod status": "Fehler beim Abrufen des Podstatus", + "Failed to fetch service status": "Fehler beim Abrufen des Dienststatus", + "Failed to monitor deployment health": "Fehler beim Überwachen der Bereitstellungsintegrität", + "Convert Namespaces to AKS Projects": "Namespaces in AKS-Projekte konvertieren", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Die folgenden Namespaces werden durch Hinzufügen dieser Labels in AKS-Desktopprojekte konvertiert:", "managed namespaces only": "nur verwaltete Namespaces", - "ManagedNamespacePreview feature registered successfully!": "Die Funktion ManagedNamespacePreview wurde erfolgreich registriert!", - "Manual": "Manuell", - "Manual Deploy": "Manuelle Bereitstellung", - "Manually configure settings": "Einstellungen manuell konfigurieren", - "Max replicas": "Maximale Anzahl Replikate", - "Maximum CPU allowed (1000m = 1 CPU core)": "Maximal zulässige CPU(1000m = 1 CPU-Kern)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximal zulässiger Arbeitsspeicher (1024 MiB = 1 GiB)", - "Maximum Replicas": "Maximale Anzahl von Replikaten", - "mebibytes": "Mebibytes", - "Memory": "Arbeitsspeicher", - "Memory limit": "Arbeitsspeicherlimit", - "Memory Limits": "Arbeitsspeicherlimits", - "Memory request": "Speicheranforderung", - "Memory Requests": "Arbeitsspeicheranforderungen", - "Memory Resources": "Arbeitsspeicherressourcen", - "Memory Usage": "Speicherauslastung", - "Memory utilization": "Arbeitsspeicherauslastung", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Cluster {{clusterName}} wird zusammengeführt ({{count}} Namespace(s))", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Cluster {{clusterName}} wird zusammengeführt ({{count}} Namespace(s))", + "Namespaces to convert:": "Zu konvertierende Namespaces:", + "Already AKS projects (will import directly):": "Bereits AKS-Projekte (werden direkt importiert):", + "Converting": "Konvertierung wird durchgeführt", + "Confirm & Import": "Bestätigen und importieren", + "Please select at least one namespace to import": "Mindestens einen zu importierenden Namespace auswählen", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Der Cluster {{clusterName}} muss vor dem Import regulärer Namespaces registriert sein. Importieren Sie zuerst einen verwalteten Namespace aus diesem Cluster.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Cluster {{clusterName}} wird zusammengeführt ({{count}}\u00a0Namespace(s))", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Cluster {{clusterName}} wird zusammengeführt ({{count}}\u00a0Namespace(s))", + "Failed to merge cluster: {{message}}": "Fehler beim Zusammenführen des Clusters: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} wird in ein AKS-Projekt konvertiert (dies kann einen Moment dauern)\u00a0…", + "Failed to convert namespace: {{message}}": "Fehler beim Konvertieren des Namespace: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}} von {{total}} werden importiert: {{name}} aus {{clusterName}}", + "Project '{{name}}' successfully imported": "Projekt „{{name}}“ erfolgreich importiert", + "Namespace '{{name}}' converted and imported as project": "Namespace „{{name}}“ wurde als Projekt konvertiert und importiert.", + "Successfully merged {{count}} cluster(s)_one": "{{count}}\u00a0Cluster wurde(n) erfolgreich zusammengeführt.", + "Successfully merged {{count}} cluster(s)_other": "{{count}}\u00a0Cluster wurde(n) erfolgreich zusammengeführt.", + "with {{count}} project(s)_one": "mit {{count}}\u00a0Projekt(en)", + "with {{count}} project(s)_other": "mit {{count}}\u00a0Projekt(en)", + "{{count}} failed._one": "{{count}} fehlgeschlagen.", + "{{count}} failed._other": "{{count}} fehlgeschlagen.", + "Failed to import any projects. See details below.": "Fehler beim Importieren von Projekten. Weitere Informationen finden Sie weiter unten.", + "Import AKS Projects": "Importieren von AKS-Projekten", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importieren Sie vorhandene verwaltete Namespaces und reguläre Namespaces als Projekte. Namespaces, die noch keine AKS-Desktopprojekte sind, werden durch Hinzufügen des erforderlichen Projektlabels konvertiert.", + "Select Namespaces to Import": "Zu importierende Namespaces auswählen", + "{{count}} selected_one": "{{count}} ausgewählt", + "{{count}} selected_other": "{{count}} ausgewählt", + "Select All": "Alles auswählen", + "Deselect All": "Gesamte Auswahl aufheben", + "AKS Managed": "von AKS verwaltet", + "Regular": "Regulär", + "AKS Project?": "AKS-Projekt?", + "Yes": "Ja", + "No": "Nein", + "Importing": "Import wird ausgeführt", + "Import Selected Projects": "Ausgewählte Projekte importieren", + "Failed to fetch managed namespaces": "Fehler beim Abrufen verwalteter Namespaces", + "Failed to fetch managed namespace details": "Fehler beim Abrufen der Details des verwalteten Namespaces", + "Failed to update managed namespace": "Fehler beim Aktualisieren des verwalteten Namespace", + "Updating": "Wird aktualisiert", + "Update": "Aktualisieren", + "AKS desktop logo": "AKS-Desktoplogo", + "No Deployments Found": "Keine Bereitstellungen gefunden", + "There are no deployments in this project namespace yet.": "Dieser Projektnamespace enthält noch keine Bereitstellungen.", + "Deploy an application to view logs.": "Stellen Sie eine Anwendung bereit, um Protokolle anzuzeigen.", "Metrics": "Metriken", + "CPU Usage": "CPU-Auslastung", + "Memory Usage": "Speicherauslastung", + "Request Rate": "Anforderungsrate", + "Error Rate": "Fehlerquote", "Metrics refreshed every 30 seconds": "Metriken werden alle 30 Sekunden aktualisiert", + "Select a deployment to view metrics": "Eine Bereitstellung zum Anzeigen von Metriken auswählen", "Metrics Unavailable": "Metriken nicht verfügbar", - "millicores": "Millicore", - "Min replicas": "Mindestanzahl Replikate", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Mindestanzahl aufeinanderfolgenden Erfolge, damit der Test als erfolgreich gilt, nachdem er fehlgeschlagen ist. Der Standardwert ist 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Garantierte Mindest-CPU (1000m = 1 CPU-Kern)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Garantierter Mindestarbeitsspeicher (1024 MiB = 1 GiB)", - "Minimum Replicas": "Mindestanzahl der Replikaten", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Erforderlicher Azure-Kontext fehlt. Stellen Sie sicher, dass Sie angemeldet sind und der Cluster einem gültigen Abonnement, einer gültigen Ressourcengruppe und einem gültigen Mandanten zugeordnet ist.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Stellt das Stammdateisystem des Containers als schreibgeschützt bereit, um Schreibvorgänge zu verhindern.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Stellt das Stammdateisystem des Containers als schreibgeschützt bereit, um Schreibvorgänge zu verhindern. Dadurch wird die Sicherheit erhöht, indem verhindert wird, dass bösartiger Code Systemdateien ändert.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Unterstützung mehrerer Dateien (Bereitstellungen, Dienste, Eingang usw.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten und muss mit einem alphanumerischen Zeichen beginnen und enden.", - "Name": "Name", - "Namespace": "Namespace", - "Namespace '{{name}}' converted and imported as project": "Namespace „{{name}}“ wurde als Projekt konvertiert und importiert.", - "Namespace created successfully!": "Namespace erfolgreich erstellt!", - "Namespace Created Successfully!": "Namespace erfolgreich erstellt!", - "Namespace creation API succeeded, proceeding with user assignments": "Die Namespaceerstellungs-API wurde erfolgreich erstellt, und die Benutzerzuweisungen werden fortgesetzt", - "Namespace creation completed successfully! Adding user access": "Die Namespaceerstellung wurde erfolgreich abgeschlossen! Der Benutzerzugriff wird hinzugefügt", - "Namespace Creation Failed": "Fehler bei der Namespaceerstellung", - "Namespace creation failed: {{message}}": "Fehler bei der Namespaceerstellung: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Die Namespaceerstellung wurde initiiert! Den Erstellungsstatus überwachen", - "Namespace Name": "Namespacename", - "Namespace name is required": "Namespacename ist erforderlich", - "Namespace name must be 63 characters or fewer": "Der Namespacename darf höchstens 63 Zeichen lang sein.", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Der Namespacename darf nur aus Kleinbuchstaben, Zahlen und Bindestrichen bestehen und muss mit einem alphanumerischen Zeichen beginnen und enden.", - "Namespace status check failed: {{message}}": "Fehler bei der Namespacestatusüberprüfung: {{message}}", - "Namespace status verification failed: {{message}}": "Fehler bei der Überprüfung des Namespacestatus: {{message}}", - "namespace: {{namespace}}": "Namespace: {{namespace}}", - "Namespaces to convert:": "Zu konvertierende Namespaces:", + "Application Metrics": "Anwendungsmetriken", + "Request & error rate": "Anforderungsfehlerrate", + "No data available": "Keine Daten verfügbar", + "Response Time": "Antwortzeit", + "Memory utilization": "Arbeitsspeicherauslastung", "Network I/O": "Netzwerk-E/A", + "Deploy an application to start viewing metrics.": "Stellen Sie eine Anwendung bereit, um mit der Anzeige von Metriken zu beginnen.", + "Please select a deployment to view metrics": "Eine Bereitstellung auswählen, um Metriken anzuzeigen", + "Project Status": "Projektstatus", + "Total Pods": "Gesamtzahl der Pods", + "Application Health": "Anwendungsintegrität", + "Loading metrics": "Metriken werden geladen", + "Resource Usage": "Ressourcenverwendung", + "Avg Response Time": "Durchschnittliche Antwortzeit", + "No response time data available": "Keine Antwortzeitdaten verfügbar", + "Absolute usage": "Absoluter Verbrauch", "Network In": "Eingehender Netzwerkdatenverkehr", "Network Out": "Ausgehender Netzwerkdatenverkehr", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Die Netzwerkrichtlinien-Engine kann nach der Clustererstellung nicht mehr geändert werden. Erstellen Sie einen neuen Cluster mit", - "Networking": "Netzwerk", - "Networking Policies": "Netzwerkrichtlinien", - "New Project": "Neues Projekt", - "Next": "Weiter", - "No": "Nein", - "No AKS clusters found in this subscription.": "In diesem Abonnement wurden keine AKS-Cluster gefunden.", - "No cluster is associated with this project.": "Diesem Projekt ist kein Cluster zugeordnet.", - "No clusters found. Register a cluster first.": "Keine Cluster gefunden. Registrieren Sie zuerst einen Cluster.", - "No clusters in this project.": "Dieses Projekt enthält keine Cluster.", - "No clusters with Azure Entra ID authentication found for this subscription": "Für dieses Abonnement wurden keine Cluster mit Azure Entra ID-Authentifizierung gefunden", - "No data available": "Keine Daten verfügbar", - "No deployments found": "Keine Bereitstellungen gefunden", - "No Deployments Found": "Keine Bereitstellungen gefunden", - "No deployments found in this namespace.": "In diesem Namespace wurden keine Bereitstellungen gefunden.", - "No description provided": "Keine Beschreibung angegeben", - "No eligible clusters found in this subscription.": "In diesem Abonnement wurden keine geeigneten Cluster gefunden.", - "No Kubernetes expertise required to get started": "Für den Einstieg sind keine Kubernetes-Kompetenzen erforderlich", - "No options": "Keine Optionen", - "No pipeline runs yet.": "Es wird noch keine Pipeline ausgeführt.", - "No pods found for deployment \"{{name}}\"": "Für die Bereitstellung „{{name}}“ wurden keine Pods gefunden", - "No repositories found": "Keine Repositorys gefunden", - "No repositories match your filter": "Keine Repositorys entsprechen Ihrem Filter", - "No response time data available": "Keine Antwortzeitdaten verfügbar", - "No scaling data available": "Keine Skalierungsdaten verfügbar", - "No subscriptions found": "Keine Abonnements gefunden", - "Not specified": "Nicht angegeben", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Hinweis: Bei verwalteten AKS-Namespaces wird die Azure ARM-Verwaltung automatisch entfernt.", - "Number of Replicas": "Anzahl von Replikaten", - "Number of seconds after the container has started before liveness probes are initiated.": "Anzahl von Sekunden nach dem Start des Containers, bevor Livetests initiiert werden.", - "Number of seconds after the container has started before readiness probes are initiated.": "Anzahl von Sekunden nach dem Start des Containers, bevor Bereitschaftstests initiiert werden.", - "Number of seconds after the container has started before startup probes are initiated.": "Anzahl von Sekunden nach dem Start des Containers, bevor Starttests initiiert werden.", - "Number of seconds after which the probe times out. Default is 1 second.": "Die Anzahl von Sekunden bis zum Timeout des Tests. Der Standardwert beträgt 1 Sekunde.", - "OIDC trust for": "OIDC-Vertrauensstellung für", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Sobald der Agent den Bereitstellungs-PR erstellt hat, überprüfen Sie die generierten Dateien, und führen Sie diese zusammen, um die Bereitstellungspipeline zu starten.", - "Only clusters with Azure Entra ID authentication are shown.": "Es werden nur Cluster mit Azure Entra ID-Authentifizierung angezeigt.", - "Performing final status verification": "Abschließende Statusüberprüfung wird ausgeführt", - "periodSeconds": "periodSeconds", - "Pipeline": "Pipeline", - "Pipeline configured": "Pipeline konfiguriert", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Schließen Sie die Authentifizierung in Ihrem Browser ab. Dieses Fenster wird automatisch umgeleitet, sobald die Anmeldung abgeschlossen ist.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Bitte registrieren Sie das, um fortzufahren.", - "Please review all the settings before creating your AKS project": "Überprüfen Sie alle Einstellungen, bevor Sie Ihr AKS-Projekt erstellen", - "Please select a deployment to view metrics": "Eine Bereitstellung auswählen, um Metriken anzuzeigen", - "Please select a subscription first": "Wählen Sie zuerst ein Abonnement aus", - "Please select at least one namespace to import": "Mindestens einen zu importierenden Namespace auswählen", - "Please sign in to Azure to continue.": "Melden Sie sich bei Azure an, um fortzufahren.", "Pod Details": "Poddetails", "Pod Name": "Podname", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Planen Sie Pods auf verschiedenen Knoten vor, um die Verfügbarkeit und Fehlertoleranz zu verbessern.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Planen Sie Pods bevorzugt auf verschiedenen Knoten, um die Verfügbarkeit und Fehlertoleranz zu verbessern. Dadurch wird sichergestellt, dass Pods über den Cluster verteilt werden.", - "Preview and basic validation before apply": "Vorschau und grundlegende Validierung vor der Anwendung", - "Preview Features": "Vorschaufunktionen", - "Project '{{name}}' successfully imported": "Projekt „{{name}}“ erfolgreich importiert", - "Project Basics": "Projektgrundlagen", - "Project Created Successfully!": "Das Projekt wurde erfolgreich erstellt!", - "Project creation completed successfully!": "Projekterstellung erfolgreich abgeschlossen", - "Project Creation Failed": "Fehler bei der Projekterstellung", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Timeout bei der Projekterstellung nach 10 Minuten. Überprüfen Sie, ob der Namespace erstellt wurde, und versuchen Sie es noch mal.", - "Project Description": "Projektbeschreibung", - "Project Name": "Projektname", - "Project name is available": "Der Projektname ist verfügbar", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Der Projektname darf nur Kleinbuchstaben, Ziffern und Bindestriche (keine Leerzeichen) enthalten", - "Project Status": "Projektstatus", - "Pull requests": "Pull Requests", - "Push agent config files": "Push-Agent-Konfigurationsdateien", - "Re-deploy": "Erneut bereitstellen", - "Read only root filesystem": "Schreibgeschütztes Stammdateisystem", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Schreibgeschützter Zugriff auf die meisten Objekte in einem Namespace. Kann Rollen, Rollenbindungen oder Geheimnisse nicht anzeigen.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Lese-/Schreibzugriff auf die meisten Objekte in einem Namespace. Kann Rollen oder Rollenbindungen nicht anzeigen oder ändern. Kann auf Geheimnisse zugreifen und Pods als beliebiges ServiceAccount im Namespace ausführen.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Lese-/Schreibzugriff auf die meisten Ressourcen in einem Namespace. Kann Rollen und Rollenbindungen innerhalb des Namespace erstellen. Kann nicht in das Ressourcenkontingent oder den Namespace selbst schreiben.", - "Readiness path": "Bereitschaftspfad", - "Ready": "Bereit", - "Refresh": "Aktualisieren", - "Refreshing": "Wird aktualisiert", - "Register AKS Cluster": "AKS-Cluster registrieren", - "Register Cluster": "Cluster registrieren", - "Register ManagedNamespacePreview Feature": "Die Funktion ManagedNamespacePreview registrieren", - "Registering": "Wird registriert", - "Registering cluster": "Cluster wird registriert", - "Regular": "Regulär", - "Regular Kubernetes namespace": "Namespace für reguläres Kubernetes", - "remove": "entfernen", - "Remove assignee": "Zugewiesene Person entfernen", - "Reopen install page": "Installationsseite erneut öffnen", - "Replica Bounds": "Replikatgrenzen", - "Replicas": "Replikate", - "Request & error rate": "Anforderungsfehlerrate", - "Request Rate": "Anforderungsrate", - "Requests": "Anforderungen", - "Required Permissions": "Erforderliche Berechtigungen", - "Resource Group": "Ressourcengruppe", - "Resource group where the managed identity will be created": "Ressourcengruppe, in der die verwaltete Identität erstellt wird", - "Resource Limits": "Ressourcengrenzwerte", - "Resource Usage": "Ressourcenverwendung", - "Resources to be deployed ({{count}} object)_one": "Bereitzustellende Ressourcen ({{count}} Objekt)", - "Resources to be deployed ({{count}} object)_other": "Bereitzustellende Ressourcen ({{count}} Objekt)", - "Response Time": "Antwortzeit", "Restarts": "Neustarts", - "Retry": "Wiederholen", - "Review": "Überprüfen", - "Review & Deploy": "Überprüfen und bereitstellen", - "Review & Merge": "Überprüfen und zusammenführen", - "Review and merge the setup PR to enable the Copilot agent.": "Überprüfen Sie den Setup-PR, und führen Sie diesen zusammen, um den Copilot-Agent zu aktivieren.", - "Review on GitHub": "Vorschau in GitHub", - "Review Project Configuration": "Projektkonfiguration überprüfen", - "Role": "Rolle", - "Role Assignment": "Rollenzuweisung", - "Run as non root user": "Als Nicht-Root-Benutzer ausführen", - "Run deployment workflows": "Bereitstellungsworkflows ausführen", - "Save": "Speichern", - "Scaled down": "Herunterskaliert", - "Scaling": "Wird skaliert", + "No pods found for deployment \"{{name}}\"": "Für die Bereitstellung „{{name}}“ wurden keine Pods gefunden", + "Preview Features": "Vorschaufunktionen", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Aktivieren oder deaktivieren Sie Funktionen, die sich noch in der Entwicklung befinden. Vorschaufunktionen können in zukünftigen Versionen geändert oder entfernt werden.", + "GitHub Pipelines": "GitHub-Pipelines", + "Enable GitHub-based deployment pipelines for AKS projects.": "Aktivieren Sie GitHub-basierte Bereitstellungspipelines für AKS-Projekte.", + "Loading scaling metrics from Prometheus": "Laden von Skalierungsmetriken aus Prometheus", "Scaling Chart Unavailable": "Skalierungsdiagramm nicht verfügbar", - "Scaling History (Last 24 Hours)": "Skalierungsverlauf (letzte 24 Stunden)", + "No scaling data available": "Keine Skalierungsdaten verfügbar", + "Edit HPA Configuration": "HPA-Konfiguration bearbeiten", + "Edit Manual Scaling Configuration": "Manuelle Skalierungskonfiguration bearbeiten", + "Minimum Replicas": "Mindestanzahl der Replikaten", + "Maximum Replicas": "Maximale Anzahl von Replikaten", + "Target CPU Utilization (%)": "Gezielte CPU-Auslastung (%)", + "Number of Replicas": "Anzahl von Replikaten", + "Set the desired number of pod replicas for this deployment": "Die gewünschte Anzahl von Podreplikaten für diese Bereitstellung festlegen", + "Save": "Speichern", "Scaling Mode": "Skalierungsmodus", - "Scaling Overview": "Skalierungsübersicht", - "Search clusters": "Cluster durchsuchen", - "Search subscriptions": "Abonnements durchsuchen", - "Select a cluster": "Cluster auswählen", - "Select a deployment to view metrics": "Eine Bereitstellung zum Anzeigen von Metriken auswählen", + "Current Replicas": "Aktuelle Replikate", + "Desired Replicas": "Gewünschte Replikate", + "Configured Replicas": "Replikate wurden konfiguriert", + "Replica Bounds": "Replikatgrenzen", + "Available Replicas": "Verfügbare Replikate", + "CPU Usage / Target": "CPU-Auslastung/ Ziel", + "Scaling": "Wird skaliert", "Select a deployment to view scaling metrics": "Eine Bereitstellung zum Anzeigen von Skalierungsmetriken auswählen", - "Select a subscription": "Abonnement auswählen", - "Select All": "Alles auswählen", - "Select an AKS cluster": "AKS-Cluster auswählen", - "Select an Azure subscription": "Wählen Sie ein Azure-Abonnement aus.", - "Select an option": "Eine Option auswählen", + "Scaling Overview": "Skalierungsübersicht", + "Edit Configuration": "Konfiguration bearbeiten", + "Scaling History (Last 24 Hours)": "Skalierungsverlauf (letzte 24\u00a0Stunden)", + "Copied!": "Kopiert!", + "Copy": "Kopieren", + "Copy to clipboard": "In Zwischenablage kopieren", + "No deployments found": "Keine Bereitstellungen gefunden", "Select Deployment": "Bereitstellung auswählen", - "Select Namespaces to Import": "Zu importierende Namespaces auswählen", - "Select repository": "Repository auswählen", - "Select Source": "Quelle auswählen", - "Selected Cluster Details": "Details zum ausgewählten Cluster", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Der ausgewählte Cluster fehlt in kubeconfig. Registrieren Sie ihn, bevor Sie fortfahren.", - "Service port": "Dienstport", - "Service type": "Diensttyp", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Legen Sie CPU- und Arbeitsspeicheranforderungen (garantierte Ressourcen) und Grenzwerte (maximale Ressourcen) fest, um die Ressourcenzuordnung zu steuern und zu verhindern, dass Container zu viele Clusterressourcen verbrauchen.", - "Set quota limits to prevent overuse and maintain cluster stability": "Kontingentgrenzen festlegen, um eine übermäßige Nutzung zu verhindern und die Clusterstabilität aufrechtzuerhalten", - "Set security, communication and access rules for incoming and outgoing traffic": "Sicherheits-, Kommunikations- und Zugriffsregeln für eingehenden und ausgehenden Datenverkehr festlegen", - "Set the desired number of pod replicas for this deployment": "Die gewünschte Anzahl von Podreplikaten für diese Bereitstellung festlegen", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "CI/CD-Pipeline zum Automatisieren Ihrer Bereitstellungen und Optimieren Ihres Workflows einrichten", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Ein neues Projekt in Azure Kubernetes Service (AKS) einrichten und konfigurieren", - "Set up Copilot Agent": "Copilot-Agent einrichten", - "Set up your pipeline": "Pipeline einrichten", - "Setting up Copilot agent...": "Copilot-Agent wird eingerichtet...", - "Setup PR Created": "Setup-PR erstellt", - "Setup PR reviewed and merged": "Setup-PR überprüft und zusammengeführt", - "Sign in": "Anmelden", - "Sign in to GitHub": "Bei GitHub anmelden", - "Sign in to GitHub to view pipeline runs.": "Melden Sie sich bei GitHub an, um Pipelineausführungen anzuzeigen.", - "Sign in with Azure": "Mit Azure anmelden", - "Sign in with your Azure account to manage AKS clusters and resources": "Melden Sie sich mit Ihrem Azure-Konto an, um AKS-Cluster und -Ressourcen zu verwalten", - "Source": "Quelle", - "Starting project creation": "Die Projekterstellung wird gestartet", - "Startup path": "Startpfad", - "Status": "Status", - "Subscription": "Abonnement", - "Successfully merged {{count}} cluster(s)_one": "{{count}} Cluster wurde(n) erfolgreich zusammengeführt.", - "Successfully merged {{count}} cluster(s)_other": "{{count}} Cluster wurde(n) erfolgreich zusammengeführt.", - "successThreshold": "successThreshold", - "Target CPU utilization": "Gezielte CPU-Auslastung", - "Target CPU Utilization (%)": "Gezielte CPU-Auslastung (%)", - "Target port": "Zielport", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Der Agent hat den Bereitstellungs-PR erstellt. Überprüfen Sie die generierten Dateien, und führen Sie diese zusammen, um die Bereitstellungspipeline zu starten.", - "The agent is creating the setup PR to enable the Copilot agent.": "Der Agent erstellt den Setup-PR, um den Copilot-Agent zu aktivieren.", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Die AKS-Desktop-GitHub-App muss auf installiert {{repoName}} sein, um den Vorgang fortzusetzen.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Die aks-preview-Erweiterung ist erforderlich, um verwaltete Namespaces zu erstellen. Installieren Sie sie, um den Vorgang fortzusetzen.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Der Copilot-Progammierungs-Agent analysiert Ihr Repository und generiert einen Bereitstellungs-PR mit Dockerfile, Kubernetes-Manifesten und einem GitHub Actions-Workflow.", - "The following addons can be enabled on this cluster:": "Die folgenden Add-Ons können in diesem Cluster aktiviert werden:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Die folgenden Azure-Ressourcen werden erstellt, damit sich Ihre GitHub Actions-Pipeline bei Ihrem AKS-Cluster authentifizieren kann:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Die folgenden Namespaces werden durch Hinzufügen dieser Labels in AKS-Desktopprojekte konvertiert:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Der HTTP-Pfad, der auf Liveness überprüft werden soll (z. B. /healthz). Für diesen Test wird eine HTTP GET-Anforderung für diesen Pfad ausgeführt.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Der HTTP-Pfad, der auf Bereitschaft überprüft werden soll (z. B. /ready). Für diesen Test wird eine HTTP GET-Anforderung für diesen Pfad ausgeführt.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Der HTTP-Pfad, der auf den Start überprüft werden soll (z. B. /startup). Für diesen Test wird eine HTTP GET-Anforderung für diesen Pfad ausgeführt.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Die Funktion ManagedNamespacePreview muss registriert werden, um verwaltete Namespaces zu erstellen.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Die maximale CPU-Menge, die der Container verwenden kann. Wenn dieser Wert überschritten wird, wird der Container gedrosselt.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Die maximale Speichermenge, die der Container verwenden kann. Wenn dieser Wert überschritten wird, wird der Container beendet (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Die maximale Anzahl von Podreplikaten, auf die HPA hochskaliert werden kann, wenn die CPU-Auslastung hoch ist.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Die dem Container garantierte Mindestmenge an CPU-Leistung. Kubernetes plant den Pod auf einem Knoten ein, auf dem mindestens diese Menge an CPU-Leistung verfügbar ist.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Die Mindestmenge an Speicher, die dem Container garantiert wird. Kubernetes plant den Pod auf einem Knoten ein, auf dem mindestens diese Speichermenge verfügbar ist.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Die Mindestanzahl von Podreplikaten, die HPA selbst bei geringer CPU-Auslastung verwalten wird.", - "The namespace will be created on the selected cluster and set up as a project": "Der Namespace wird auf dem ausgewählten Cluster erstellt und als Projekt eingerichtet.", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Die Anzahl der auszuführenden Podreplikate. Mehr Replikate bieten eine bessere Verfügbarkeit und Lastenverteilung.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Der Vorgang wird möglicherweise noch auf GitHub ausgeführt. Überprüfen Sie den obigen Link auf den aktuellen Status.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Die Portnummer, die vom Kubernetes-Dienst verfügbar gemacht wird. An diesen Port gerichteten Datenverkehr wird an den Zielport weitergeleitet.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Die Portnummer, die von Ihrem Container überwacht wird. Dies ist der Port innerhalb des Containers, in dem Ihre Anwendung ausgeführt wird.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Der durchschnittliche CPU-Auslastungsprozentsatz des Ziels für alle Pods. HPA wird zentral hochskaliert, wenn die CPU-Auslastung diesen Wert überschreitet, und herunterskaliert, wenn dieser Wert darunter liegt.", - "There are no deployments in this project namespace yet.": "Dieser Projektnamespace enthält noch keine Bereitstellungen.", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Der Vorgang dauert länger als erwartet. Überprüfen Sie in GitHub den aktuellen PR-Status.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Es kann sich um ein Berechtigungsproblem handeln. Überprüfen Sie Ihre GitHub-App-Berechtigungen, und versuchen Sie es erneut.", - "This PR was closed without merging. You may need to restart the process.": "Dieser PR wurde ohne Zusammenführen geschlossen. Möglicherweise müssen Sie den Prozess neu starten.", - "This typically takes 10–25 minutes.": "In der Regel dauert dies 10–25 Minuten.", - "timeoutSeconds": "TimeoutSeconds", - "Total Pods": "Gesamtzahl der Pods", - "Track agent progress": "Agent-Fortschritt nachverfolgen", - "Trigger": "Trigger", - "Trigger Copilot Agent": "Copilot-Agent auslösen", - "Triggering...": "Auslösen ...", - "Try again, or check GitHub for details.": "Versuchen Sie es erneut, oder überprüfen Sie GitHub auf Details.", - "Type": "Typ", - "Unknown error": "Unbekannter Fehler", - "unnamed": "unbenannt", - "Up next": "Als Nächstes", - "Update": "Aktualisieren", - "Updating": "Wird aktualisiert", - "Updating local settings": "Lokale Einstellungen werden aktualisiert", - "Upload files": "Dateien hochladen", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Verwenden Sie ClusterIP. Am besten geeignet für Dienste, die nur innerhalb des Clusters erreichbar sind.", - "Use custom service port": "Benutzerdefinierten Dienstport verwenden", - "Use existing manifests for full control": "Vorhandene Manifeste für Vollzugriff verwenden", - "User assignment completed with errors": "Benutzerzuweisung mit Fehlern abgeschlossen", - "Validation failed": "Fehler bei der Überprüfung", - "Value": "Wert", - "View deployment": "Bereitstellung anzeigen", - "View on GitHub": "In GitHub anzeigen", - "View run on GitHub": "Ausführung auf GitHub anzeigen", - "View workflow run": "Workflowausführung anzeigen", - "VPA (Vertical Pod Autoscaler)": "VPA (Automatische vertikale Podskalierung)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Es wird auf den Start des Agentworkflows gewartet ...", - "Waiting for browser authorization...": "Es wird auf die Browserautorisierung gewartet ...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Es wird auf den Abschluss der Anmeldung gewartet... ({{minutes}} Minuten verbleibend)", - "Waiting for namespace to be created": "Es wird auf die Erstellung des Namespace gewartet", - "Waiting for namespace to propagate": "Es wird auf die Verteilung des Namespace gewartet", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Warnung: Diese Aktion kann nicht rückgängig gemacht werden. Alle Ressourcen in diesen Namespaces werden dauerhaft gelöscht.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Wenn ein Test fehlschlägt, führt Kubernetes viele Wiederholungsversuche durch, bevor Vorgang abgebrochen oder der Container aufgegeben und neu gestartet wird.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Wenn ein Test fehlschlägt, führt Kubernetes viele Wiederholungsversuche durch, bevor der Vorgang abgebrochen wird. Bei Starttests bestimmt diese Einstellung die Wartezeit vor dem Neustart.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Wenn ein Test fehlschlägt, führt Kubernetes viele Wiederholungsversuche durch, bevor der Pod als nicht bereit markiert wird.", - "with {{count}} project(s)_one": "mit {{count}} Projekt(en)", - "with {{count}} project(s)_other": "mit {{count}} Projekt(en)", - "with the following parameters:": "mit den folgenden Parametern:", - "Wizard steps": "Assistentenschritte", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Die Workflowverteilung wurde erfolgreich ausgelöst. Überprüfen Sie den Status der GitHub Actions.", - "workflow on": "Workflow-ID", - "Workflows": "Workflows", - "Workload identity configured": "Workloadidentität konfiguriert", - "Workload identity configured successfully.": "Die Workloadidentität wurde erfolgreich konfiguriert.", - "Workloads": "Workloads", - "Yes": "Ja", - "You can collapse this panel. Progress is saved and will resume when you return.": "Sie können diesen Bereich reduzieren. Der Fortschritt wird gespeichert und der Vorgang wird fortgesetzt, wenn Sie zurückkehren.", - "You need to be logged in to Azure to register AKS clusters.": "Sie müssen bei Azure angemeldet sein, um AKS-Cluster zu registrieren.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Ihr AKS-Projekt „{{projectName}}“ wurde erstellt und kann jetzt verwendet werden.", - "Your project \"{{projectName}}\" is ready to use.": "Ihr Projekt „{{projectName}}“ ist einsatzbereit." + "Loading deployments": "Bereitstellungen werden geladen", + "No cluster is associated with this project.": "Diesem Projekt ist kein Cluster zugeordnet.", + "Please sign in to Azure to continue.": "Melden Sie sich bei Azure an, um fortzufahren.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Erforderlicher Azure-Kontext fehlt. Stellen Sie sicher, dass Sie angemeldet sind und der Cluster einem gültigen Abonnement, einer gültigen Ressourcengruppe und einem gültigen Mandanten zugeordnet ist.", + "Failed to load Azure context": "Fehler beim Laden des Azure-Kontexts", + "just now": "gerade eben", + "{{seconds}}s ago": "vor {{seconds}} Sekunde(n)", + "{{minutes}} min ago": "Vor {{minutes}} Min.", + "{{hours}}h ago": "Vor {{hours}} Stunde(n)", + "{{days}}d ago": "Vor {{days}} Tag(en)", + "{{weeks}}w ago": "Vor {{weeks}} Woche(n)" } diff --git a/plugins/aks-desktop/locales/en/translation.json b/plugins/aks-desktop/locales/en/translation.json index 5de7be702..2462839d2 100644 --- a/plugins/aks-desktop/locales/en/translation.json +++ b/plugins/aks-desktop/locales/en/translation.json @@ -1,633 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"AKS Cluster User Role\" scoped to the resource group", - "(already enabled)": "(already enabled)", + "Failed to load subscriptions": "Failed to load subscriptions", + "Failed to load AKS clusters": "Failed to load AKS clusters", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster '{{cluster}}' successfully merged in kubeconfig", + "Failed to register cluster: {{message}}": "Failed to register cluster: {{message}}", + "Register AKS Cluster": "Register AKS Cluster", + "Checking authentication status": "Checking authentication status", + "You need to be logged in to Azure to register AKS clusters.": "You need to be logged in to Azure to register AKS clusters.", + "Subscription": "Subscription", + "Select an Azure subscription": "Select an Azure subscription", + "Loading subscriptions": "Loading subscriptions", + "Loading AKS clusters": "Loading AKS clusters", + "No AKS clusters found in this subscription.": "No AKS clusters found in this subscription.", + "AKS Cluster": "AKS Cluster", + "Select an AKS cluster": "Select an AKS cluster", + "Selected Cluster Details": "Selected Cluster Details", + "Name": "Name", + "Resource Group": "Resource Group", + "Location": "Location", + "Kubernetes Version": "Kubernetes Version", + "Done": "Done", + "Cancel": "Cancel", + "Registering": "Registering", + "Register Cluster": "Register Cluster", + "Initiating Azure login": "Initiating Azure login", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Please complete the authentication in your browser. This window will automatically redirect once login is complete.", + "Login successful! Redirecting": "Login successful! Redirecting", + "Login timeout. Please try again.": "Login timeout. Please try again.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Waiting for login completion... ({{minutes}} minutes remaining)", + "Failed to initiate login: {{message}}": "Failed to initiate login: {{message}}", + "Azure Authentication": "Azure Authentication", + "Sign in with your Azure account to manage AKS clusters and resources": "Sign in with your Azure account to manage AKS clusters and resources", + "Sign in with Azure": "Sign in with Azure", + "Loading Azure account information": "Loading Azure account information", + "Back": "Back", + "Azure Account": "Azure Account", + "Logged in as": "Logged in as", + "Add Cluster from Azure": "Add Cluster from Azure", + "Logging out": "Logging out", + "Log out": "Log out", + "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview requirements not met", + "Dismiss": "Dismiss", + "Configure Pipeline": "Configure Pipeline", + "Loading Azure context...": "Loading Azure context...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.", + "Access": "Access", + "Assign permissions to users who need access to your namespace": "Assign permissions to users who need access to your namespace", + "Assignee": "Assignee", + "Search for a user or remove this entry": "Search for a user or remove this entry", + "Select a user from the search results or enter a valid object ID (UUID)": "Select a user from the search results or enter a valid object ID (UUID)", + "Role": "Role", + "Remove assignee": "Remove assignee", + "Add assignee": "Add assignee", + "Only clusters with Azure Entra ID authentication are shown.": "Only clusters with Azure Entra ID authentication are shown.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} cluster(s) hidden — no Azure Entra ID", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} cluster(s) hidden — no Azure Entra ID", + "No eligible clusters found in this subscription.": "No eligible clusters found in this subscription.", "{{count}} eligible cluster(s) found._one": "{{count}} eligible cluster(s) found.", "{{count}} eligible cluster(s) found._other": "{{count}} eligible cluster(s) found.", - "{{count}} failed._one": "{{count}} failed.", - "{{count}} failed._other": "{{count}} failed.", - "{{count}} min_one": "{{count}} min", - "{{count}} min_other": "{{count}} min", - "{{count}} selected_one": "{{count}} selected", - "{{count}} selected_other": "{{count}} selected", - "{{days}}d ago": "{{days}}d ago", - "{{hours}}h ago": "{{hours}}h ago", - "{{minutes}} min ago": "{{minutes}} min ago", - "{{seconds}}s ago": "{{seconds}}s ago", - "{{weeks}}w ago": "{{weeks}}w ago", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "A cluster must be selected", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.", - "Absolute usage": "Absolute usage", - "Access": "Access", - "Access Control ({{count}} assignee)_one": "Access Control ({{count}} assignee)", - "Access Control ({{count}} assignee)_other": "Access Control ({{count}} assignees)", - "Actions": "Actions", - "Add assignee": "Add assignee", - "Add Cluster from Azure": "Add Cluster from Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.", - "Add variable": "Add variable", - "Advanced": "Advanced", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "After merging, the Copilot agent will analyze your repo and create a deployment PR", - "Agent is working": "Agent is working", - "AKS Cluster": "AKS Cluster", - "AKS desktop logo": "AKS desktop logo", - "AKS Managed": "AKS Managed", - "AKS Preview Extension installed successfully!": "AKS Preview Extension installed successfully!", - "AKS Preview Extension Required": "AKS Preview Extension Required", - "AKS Project?": "AKS Project?", - "All selected addons have been enabled successfully.": "All selected addons have been enabled successfully.", - "All verifications completed successfully!": "All verifications completed successfully!", - "Allow all traffic": "Allow all traffic", - "Allow privilege escalation": "Allow privilege escalation", - "Allow traffic within same namespace": "Allow traffic within same namespace", - "Already AKS projects (will import directly):": "Already AKS projects (will import directly):", - "Also delete the namespaces (this will remove all resources within them)": "Also delete the namespaces (this will remove all resources within them)", - "Another project already exists with same name. Please choose a different name.": "Another project already exists with same name. Please choose a different name.", - "Application Health": "Application Health", - "Application Metrics": "Application Metrics", - "Application name": "Application name", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Applied {{count}} resource(s) successfully.", - "Applied {{count}} resource(s) successfully._other": "Applied {{count}} resource(s) successfully.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Are you sure you want to delete project \"{{projectId}}\"?", - "Assign permissions to users who need access to your namespace": "Assign permissions to users who need access to your namespace", - "Assignee": "Assignee", - "Assigning AKS Cluster User Role...": "Assigning AKS Cluster User Role...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Authorize AKS Desktop to create deployment pipelines in your repository.", - "Auto-generated Deployment and Service manifests": "Auto-generated Deployment and Service manifests", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.", - "Available Replicas": "Available Replicas", - "Avg Response Time": "Avg Response Time", - "Azure Account": "Azure Account", - "Azure Authentication": "Azure Authentication", - "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview requirements not met", - "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor Metrics (Managed Prometheus)", - "Back": "Back", - "Basics": "Basics", - "branch": "branch", - "Bring your own Kubernetes manifests to deploy": "Bring your own Kubernetes manifests to deploy", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "By default, the service port matches the target port. Enable this to use a different port for the service.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "By default, this will remove the Azure managed namespace and project labels from the following namespaces:", - "Cancel": "Cancel", - "Canceling will discard your pipeline progress. Are you sure?": "Canceling will discard your pipeline progress. Are you sure?", - "Cancelled deletion of project {{ projectId }}.": "Cancelled deletion of project {{ projectId }}.", - "Checking authentication status": "Checking authentication status", - "Checking for existing identity...": "Checking for existing identity...", - "Checking if another project exists with same name": "Checking if another project exists with same name", - "Checking merge status...": "Checking merge status...", - "Checking repository readiness...": "Checking repository readiness...", - "Checking...": "Checking...", - "Choose a source for your deployment (container image, repo, etc.).": "Choose a source for your deployment (container image, repo, etc.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.", - "Clear editor": "Clear editor", - "Close": "Close", - "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster '{{cluster}}' successfully merged in kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.", - "Cluster Configuration": "Cluster Configuration", - "Cluster is being deleted. Cannot deploy to this cluster.": "Cluster is being deleted. Cannot deploy to this cluster.", "Cluster is currently updating. Deployment may fail.": "Cluster is currently updating. Deployment may fail.", - "Cluster is deallocated. Please start the cluster before deploying.": "Cluster is deallocated. Please start the cluster before deploying.", - "Cluster is in a failed state. Please check Azure portal.": "Cluster is in a failed state. Please check Azure portal.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Cluster is being deleted. Cannot deploy to this cluster.", "Cluster is still being created. Please wait until creation completes.": "Cluster is still being created. Please wait until creation completes.", + "Cluster is in a failed state. Please check Azure portal.": "Cluster is in a failed state. Please check Azure portal.", "Cluster is stopped. Please start the cluster before deploying.": "Cluster is stopped. Please start the cluster before deploying.", + "Cluster is deallocated. Please start the cluster before deploying.": "Cluster is deallocated. Please start the cluster before deploying.", + "AKS Preview Extension Required": "AKS Preview Extension Required", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "The aks-preview extension is required to create managed namespaces. Please install it to continue.", + "Installing": "Installing", + "Install Extension": "Install Extension", + "AKS Preview Extension installed successfully!": "AKS Preview Extension installed successfully!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "The ManagedNamespacePreview feature must be registered to create managed namespaces.", + "Current state": "Current state", + "Please register it to continue.": "Please register it to continue.", + "Register ManagedNamespacePreview Feature": "Register ManagedNamespacePreview Feature", + "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview feature registered successfully!", + "Project Name": "Project Name", + "Checking if another project exists with same name": "Checking if another project exists with same name", + "Another project already exists with same name. Please choose a different name.": "Another project already exists with same name. Please choose a different name.", + "Project name is available": "Project name is available", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)", + "Project Description": "Project Description", + "Enter project description": "Enter project description", + "Select a subscription": "Select a subscription", + "Search subscriptions": "Search subscriptions", + "No subscriptions found": "No subscriptions found", + "Retry": "Retry", + "Cluster": "Cluster", + "Please select a subscription first": "Please select a subscription first", + "Loading clusters": "Loading clusters", + "Select a cluster": "Select a cluster", + "Search clusters": "Search clusters", + "No clusters with Azure Entra ID authentication found for this subscription": "No clusters with Azure Entra ID authentication found for this subscription", "Cluster Not Ready": "Cluster Not Ready", - "Collapse panel": "Collapse panel", - "Complete authorization on your browser screen": "Complete authorization on your browser screen", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.", - "Compute Quota": "Compute Quota", - "Configuration Complete": "Configuration Complete", - "Configuration Error": "Configuration Error", + "Refreshing": "Refreshing", + "Refresh": "Refresh", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Selected cluster is missing from the kubeconfig. Register it before proceeding.", + "Registering cluster": "Registering cluster", + "Wizard steps": "Wizard steps", + "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor Metrics (Managed Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (Event-Driven Autoscaling)", + "VPA (Vertical Pod Autoscaler)": "VPA (Vertical Pod Autoscaler)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.", - "Configure": "Configure", - "Configure Cluster": "Configure Cluster", - "Configure Container Deployment": "Configure Container Deployment", - "Configure container health probes.": "Configure container health probes.", - "Configure Pipeline": "Configure Pipeline", - "Configure security context settings for the container.": "Configure security context settings for the container.", - "Configure Workload Identity": "Configure Workload Identity", - "Configured Replicas": "Configured Replicas", + "Failed to enable addons": "Failed to enable addons", + "Failed to enable addon: {{error}}": "Failed to enable addon: {{error}}", + "Cluster Configuration": "Cluster Configuration", + "(already enabled)": "(already enabled)", + "The following addons can be enabled on this cluster:": "The following addons can be enabled on this cluster:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Network policy engine cannot be changed after cluster creation. Create a new cluster with", + "for full network policy support.": "for full network policy support.", + "Enabling these addons may incur additional Azure costs.": "Enabling these addons may incur additional Azure costs.", + "Configuration Error": "Configuration Error", + "Configuration Complete": "Configuration Complete", + "All selected addons have been enabled successfully.": "All selected addons have been enabled successfully.", "Configuring cluster... This may take a few minutes.": "Configuring cluster... This may take a few minutes.", - "Configuring federated credential...": "Configuring federated credential...", + "Enabling Addons...": "Enabling Addons...", "Configuring...": "Configuring...", - "Confirm & Import": "Confirm & Import", - "Connect": "Connect", - "Connect GitHub": "Connect GitHub", - "Connect Source": "Connect Source", - "Connect to GitHub": "Connect to GitHub", - "Connected": "Connected", - "Connected to '{{username}}'.": "Connected to '{{username}}'.", - "Connecting to GitHub...": "Connecting to GitHub...", - "Connecting...": "Connecting...", - "Container image": "Container image", - "Container Image": "Container Image", - "Contents": "Contents", - "Continue": "Continue", - "Controls whether a process can gain more privileges than its parent process.": "Controls whether a process can gain more privileges than its parent process.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.", - "Convert Namespaces to AKS Projects": "Convert Namespaces to AKS Projects", - "Converting": "Converting", - "Converting {{name}} to AKS project (this may take a moment)...": "Converting {{name}} to AKS project (this may take a moment)...", - "Copied!": "Copied!", - "Copilot agent": "Copilot agent", - "Copilot agent reviewed your repo and generated deployment PR": "Copilot agent reviewed your repo and generated deployment PR", - "Copy": "Copy", - "Copy to clipboard": "Copy to clipboard", - "CPU": "CPU", - "CPU limit": "CPU limit", - "CPU Limits": "CPU Limits", - "CPU request": "CPU request", - "CPU Requests": "CPU Requests", + "Configure Cluster": "Configure Cluster", + "Compute Quota": "Compute Quota", + "Set quota limits to prevent overuse and maintain cluster stability": "Set quota limits to prevent overuse and maintain cluster stability", "CPU Resources": "CPU Resources", - "CPU Usage": "CPU Usage", - "CPU Usage / Target": "CPU Usage / Target", - "Create a new namespace on an existing cluster and set it up as a project": "Create a new namespace on an existing cluster and set it up as a project", - "Create Application": "Create Application", - "Create deployment PRs": "Create deployment PRs", - "Create Namespace": "Create Namespace", - "Create New Namespace": "Create New Namespace", - "Create Project": "Create Project", - "Create Setup PR": "Create Setup PR", - "Create setup workflow in .github/workflows/": "Create setup workflow in .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Creates a LoadBalancer to expose the application to the internet.", - "Creating managed identity...": "Creating managed identity...", - "Creating namespace": "Creating namespace", - "Creating Namespace": "Creating Namespace", - "Creating Project": "Creating Project", - "Creating setup PR...": "Creating setup PR...", - "Creating the trigger issue for the Copilot coding agent.": "Creating the trigger issue for the Copilot coding agent.", - "Current Replicas": "Current Replicas", - "Current state": "Current state", - "Degraded": "Degraded", + "CPU Requests": "CPU Requests", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimum CPU guaranteed (1000m = 1 CPU core)", + "CPU Limits": "CPU Limits", + "Maximum CPU allowed (1000m = 1 CPU core)": "Maximum CPU allowed (1000m = 1 CPU core)", + "Memory Resources": "Memory Resources", + "Memory Requests": "Memory Requests", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimum memory guaranteed (1024 MiB = 1 GiB)", + "Memory Limits": "Memory Limits", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximum memory allowed (1024 MiB = 1 GiB)", + "Basics": "Basics", + "Networking Policies": "Networking Policies", + "Review": "Review", + "New Project": "New Project", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Set up and configure a new project in Azure Kubernetes Service (AKS)", + "Creating Project": "Creating Project", + "Create Project": "Create Project", + "Loading": "Loading", + "Next": "Next", + "Project Created Successfully!": "Project Created Successfully!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Your AKS project \"{{projectName}}\" has been created and is ready to use.", + "Application name": "Application name", + "Enter application name": "Enter application name", + "Enter a name for your first application to get started with deployment.": "Enter a name for your first application to get started with deployment.", + "Create Application": "Create Application", + "Project Creation Failed": "Project Creation Failed", + "Set security, communication and access rules for incoming and outgoing traffic": "Set security, communication and access rules for incoming and outgoing traffic", + "Allow traffic within same namespace": "Allow traffic within same namespace", + "Allow all traffic": "Allow all traffic", + "Deny all traffic": "Deny all traffic", + "Review Project Configuration": "Review Project Configuration", + "Please review all the settings before creating your AKS project": "Please review all the settings before creating your AKS project", + "Project Basics": "Project Basics", + "Description": "Description", + "No description provided": "No description provided", + "Ingress Policy": "Ingress Policy", + "Egress Policy": "Egress Policy", + "CPU": "CPU", + "Requests": "Requests", + "Limits": "Limits", + "Memory": "Memory", + "Access Control ({{count}} assignee)_one": "Access Control ({{count}} assignee)", + "Access Control ({{count}} assignee)_other": "Access Control ({{count}} assignees)", + "Not specified": "Not specified", + "Select an option": "Select an option", + "No options": "No options", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "Search by name or email...", + "No users found": "No users found", + "Type at least 2 characters to search": "Type at least 2 characters to search", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.", + "Object ID": "Object ID", + "Starting project creation": "Starting project creation", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.", + "Initiating managed namespace creation": "Initiating managed namespace creation", + "Namespace creation failed: {{message}}": "Namespace creation failed: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Namespace creation initiated! Monitoring creation status", + "Waiting for namespace to propagate": "Waiting for namespace to propagate", + "Namespace status check failed: {{message}}": "Namespace status check failed: {{message}}", + "Waiting for namespace to be created": "Waiting for namespace to be created", + "Namespace status verification failed: {{message}}": "Namespace status verification failed: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "Namespace creation API succeeded, proceeding with user assignments", + "Namespace creation completed successfully! Adding user access": "Namespace creation completed successfully! Adding user access", + "User assignment completed with errors": "User assignment completed with errors", + "Project creation completed successfully!": "Project creation completed successfully!", + "Performing final status verification": "Performing final status verification", + "Final status check failed: {{message}}": "Final status check failed: {{message}}", + "Final status verification failed: {{message}}": "Final status verification failed: {{message}}", + "All verifications completed successfully!": "All verifications completed successfully!", + "Failed to create project": "Failed to create project", + "A cluster must be selected": "A cluster must be selected", + "Namespace name is required": "Namespace name is required", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character", + "Namespace name must be 63 characters or fewer": "Namespace name must be 63 characters or fewer", + "Creating namespace": "Creating namespace", + "Updating local settings": "Updating local settings", + "Namespace created successfully!": "Namespace created successfully!", + "Failed to create namespace": "Failed to create namespace", + "No clusters found. Register a cluster first.": "No clusters found. Register a cluster first.", + "Namespace Name": "Namespace Name", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character", + "The namespace will be created on the selected cluster and set up as a project": "The namespace will be created on the selected cluster and set up as a project", + "Type": "Type", + "Regular Kubernetes namespace": "Regular Kubernetes namespace", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.", + "Create New Namespace": "Create New Namespace", + "Create a new namespace on an existing cluster and set it up as a project": "Create a new namespace on an existing cluster and set it up as a project", + "Creating Namespace": "Creating Namespace", + "Namespace Creation Failed": "Namespace Creation Failed", + "Namespace Created Successfully!": "Namespace Created Successfully!", + "Your project \"{{projectName}}\" is ready to use.": "Your project \"{{projectName}}\" is ready to use.", + "Go To Projects": "Go To Projects", + "Create Namespace": "Create Namespace", "Delete project": "Delete project", "Delete Project": "Delete Project", + "Are you sure you want to delete project \"{{projectId}}\"?": "Are you sure you want to delete project \"{{projectId}}\"?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "By default, this will remove the Azure managed namespace and project labels from the following namespaces:", + "Also delete the namespaces (this will remove all resources within them)": "Also delete the namespaces (this will remove all resources within them)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.", "Delete Project & Namespaces": "Delete Project & Namespaces", - "Deleted project {{ projectId }}.": "Deleted project {{ projectId }}.", "Deleting project {{ projectId }}…": "Deleting project {{ projectId }}…", - "Deny all traffic": "Deny all traffic", - "Deploy": "Deploy", - "Deploy {{repo}}": "Deploy {{repo}}", - "Deploy an application to start viewing metrics.": "Deploy an application to start viewing metrics.", - "Deploy an application to view logs.": "Deploy an application to view logs.", + "Cancelled deletion of project {{ projectId }}.": "Cancelled deletion of project {{ projectId }}.", + "Deleted project {{ projectId }}.": "Deleted project {{ projectId }}.", + "Error deleting project {{ projectId }}.": "Error deleting project {{ projectId }}.", "Deploy Application": "Deploy Application", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Deploy from Azure Container Registry, Docker Hub, or GHCR", + "Failed to load pipeline runs": "Failed to load pipeline runs", + "Pipeline": "Pipeline", + "Set up your pipeline": "Set up your pipeline", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Set up a CI/CD pipeline to automate your deployments and streamline your workflow", + "Waiting for browser authorization...": "Waiting for browser authorization...", + "Sign in to GitHub to view pipeline runs.": "Sign in to GitHub to view pipeline runs.", + "Connecting...": "Connecting...", + "No pipeline runs yet.": "No pipeline runs yet.", + "View on GitHub": "View on GitHub", + "View run on GitHub": "View run on GitHub", + "Healthy": "Healthy", + "Scaled down": "Scaled down", + "Degraded": "Degraded", + "VS Code": "VS Code", + "Manual": "Manual", + "Manual Deploy": "Manual Deploy", + "Deploy {{repo}}": "Deploy {{repo}}", "Deploy via Pipeline": "Deploy via Pipeline", - "Deploying": "Deploying", + "No deployments found in this namespace.": "No deployments found in this namespace.", "Deployment": "Deployment", - "Deployment PR": "Deployment PR", - "Deployment PR Ready": "Deployment PR Ready", - "Deployment PR reviewed and merged": "Deployment PR reviewed and merged", - "Deployment source": "Deployment source", - "Description": "Description", - "Deselect All": "Deselect All", - "Desired Replicas": "Desired Replicas", - "Discard": "Discard", - "Dismiss": "Dismiss", - "Distributes pods evenly across nodes to improve workload distribution.": "Distributes pods evenly across nodes to improve workload distribution.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.", - "Done": "Done", - "Edit Configuration": "Edit Configuration", + "Source": "Source", + "Replicas": "Replicas", + "Ready": "Ready", + "Status": "Status", + "Actions": "Actions", "Edit deployment": "Edit deployment", - "Edit HPA Configuration": "Edit HPA Configuration", - "Edit Manual Scaling Configuration": "Edit Manual Scaling Configuration", - "Egress Policy": "Egress Policy", + "View workflow run": "View workflow run", + "Re-deploy": "Re-deploy", + "Failed to trigger deployment": "Failed to trigger deployment", + "Trigger": "Trigger", + "workflow on": "workflow on", + "with the following parameters:": "with the following parameters:", + "Namespace": "Namespace", + "Sign in": "Sign in", + "GitHub authentication required to trigger deployment.": "GitHub authentication required to trigger deployment.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Workflow dispatch triggered successfully. Check GitHub Actions for progress.", + "Close": "Close", + "Triggering...": "Triggering...", + "Deploy": "Deploy", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Enable GitHub-based deployment pipelines for AKS projects.", - "Enable Horizontal Pod Autoscaler": "Enable Horizontal Pod Autoscaler", - "Enable liveness probe": "Enable liveness probe", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Enable or disable features that are still in development. Preview features may change or be removed in future releases.", - "Enable pod anti-affinity": "Enable pod anti-affinity", - "Enable public access": "Enable public access", - "Enable readiness probe": "Enable readiness probe", - "Enable resource requests and limits": "Enable resource requests and limits", - "Enable startup probe": "Enable startup probe", - "Enable topology spread constraints": "Enable topology spread constraints", - "Enabling Addons...": "Enabling Addons...", - "Enabling these addons may incur additional Azure costs.": "Enabling these addons may incur additional Azure costs.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Ensure min ≤ max replicas and target CPU between 10% and 95%.", + "Workloads": "Workloads", + "No clusters in this project.": "No clusters in this project.", + "Failed to fetch deployments": "Failed to fetch deployments", + "Failed to fetch cluster status": "Failed to fetch cluster status", + "Configure security context settings for the container.": "Configure security context settings for the container.", + "Run as non root user": "Run as non root user", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.", "Ensures the container runs as a non-root user for better security.": "Ensures the container runs as a non-root user for better security.", - "Ensuring resource group exists...": "Ensuring resource group exists...", - "Enter a name for your first application to get started with deployment.": "Enter a name for your first application to get started with deployment.", - "Enter application name": "Enter application name", - "Enter project description": "Enter project description", + "Read only root filesystem": "Read only root filesystem", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Mounts the container's root filesystem as read-only to prevent write operations.", + "Allow privilege escalation": "Allow privilege escalation", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.", + "Controls whether a process can gain more privileges than its parent process.": "Controls whether a process can gain more privileges than its parent process.", + "Enable pod anti-affinity": "Enable pod anti-affinity", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prefer scheduling pods on different nodes to improve availability and fault tolerance.", + "Enable topology spread constraints": "Enable topology spread constraints", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.", + "Distributes pods evenly across nodes to improve workload distribution.": "Distributes pods evenly across nodes to improve workload distribution.", + "Container image": "Container image", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "The number of pod replicas to run. More replicas provide better availability and load distribution.", + "Continue": "Continue", + "Configure Container Deployment": "Configure Container Deployment", + "Networking": "Networking", + "Healthchecks": "Healthchecks", + "Resource Limits": "Resource Limits", "Environment Variables": "Environment Variables", - "Error deleting project {{ projectId }}.": "Error deleting project {{ projectId }}.", - "Error Rate": "Error Rate", - "Failed to apply": "Failed to apply", - "Failed to apply resources.": "Failed to apply resources.", - "Failed to convert namespace: {{message}}": "Failed to convert namespace: {{message}}", - "Failed to create namespace": "Failed to create namespace", - "Failed to create project": "Failed to create project", - "Failed to enable addon: {{error}}": "Failed to enable addon: {{error}}", - "Failed to enable addons": "Failed to enable addons", - "Failed to fetch cluster status": "Failed to fetch cluster status", - "Failed to fetch deployment status": "Failed to fetch deployment status", - "Failed to fetch deployments": "Failed to fetch deployments", - "Failed to fetch managed namespace details": "Failed to fetch managed namespace details", - "Failed to fetch managed namespaces": "Failed to fetch managed namespaces", - "Failed to fetch pod status": "Failed to fetch pod status", - "Failed to fetch service status": "Failed to fetch service status", - "Failed to import any projects. See details below.": "Failed to import any projects. See details below.", - "Failed to initiate login: {{message}}": "Failed to initiate login: {{message}}", - "Failed to load AKS clusters": "Failed to load AKS clusters", - "Failed to load Azure context": "Failed to load Azure context", - "Failed to load pipeline runs": "Failed to load pipeline runs", - "Failed to load repositories": "Failed to load repositories", - "Failed to load subscriptions": "Failed to load subscriptions", - "Failed to merge cluster: {{message}}": "Failed to merge cluster: {{message}}", - "Failed to monitor deployment health": "Failed to monitor deployment health", - "Failed to register cluster: {{message}}": "Failed to register cluster: {{message}}", - "Failed to trigger deployment": "Failed to trigger deployment", - "Failed to update managed namespace": "Failed to update managed namespace", - "failureThreshold": "failureThreshold", - "Features": "Features", - "Federated Credential": "Federated Credential", - "Filter repositories": "Filter repositories", - "Final status check failed: {{message}}": "Final status check failed: {{message}}", - "Final status verification failed: {{message}}": "Final status verification failed: {{message}}", - "for full network policy support.": "for full network policy support.", + "Workload Identity": "Workload Identity", + "Advanced": "Advanced", + "Information about {{label}}": "Information about {{label}}", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.", + "Upload files": "Upload files", + "Clear editor": "Clear editor", + "Review & Deploy": "Review & Deploy", "Generated Kubernetes manifests (namespace: {{namespace}})": "Generated Kubernetes manifests (namespace: {{namespace}})", - "GitHub authentication required to trigger deployment.": "GitHub authentication required to trigger deployment.", - "GitHub Pipelines": "GitHub Pipelines", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Go To Projects", - "Guided configuration for ports, replicas, env, and resources": "Guided configuration for ports, replicas, env, and resources", - "Healthchecks": "Healthchecks", - "Healthy": "Healthy", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "How often (in seconds) to perform the liveness probe. Default is 10 seconds.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "How often (in seconds) to perform the readiness probe. Default is 10 seconds.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "How often (in seconds) to perform the startup probe. Default is 10 seconds.", - "HPA scales pods based on CPU utilization.": "HPA scales pods based on CPU utilization.", - "Identity Resource Group": "Identity Resource Group", - "Import AKS Projects": "Import AKS Projects", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.", - "Import Selected Projects": "Import Selected Projects", - "Importing": "Importing", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}", - "in resource group": "in resource group", - "Information about {{label}}": "Information about {{label}}", - "Information about CPU limit": "Information about CPU limit", - "Information about CPU request": "Information about CPU request", - "Information about memory limit": "Information about memory limit", - "Information about memory request": "Information about memory request", - "Information about target CPU utilization": "Information about target CPU utilization", - "Ingress Policy": "Ingress Policy", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Initializing...", - "Initiating Azure login": "Initiating Azure login", - "Initiating managed namespace creation": "Initiating managed namespace creation", - "Install Extension": "Install Extension", - "Install GitHub App": "Install GitHub App", - "Installing": "Installing", - "Internal only": "Internal only", - "Invalid YAML": "Invalid YAML", - "Invalid YAML: List item missing required field (kind)": "Invalid YAML: List item missing required field (kind)", - "Invalid YAML: List item missing required field (metadata.name)": "Invalid YAML: List item missing required field (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "Invalid YAML: List resource must have an array \"items\" field", - "Invalid YAML: missing required field (kind)": "Invalid YAML: missing required field (kind)", - "Invalid YAML: missing required field (metadata.name)": "Invalid YAML: missing required field (metadata.name)", - "Issue {{number}}": "Issue {{number}}", - "Issues": "Issues", - "just now": "just now", - "KEDA (Event-Driven Autoscaling)": "KEDA (Event-Driven Autoscaling)", - "Keep Going": "Keep Going", + "Resources to be deployed ({{count}} object)_one": "Resources to be deployed ({{count}} object)", + "Resources to be deployed ({{count}} object)_other": "Resources to be deployed ({{count}} object)", + "namespace: {{namespace}}": "namespace: {{namespace}}", + "Configure": "Configure", + "Deploying": "Deploying", "Key": "Key", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes restarts the container if this check fails repeatedly.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.", + "Value": "Value", + "(existing — enter value to overwrite)": "(existing — enter value to overwrite)", + "Stored as Kubernetes Secret": "Stored as Kubernetes Secret", + "Mark as secret (stored as Kubernetes Secret)": "Mark as secret (stored as Kubernetes Secret)", + "toggle secret": "toggle secret", + "remove": "remove", + "Add variable": "Add variable", + "Configure container health probes.": "Configure container health probes.", + "Manually configure settings": "Manually configure settings", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.", + "Enable liveness probe": "Enable liveness probe", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes temporarily disables liveness/readiness until startup succeeds.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.", - "Kubernetes Version": "Kubernetes Version", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes won't send traffic to the pod until this check passes.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "less than a minute", - "Limits": "Limits", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes restarts the container if this check fails repeatedly.", "Liveness path": "Liveness path", - "Loading": "Loading", - "Loading AKS clusters": "Loading AKS clusters", - "Loading Azure account information": "Loading Azure account information", - "Loading Azure context...": "Loading Azure context...", - "Loading clusters": "Loading clusters", - "Loading configuration...": "Loading configuration...", - "Loading deployments": "Loading deployments", - "Loading metrics": "Loading metrics", - "Loading scaling metrics from Prometheus": "Loading scaling metrics from Prometheus", - "Loading subscriptions": "Loading subscriptions", - "Loading...": "Loading...", - "Location": "Location", - "Log out": "Log out", - "Logged in as": "Logged in as", - "Logging out": "Logging out", - "Login successful! Redirecting": "Login successful! Redirecting", - "Login timeout. Please try again.": "Login timeout. Please try again.", - "Managed Identity": "Managed Identity", - "managed namespaces only": "managed namespaces only", - "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview feature registered successfully!", - "Manual": "Manual", - "Manual Deploy": "Manual Deploy", - "Manually configure settings": "Manually configure settings", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Number of seconds after the container has started before liveness probes are initiated.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "How often (in seconds) to perform the liveness probe. Default is 10 seconds.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Number of seconds after which the probe times out. Default is 1 second.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.", + "Enable readiness probe": "Enable readiness probe", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes won't send traffic to the pod until this check passes.", + "Readiness path": "Readiness path", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.", + "Number of seconds after the container has started before readiness probes are initiated.": "Number of seconds after the container has started before readiness probes are initiated.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "How often (in seconds) to perform the readiness probe. Default is 10 seconds.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.", + "Enable startup probe": "Enable startup probe", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes temporarily disables liveness/readiness until startup succeeds.", + "Startup path": "Startup path", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.", + "Number of seconds after the container has started before startup probes are initiated.": "Number of seconds after the container has started before startup probes are initiated.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "How often (in seconds) to perform the startup probe. Default is 10 seconds.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.", + "Enable Horizontal Pod Autoscaler": "Enable Horizontal Pod Autoscaler", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.", + "HPA scales pods based on CPU utilization.": "HPA scales pods based on CPU utilization.", + "Min replicas": "Min replicas", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.", "Max replicas": "Max replicas", - "Maximum CPU allowed (1000m = 1 CPU core)": "Maximum CPU allowed (1000m = 1 CPU core)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximum memory allowed (1024 MiB = 1 GiB)", - "Maximum Replicas": "Maximum Replicas", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.", + "Target CPU utilization": "Target CPU utilization", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Ensure min ≤ max replicas and target CPU between 10% and 95%.", + "Target port": "Target port", + "The port number that your container listens on. This is the port inside the container where your application runs.": "The port number that your container listens on. This is the port inside the container where your application runs.", + "Service port": "Service port", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.", + "Use custom service port": "Use custom service port", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "By default, the service port matches the target port. Enable this to use a different port for the service.", + "Service type": "Service type", + "Internal only": "Internal only", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Use ClusterIP. Best for services that are only reachable within the cluster.", + "Enable public access": "Enable public access", + "Creates a LoadBalancer to expose the application to the internet.": "Creates a LoadBalancer to expose the application to the internet.", + "Enable resource requests and limits": "Enable resource requests and limits", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.", + "CPU request": "CPU request", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.", + "millicores": "millicores", + "CPU limit": "CPU limit", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.", + "Memory request": "Memory request", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.", "mebibytes": "mebibytes", - "Memory": "Memory", "Memory limit": "Memory limit", - "Memory Limits": "Memory Limits", - "Memory request": "Memory request", - "Memory Requests": "Memory Requests", - "Memory Resources": "Memory Resources", - "Memory Usage": "Memory Usage", - "Memory utilization": "Memory utilization", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Merging cluster {{clusterName}} ({{count}} namespace(s))", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Merging cluster {{clusterName}} ({{count}} namespace(s))", - "Metrics": "Metrics", - "Metrics refreshed every 30 seconds": "Metrics refreshed every 30 seconds", - "Metrics Unavailable": "Metrics Unavailable", - "millicores": "millicores", - "Min replicas": "Min replicas", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimum CPU guaranteed (1000m = 1 CPU core)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimum memory guaranteed (1024 MiB = 1 GiB)", - "Minimum Replicas": "Minimum Replicas", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Mounts the container's root filesystem as read-only to prevent write operations.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Multi-file support (Deployments, Services, Ingress, etc.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character", - "Name": "Name", - "Namespace": "Namespace", - "Namespace '{{name}}' converted and imported as project": "Namespace '{{name}}' converted and imported as project", - "Namespace created successfully!": "Namespace created successfully!", - "Namespace Created Successfully!": "Namespace Created Successfully!", - "Namespace creation API succeeded, proceeding with user assignments": "Namespace creation API succeeded, proceeding with user assignments", - "Namespace creation completed successfully! Adding user access": "Namespace creation completed successfully! Adding user access", - "Namespace Creation Failed": "Namespace Creation Failed", - "Namespace creation failed: {{message}}": "Namespace creation failed: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Namespace creation initiated! Monitoring creation status", - "Namespace Name": "Namespace Name", - "Namespace name is required": "Namespace name is required", - "Namespace name must be 63 characters or fewer": "Namespace name must be 63 characters or fewer", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character", - "Namespace status check failed: {{message}}": "Namespace status check failed: {{message}}", - "Namespace status verification failed: {{message}}": "Namespace status verification failed: {{message}}", - "namespace: {{namespace}}": "namespace: {{namespace}}", - "Namespaces to convert:": "Namespaces to convert:", - "Network I/O": "Network I/O", - "Network In": "Network In", - "Network Out": "Network Out", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Network policy engine cannot be changed after cluster creation. Create a new cluster with", - "Networking": "Networking", - "Networking Policies": "Networking Policies", - "New Project": "New Project", - "Next": "Next", - "No": "No", - "No AKS clusters found in this subscription.": "No AKS clusters found in this subscription.", - "No cluster is associated with this project.": "No cluster is associated with this project.", - "No clusters found. Register a cluster first.": "No clusters found. Register a cluster first.", - "No clusters in this project.": "No clusters in this project.", - "No clusters with Azure Entra ID authentication found for this subscription": "No clusters with Azure Entra ID authentication found for this subscription", - "No data available": "No data available", - "No deployments found": "No deployments found", - "No Deployments Found": "No Deployments Found", - "No deployments found in this namespace.": "No deployments found in this namespace.", - "No description provided": "No description provided", - "No eligible clusters found in this subscription.": "No eligible clusters found in this subscription.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).", + "Container Image": "Container Image", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Deploy from Azure Container Registry, Docker Hub, or GHCR", + "Auto-generated Deployment and Service manifests": "Auto-generated Deployment and Service manifests", + "Guided configuration for ports, replicas, env, and resources": "Guided configuration for ports, replicas, env, and resources", "No Kubernetes expertise required to get started": "No Kubernetes expertise required to get started", - "No options": "No options", - "No pipeline runs yet.": "No pipeline runs yet.", - "No pods found for deployment \"{{name}}\"": "No pods found for deployment \"{{name}}\"", - "No repositories found": "No repositories found", - "No repositories match your filter": "No repositories match your filter", - "No response time data available": "No response time data available", - "No scaling data available": "No scaling data available", - "No subscriptions found": "No subscriptions found", - "No users found": "No users found", - "Not specified": "Not specified", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.", - "Number of Replicas": "Number of Replicas", - "Number of seconds after the container has started before liveness probes are initiated.": "Number of seconds after the container has started before liveness probes are initiated.", - "Number of seconds after the container has started before readiness probes are initiated.": "Number of seconds after the container has started before readiness probes are initiated.", - "Number of seconds after the container has started before startup probes are initiated.": "Number of seconds after the container has started before startup probes are initiated.", - "Number of seconds after which the probe times out. Default is 1 second.": "Number of seconds after which the probe times out. Default is 1 second.", - "Object ID": "Object ID", - "OIDC trust for": "OIDC trust for", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline", - "Only clusters with Azure Entra ID authentication are shown.": "Only clusters with Azure Entra ID authentication are shown.", - "Performing final status verification": "Performing final status verification", - "periodSeconds": "periodSeconds", - "Pipeline": "Pipeline", - "Pipeline configured": "Pipeline configured", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Please complete the authentication in your browser. This window will automatically redirect once login is complete.", - "Please register it to continue.": "Please register it to continue.", - "Please review all the settings before creating your AKS project": "Please review all the settings before creating your AKS project", - "Please select a deployment to view metrics": "Please select a deployment to view metrics", - "Please select a subscription first": "Please select a subscription first", - "Please select at least one namespace to import": "Please select at least one namespace to import", - "Please sign in to Azure to continue.": "Please sign in to Azure to continue.", - "Pod Details": "Pod Details", - "Pod Name": "Pod Name", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prefer scheduling pods on different nodes to improve availability and fault tolerance.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.", + "Bring your own Kubernetes manifests to deploy": "Bring your own Kubernetes manifests to deploy", + "Use existing manifests for full control": "Use existing manifests for full control", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Multi-file support (Deployments, Services, Ingress, etc.)", "Preview and basic validation before apply": "Preview and basic validation before apply", - "Preview Features": "Preview Features", - "Project '{{name}}' successfully imported": "Project '{{name}}' successfully imported", - "Project Basics": "Project Basics", - "Project Created Successfully!": "Project Created Successfully!", - "Project creation completed successfully!": "Project creation completed successfully!", - "Project Creation Failed": "Project Creation Failed", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.", - "Project Description": "Project Description", - "Project Name": "Project Name", - "Project name is available": "Project name is available", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)", - "Project Status": "Project Status", - "Pull requests": "Pull requests", + "Select Source": "Select Source", + "Choose a source for your deployment (container image, repo, etc.).": "Choose a source for your deployment (container image, repo, etc.).", + "Deployment source": "Deployment source", + "Features": "Features", + "Enable Workload Identity": "Enable Workload Identity", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.", + "Azure sign-in is required to configure workload identity.": "Azure sign-in is required to configure workload identity.", + "Create new identity": "Create new identity", + "Use existing identity": "Use existing identity", + "Identity Resource Group": "Identity Resource Group", + "Resource group for the managed identity. Will be created if it does not exist.": "Resource group for the managed identity. Will be created if it does not exist.", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.", + "Reconfigure Identity": "Reconfigure Identity", + "Configure Identity": "Configure Identity", + "Creating resource group...": "Creating resource group...", + "Checking for existing identity...": "Checking for existing identity...", + "Creating managed identity...": "Creating managed identity...", + "Assigning required roles...": "Assigning required roles...", + "Fetching OIDC issuer URL...": "Fetching OIDC issuer URL...", + "Creating federated credential...": "Creating federated credential...", + "Resource group to search for managed identities.": "Resource group to search for managed identities.", + "Load": "Load", + "Loading identities...": "Loading identities...", + "Select managed identity": "Select managed identity", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.", + "Client ID": "Client ID", + "Service Account": "Service Account", + "Invalid YAML: missing required field (kind)": "Invalid YAML: missing required field (kind)", + "Invalid YAML: List resource must have an array \"items\" field": "Invalid YAML: List resource must have an array \"items\" field", + "Invalid YAML: List item missing required field (kind)": "Invalid YAML: List item missing required field (kind)", + "Invalid YAML: List item missing required field (metadata.name)": "Invalid YAML: List item missing required field (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "Invalid YAML: missing required field (metadata.name)", + "Invalid YAML": "Invalid YAML", + "Validation failed": "Validation failed", + "Failed to apply": "Failed to apply", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "Applied {{count}} resource(s) successfully.", + "Applied {{count}} resource(s) successfully._other": "Applied {{count}} resource(s) successfully.", + "Failed to apply resources.": "Failed to apply resources.", + "unnamed": "unnamed", + "Failed to create container registry": "Failed to create container registry", + "Container Registry": "Container Registry", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "Select an Azure Container Registry for building and pushing container images, or create a new one.", + "Loading container registries...": "Loading container registries...", + "Create new registry": "Create new registry", + "Skip (configure manually later)": "Skip (configure manually later)", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.", + "Registry Name": "Registry Name", + "Globally unique name. 5-50 alphanumeric characters.": "Globally unique name. 5-50 alphanumeric characters.", + "SKU": "SKU", + "Basic": "Basic", + "Standard": "Standard", + "Premium": "Premium", + "Creating...": "Creating...", + "Create Registry": "Create Registry", + "Contents": "Contents", "Push agent config files": "Push agent config files", - "Re-deploy": "Re-deploy", - "Read only root filesystem": "Read only root filesystem", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.", - "Readiness path": "Readiness path", - "Ready": "Ready", - "Refresh": "Refresh", - "Refreshing": "Refreshing", - "Register AKS Cluster": "Register AKS Cluster", - "Register Cluster": "Register Cluster", - "Register ManagedNamespacePreview Feature": "Register ManagedNamespacePreview Feature", - "Registering": "Registering", - "Registering cluster": "Registering cluster", - "Regular": "Regular", - "Regular Kubernetes namespace": "Regular Kubernetes namespace", - "remove": "remove", - "Remove assignee": "Remove assignee", - "Reopen install page": "Reopen install page", - "Replica Bounds": "Replica Bounds", - "Replicas": "Replicas", - "Request & error rate": "Request & error rate", - "Request Rate": "Request Rate", - "Requests": "Requests", - "Required Permissions": "Required Permissions", - "Resource Group": "Resource Group", - "Resource group where the managed identity will be created": "Resource group where the managed identity will be created", - "Resource Limits": "Resource Limits", - "Resource Usage": "Resource Usage", - "Resources to be deployed ({{count}} object)_one": "Resources to be deployed ({{count}} object)", - "Resources to be deployed ({{count}} object)_other": "Resources to be deployed ({{count}} object)", - "Response Time": "Response Time", - "Restarts": "Restarts", - "Retry": "Retry", - "Review": "Review", - "Review & Deploy": "Review & Deploy", - "Review & Merge": "Review & Merge", - "Review and merge the setup PR to enable the Copilot agent.": "Review and merge the setup PR to enable the Copilot agent.", - "Review on GitHub": "Review on GitHub", - "Review Project Configuration": "Review Project Configuration", - "Role": "Role", - "Role Assignment": "Role Assignment", - "Run as non root user": "Run as non root user", + "Workflows": "Workflows", + "Create setup workflow in .github/workflows/": "Create setup workflow in .github/workflows/", + "Pull requests": "Pull requests", + "Create deployment PRs": "Create deployment PRs", + "Issues": "Issues", + "Track agent progress": "Track agent progress", "Run deployment workflows": "Run deployment workflows", - "Save": "Save", - "Scaled down": "Scaled down", - "Scaling": "Scaling", - "Scaling Chart Unavailable": "Scaling Chart Unavailable", - "Scaling History (Last 24 Hours)": "Scaling History (Last 24 Hours)", - "Scaling Mode": "Scaling Mode", - "Scaling Overview": "Scaling Overview", - "Search by name or email...": "Search by name or email...", - "Search clusters": "Search clusters", - "Search for a user or remove this entry": "Search for a user or remove this entry", - "Search subscriptions": "Search subscriptions", - "Select a cluster": "Select a cluster", - "Select a deployment to view metrics": "Select a deployment to view metrics", - "Select a deployment to view scaling metrics": "Select a deployment to view scaling metrics", - "Select a subscription": "Select a subscription", - "Select a user from the search results or enter a valid object ID (UUID)": "Select a user from the search results or enter a valid object ID (UUID)", - "Select All": "Select All", - "Select an AKS cluster": "Select an AKS cluster", - "Select an Azure subscription": "Select an Azure subscription", - "Select an option": "Select an option", - "Select Deployment": "Select Deployment", - "Select Namespaces to Import": "Select Namespaces to Import", + "Connect to GitHub": "Connect to GitHub", + "Connected to '{{username}}'.": "Connected to '{{username}}'.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Authorize AKS Desktop to create deployment pipelines in your repository.", + "Required Permissions": "Required Permissions", + "Complete authorization on your browser screen": "Complete authorization on your browser screen", + "Connect": "Connect", "Select repository": "Select repository", - "Select Source": "Select Source", - "Selected Cluster Details": "Selected Cluster Details", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Selected cluster is missing from the kubeconfig. Register it before proceeding.", - "Service port": "Service port", - "Service type": "Service type", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.", - "Set quota limits to prevent overuse and maintain cluster stability": "Set quota limits to prevent overuse and maintain cluster stability", - "Set security, communication and access rules for incoming and outgoing traffic": "Set security, communication and access rules for incoming and outgoing traffic", - "Set the desired number of pod replicas for this deployment": "Set the desired number of pod replicas for this deployment", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Set up a CI/CD pipeline to automate your deployments and streamline your workflow", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Set up and configure a new project in Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Set up Copilot Agent", - "Set up your pipeline": "Set up your pipeline", - "Setting up Copilot agent...": "Setting up Copilot agent...", - "Setup PR Created": "Setup PR Created", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.", + "Reopen install page": "Reopen install page", + "Install GitHub App": "Install GitHub App", + "Checking...": "Checking...", + "Connecting to GitHub...": "Connecting to GitHub...", + "Connect GitHub": "Connect GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Connected", + "Sign in to GitHub": "Sign in to GitHub", + "Failed to load repositories": "Failed to load repositories", + "Filter repositories": "Filter repositories", + "No repositories match your filter": "No repositories match your filter", + "No repositories found": "No repositories found", + "less than a minute": "less than a minute", + "{{count}} min_one": "{{count}} min", + "{{count}} min_other": "{{count}} min", + "Up next": "Up next", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "Checking merge status...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "This is taking longer than expected. Check the PR on GitHub for the latest status.", + "This PR was closed without merging. You may need to restart the process.": "This PR was closed without merging. You may need to restart the process.", + "Review on GitHub": "Review on GitHub", + "Agent is working": "Agent is working", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.", + "Issue {{number}}": "Issue {{number}}", + "Waiting for agent workflow to start...": "Waiting for agent workflow to start...", + "This typically takes 10–25 minutes.": "This typically takes 10–25 minutes.", + "Pipeline configured": "Pipeline configured", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.", "Setup PR reviewed and merged": "Setup PR reviewed and merged", - "Sign in": "Sign in", - "Sign in to GitHub": "Sign in to GitHub", - "Sign in to GitHub to view pipeline runs.": "Sign in to GitHub to view pipeline runs.", - "Sign in with Azure": "Sign in with Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Sign in with your Azure account to manage AKS clusters and resources", - "Source": "Source", - "Starting project creation": "Starting project creation", - "Startup path": "Startup path", - "Status": "Status", - "Subscription": "Subscription", - "Successfully merged {{count}} cluster(s)_one": "Successfully merged {{count}} cluster(s)", - "Successfully merged {{count}} cluster(s)_other": "Successfully merged {{count}} cluster(s)", - "successThreshold": "successThreshold", - "Target CPU utilization": "Target CPU utilization", - "Target CPU Utilization (%)": "Target CPU Utilization (%)", - "Target port": "Target port", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.", + "Copilot agent reviewed your repo and generated deployment PR": "Copilot agent reviewed your repo and generated deployment PR", + "Deployment PR reviewed and merged": "Deployment PR reviewed and merged", + "View deployment": "View deployment", + "You can collapse this panel. Progress is saved and will resume when you return.": "You can collapse this panel. Progress is saved and will resume when you return.", + "Creating setup PR...": "Creating setup PR...", "The agent is creating the setup PR to enable the Copilot agent.": "The agent is creating the setup PR to enable the Copilot agent.", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "The aks-preview extension is required to create managed namespaces. Please install it to continue.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.", - "The following addons can be enabled on this cluster:": "The following addons can be enabled on this cluster:", + "Setup PR Created": "Setup PR Created", + "Review and merge the setup PR to enable the Copilot agent.": "Review and merge the setup PR to enable the Copilot agent.", + "Setting up Copilot agent...": "Setting up Copilot agent...", + "Creating the trigger issue for the Copilot coding agent.": "Creating the trigger issue for the Copilot coding agent.", + "Deployment PR Ready": "Deployment PR Ready", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.", + "Copilot agent": "Copilot agent", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "After merging, the Copilot agent will analyze your repo and create a deployment PR", + "Deployment PR": "Deployment PR", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline", + "Connect Source": "Connect Source", + "Set up Copilot Agent": "Set up Copilot Agent", + "Review & Merge": "Review & Merge", + "Collapse panel": "Collapse panel", + "Keep Going": "Keep Going", + "Discard": "Discard", + "Canceling will discard your pipeline progress. Are you sure?": "Canceling will discard your pipeline progress. Are you sure?", + "Ensuring resource group exists...": "Ensuring resource group exists...", + "Assigning required Azure RBAC roles...": "Assigning required Azure RBAC roles...", + "Configuring federated credential...": "Configuring federated credential...", + "Workload identity configured": "Workload identity configured", + "Configure Workload Identity": "Configure Workload Identity", "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "The following namespaces will be converted to AKS Desktop projects by adding these labels:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "The ManagedNamespacePreview feature must be registered to create managed namespaces.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.", - "The namespace will be created on the selected cluster and set up as a project": "The namespace will be created on the selected cluster and set up as a project", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "The number of pod replicas to run. More replicas provide better availability and load distribution.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "The operation may still be running on GitHub. Check the link above for the latest status.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "The port number that your container listens on. This is the port inside the container where your application runs.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.", - "There are no deployments in this project namespace yet.": "There are no deployments in this project namespace yet.", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "This is taking longer than expected. Check the PR on GitHub for the latest status.", + "Managed Identity": "Managed Identity", + "in resource group": "in resource group", + "Role Assignments": "Role Assignments", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "Required Azure RBAC roles for cluster access, deployment, and container registry", + "Federated Credential": "Federated Credential", + "OIDC trust for": "OIDC trust for", + "branch": "branch", + "Resource group where the managed identity will be created": "Resource group where the managed identity will be created", + "Workload identity configured successfully.": "Workload identity configured successfully.", "This may be a permissions issue. Check your GitHub App permissions and try again.": "This may be a permissions issue. Check your GitHub App permissions and try again.", - "This PR was closed without merging. You may need to restart the process.": "This PR was closed without merging. You may need to restart the process.", - "This typically takes 10–25 minutes.": "This typically takes 10–25 minutes.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Total Pods", - "Track agent progress": "Track agent progress", - "Trigger": "Trigger", - "Trigger Copilot Agent": "Trigger Copilot Agent", - "Triggering...": "Triggering...", + "The operation may still be running on GitHub. Check the link above for the latest status.": "The operation may still be running on GitHub. Check the link above for the latest status.", "Try again, or check GitHub for details.": "Try again, or check GitHub for details.", - "Type": "Type", - "Type at least 2 characters to search": "Type at least 2 characters to search", + "Initializing...": "Initializing...", + "Checking repository readiness...": "Checking repository readiness...", + "Loading configuration...": "Loading configuration...", "Unknown error": "Unknown error", - "unnamed": "unnamed", - "Up next": "Up next", - "Update": "Update", - "Updating": "Updating", - "Updating local settings": "Updating local settings", - "Upload files": "Upload files", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Use ClusterIP. Best for services that are only reachable within the cluster.", - "Use custom service port": "Use custom service port", - "Use existing manifests for full control": "Use existing manifests for full control", - "User assignment completed with errors": "User assignment completed with errors", - "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.", - "Validation failed": "Validation failed", - "Value": "Value", - "View deployment": "View deployment", - "View on GitHub": "View on GitHub", - "View run on GitHub": "View run on GitHub", - "View workflow run": "View workflow run", - "VPA (Vertical Pod Autoscaler)": "VPA (Vertical Pod Autoscaler)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Waiting for agent workflow to start...", - "Waiting for browser authorization...": "Waiting for browser authorization...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Waiting for login completion... ({{minutes}} minutes remaining)", - "Waiting for namespace to be created": "Waiting for namespace to be created", - "Waiting for namespace to propagate": "Waiting for namespace to propagate", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.", + "Trigger Copilot Agent": "Trigger Copilot Agent", + "Create Setup PR": "Create Setup PR", + "Failed to fetch deployment status": "Failed to fetch deployment status", + "Failed to fetch pod status": "Failed to fetch pod status", + "Failed to fetch service status": "Failed to fetch service status", + "Failed to monitor deployment health": "Failed to monitor deployment health", + "Convert Namespaces to AKS Projects": "Convert Namespaces to AKS Projects", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "The following namespaces will be converted to AKS Desktop projects by adding these labels:", + "managed namespaces only": "managed namespaces only", + "Namespaces to convert:": "Namespaces to convert:", + "Already AKS projects (will import directly):": "Already AKS projects (will import directly):", + "Converting": "Converting", + "Confirm & Import": "Confirm & Import", + "Please select at least one namespace to import": "Please select at least one namespace to import", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Merging cluster {{clusterName}} ({{count}} namespace(s))", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Merging cluster {{clusterName}} ({{count}} namespace(s))", + "Failed to merge cluster: {{message}}": "Failed to merge cluster: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Converting {{name}} to AKS project (this may take a moment)...", + "Failed to convert namespace: {{message}}": "Failed to convert namespace: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}", + "Project '{{name}}' successfully imported": "Project '{{name}}' successfully imported", + "Namespace '{{name}}' converted and imported as project": "Namespace '{{name}}' converted and imported as project", + "Successfully merged {{count}} cluster(s)_one": "Successfully merged {{count}} cluster(s)", + "Successfully merged {{count}} cluster(s)_other": "Successfully merged {{count}} cluster(s)", "with {{count}} project(s)_one": "with {{count}} project(s)", "with {{count}} project(s)_other": "with {{count}} project(s)", - "with the following parameters:": "with the following parameters:", - "Wizard steps": "Wizard steps", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Workflow dispatch triggered successfully. Check GitHub Actions for progress.", - "workflow on": "workflow on", - "Workflows": "Workflows", - "Workload identity configured": "Workload identity configured", - "Workload identity configured successfully.": "Workload identity configured successfully.", - "Workloads": "Workloads", + "{{count}} failed._one": "{{count}} failed.", + "{{count}} failed._other": "{{count}} failed.", + "Failed to import any projects. See details below.": "Failed to import any projects. See details below.", + "Import AKS Projects": "Import AKS Projects", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.", + "Select Namespaces to Import": "Select Namespaces to Import", + "{{count}} selected_one": "{{count}} selected", + "{{count}} selected_other": "{{count}} selected", + "Select All": "Select All", + "Deselect All": "Deselect All", + "AKS Managed": "AKS Managed", + "Regular": "Regular", + "AKS Project?": "AKS Project?", "Yes": "Yes", - "You can collapse this panel. Progress is saved and will resume when you return.": "You can collapse this panel. Progress is saved and will resume when you return.", - "You need to be logged in to Azure to register AKS clusters.": "You need to be logged in to Azure to register AKS clusters.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Your AKS project \"{{projectName}}\" has been created and is ready to use.", - "Your project \"{{projectName}}\" is ready to use.": "Your project \"{{projectName}}\" is ready to use." + "No": "No", + "Importing": "Importing", + "Import Selected Projects": "Import Selected Projects", + "Failed to fetch managed namespaces": "Failed to fetch managed namespaces", + "Failed to fetch managed namespace details": "Failed to fetch managed namespace details", + "Failed to update managed namespace": "Failed to update managed namespace", + "Updating": "Updating", + "Update": "Update", + "AKS desktop logo": "AKS desktop logo", + "No Deployments Found": "No Deployments Found", + "There are no deployments in this project namespace yet.": "There are no deployments in this project namespace yet.", + "Deploy an application to view logs.": "Deploy an application to view logs.", + "Metrics": "Metrics", + "CPU Usage": "CPU Usage", + "Memory Usage": "Memory Usage", + "Request Rate": "Request Rate", + "Error Rate": "Error Rate", + "Metrics refreshed every 30 seconds": "Metrics refreshed every 30 seconds", + "Select a deployment to view metrics": "Select a deployment to view metrics", + "Metrics Unavailable": "Metrics Unavailable", + "Application Metrics": "Application Metrics", + "Request & error rate": "Request & error rate", + "No data available": "No data available", + "Response Time": "Response Time", + "Memory utilization": "Memory utilization", + "Network I/O": "Network I/O", + "Deploy an application to start viewing metrics.": "Deploy an application to start viewing metrics.", + "Please select a deployment to view metrics": "Please select a deployment to view metrics", + "Project Status": "Project Status", + "Total Pods": "Total Pods", + "Application Health": "Application Health", + "Loading metrics": "Loading metrics", + "Resource Usage": "Resource Usage", + "Avg Response Time": "Avg Response Time", + "No response time data available": "No response time data available", + "Absolute usage": "Absolute usage", + "Network In": "Network In", + "Network Out": "Network Out", + "Pod Details": "Pod Details", + "Pod Name": "Pod Name", + "Restarts": "Restarts", + "No pods found for deployment \"{{name}}\"": "No pods found for deployment \"{{name}}\"", + "Preview Features": "Preview Features", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Enable or disable features that are still in development. Preview features may change or be removed in future releases.", + "GitHub Pipelines": "GitHub Pipelines", + "Enable GitHub-based deployment pipelines for AKS projects.": "Enable GitHub-based deployment pipelines for AKS projects.", + "Loading scaling metrics from Prometheus": "Loading scaling metrics from Prometheus", + "Scaling Chart Unavailable": "Scaling Chart Unavailable", + "No scaling data available": "No scaling data available", + "Edit HPA Configuration": "Edit HPA Configuration", + "Edit Manual Scaling Configuration": "Edit Manual Scaling Configuration", + "Minimum Replicas": "Minimum Replicas", + "Maximum Replicas": "Maximum Replicas", + "Target CPU Utilization (%)": "Target CPU Utilization (%)", + "Number of Replicas": "Number of Replicas", + "Set the desired number of pod replicas for this deployment": "Set the desired number of pod replicas for this deployment", + "Save": "Save", + "Scaling Mode": "Scaling Mode", + "Current Replicas": "Current Replicas", + "Desired Replicas": "Desired Replicas", + "Configured Replicas": "Configured Replicas", + "Replica Bounds": "Replica Bounds", + "Available Replicas": "Available Replicas", + "CPU Usage / Target": "CPU Usage / Target", + "Scaling": "Scaling", + "Select a deployment to view scaling metrics": "Select a deployment to view scaling metrics", + "Scaling Overview": "Scaling Overview", + "Edit Configuration": "Edit Configuration", + "Scaling History (Last 24 Hours)": "Scaling History (Last 24 Hours)", + "Copied!": "Copied!", + "Copy": "Copy", + "Copy to clipboard": "Copy to clipboard", + "No deployments found": "No deployments found", + "Select Deployment": "Select Deployment", + "Loading deployments": "Loading deployments", + "No cluster is associated with this project.": "No cluster is associated with this project.", + "Please sign in to Azure to continue.": "Please sign in to Azure to continue.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.", + "Failed to load Azure context": "Failed to load Azure context", + "just now": "just now", + "{{seconds}}s ago": "{{seconds}}s ago", + "{{minutes}} min ago": "{{minutes}} min ago", + "{{hours}}h ago": "{{hours}}h ago", + "{{days}}d ago": "{{days}}d ago", + "{{weeks}}w ago": "{{weeks}}w ago" } diff --git a/plugins/aks-desktop/locales/es/translation.json b/plugins/aks-desktop/locales/es/translation.json index 665bcf442..f5bb9ffce 100644 --- a/plugins/aks-desktop/locales/es/translation.json +++ b/plugins/aks-desktop/locales/es/translation.json @@ -1,629 +1,682 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"Rol de usuario de clúster de AKS\" con ámbito en el grupo de recursos", - "(already enabled)": "(ya se ha habilitado)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} clúster(es) oculto(s): sin Azure Entra ID", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} clúster(es) oculto(s): sin Azure Entra ID", - "{{count}} eligible cluster(s) found._one": "{{count}} clúster(es) elegible(s) encontrado(s).", - "{{count}} eligible cluster(s) found._other": "{{count}} clúster(es) elegible(s) encontrado(s).", - "{{count}} failed._one": "Error de {{count}}.", - "{{count}} failed._other": "Error de {{count}}.", - "{{count}} min_one": "{{count}} minuto", - "{{count}} min_other": "{{count}} minuto", - "{{count}} selected_one": "{{count}} seleccionado", - "{{count}} selected_other": "{{count}} seleccionados", - "{{days}}d ago": "hace {{days}} d", - "{{hours}}h ago": "hace {{hours}} h", - "{{minutes}} min ago": "hace {{minutes}} min", - "{{seconds}}s ago": "hace {{seconds}} s", - "{{weeks}}w ago": "hace {{weeks}} sem.", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "El clúster debe estar seleccionado", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Se creará un nuevo espacio de nombres en el clúster con las etiquetas de proyecto aplicadas. Aparecerá inmediatamente en tu lista de proyectos.", - "Absolute usage": "Uso absoluto", - "Access": "Acceso", - "Access Control ({{count}} assignee)_one": "Control de acceso ({{count}} usuario asignado)", - "Access Control ({{count}} assignee)_other": "Control de acceso ({{count}} usuarios asignados)", - "Actions": "Acciones", - "Add assignee": "Agregar usuario asignado", - "Add Cluster from Azure": "Agregar clúster desde Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Añada uno o varios manifiestos de Kubernetes. Cargue archivos para rellenar el editor o pegue o edite directamente a continuación.", - "Add variable": "Agregar variable", - "Advanced": "Avanzado", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Tras fusionarla, el agente de Copilot analizará tu repositorio y creará una solicitud de incorporación de cambios de implementación", - "Agent is working": "El agente está funcionando", + "Failed to load subscriptions": "Error al cargar las suscripciones.", + "Failed to load AKS clusters": "No se pudieron cargar los clústeres de AKS", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "El clúster '{{cluster}}' se ha combinado correctamente en kubeconfig", + "Failed to register cluster: {{message}}": "No se pudo registrar el clúster: {{message}}", + "Register AKS Cluster": "Registro del clúster de AKS", + "Checking authentication status": "Comprobando estado de autenticación", + "You need to be logged in to Azure to register AKS clusters.": "Debe haber iniciado sesión en Azure para registrar clústeres de AKS.", + "Subscription": "Suscripción", + "Select an Azure subscription": "Selecciona una suscripción de Azure.", + "Loading subscriptions": "Cargando suscripciones", + "Loading AKS clusters": "Cargando clústeres de AKS", + "No AKS clusters found in this subscription.": "No se encontraron clústeres de AKS en esta suscripción.", "AKS Cluster": "Clúster de AKS", - "AKS desktop logo": "Logotipo de escritorio de AKS", - "AKS Managed": "AKS administrado", - "AKS Preview Extension installed successfully!": "La extensión de versión preliminar de AKS se instaló correctamente", - "AKS Preview Extension Required": "Extensión de la versión preliminar de AKS requerida", - "AKS Project?": "¿Proyecto de AKS?", - "All selected addons have been enabled successfully.": "Todos los complementos seleccionados se han habilitado correctamente.", - "All verifications completed successfully!": "Todas las comprobaciones se completaron correctamente.", - "Allow all traffic": "Permitir todo el tráfico", - "Allow privilege escalation": "Permitir la elevación de privilegios", - "Allow traffic within same namespace": "Permitir el tráfico dentro del mismo espacio de nombres", - "Already AKS projects (will import directly):": "Ya hay proyectos de AKS (se importarán directamente):", - "Also delete the namespaces (this will remove all resources within them)": "Eliminar también los espacios de nombres (esto eliminará todos los recursos dentro de ellos)", - "Another project already exists with same name. Please choose a different name.": "Ya existe un proyecto con el mismo nombre. Elija otro.", - "Application Health": "Estado de la aplicación", - "Application Metrics": "Métricas de aplicación", - "Application name": "Nombre de aplicación", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} recursos aplicados, pero {{failed}} con errores:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Se han aplicado {{count}} recursos correctamente.", - "Applied {{count}} resource(s) successfully._other": "Se han aplicado {{count}} recursos correctamente.", - "Are you sure you want to delete project \"{{projectId}}\"?": "¿Seguro que quiere eliminar el proyecto \"{{projectId}}\"?", - "Assign permissions to users who need access to your namespace": "Asigne permisos a los usuarios que necesiten acceso a su espacio de nombres", - "Assignee": "Usuario asignado", - "Assigning AKS Cluster User Role...": "Asignando rol de usuario del clúster AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autoriza al escritorio de AKS para crear canalizaciones de implementación en tu repositorio.", - "Auto-generated Deployment and Service manifests": "Manifiestos de implementación y servicio generados automáticamente", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Escala automáticamente el número de pods según el uso de CPU. El HPA aumentará los pods cuando el uso de CPU supere el objetivo y los reducirá cuando esté por debajo.", - "Available Replicas": "Réplicas disponibles", - "Avg Response Time": "Promedio de tiempo de respuesta", - "Azure Account": "Cuenta de Azure", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "Seleccione un clúster de AKS", + "Selected Cluster Details": "Detalles del clúster seleccionado", + "Name": "Nombre", + "Resource Group": "Grupo de recursos", + "Location": "Ubicación", + "Kubernetes Version": "Versión de Kubernetes", + "Done": "Listo", + "Cancel": "Cancelar", + "Registering": "Registrando", + "Register Cluster": "Registrar clúster", + "Initiating Azure login": "Iniciando sesión en Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Complete la autenticación en su navegador. Esta ventana se redirigirá automáticamente cuando finalice el inicio de sesión.", + "Login successful! Redirecting": "Inicio de sesión correcto Redirigiendo", + "Login timeout. Please try again.": "Se agotó el tiempo de expiración de inicio de sesión. Inténtelo de nuevo.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Esperando a que se complete el inicio de sesión... ({{minutes}}\u00a0minutos restantes)", + "Failed to initiate login: {{message}}": "No se pudo iniciar el inicio de sesión: {{message}}", "Azure Authentication": "Autenticación de Azure", - "Azure CLI/aks-preview requirements not met": "No se han cumplido los requisitos de Azure CLI/aks-preview", - "Azure Monitor Metrics (Managed Prometheus)": "Métricas de Azure Monitor (Prometheus gestionado)", + "Sign in with your Azure account to manage AKS clusters and resources": "Inicie sesión con su cuenta de Azure para administrar clústeres y recursos de AKS", + "Sign in with Azure": "Iniciar sesión con Azure", + "Loading Azure account information": "Cargando información de la cuenta de Azure", "Back": "Atrás", - "Basics": "Aspectos básicos", - "branch": "rama", - "Bring your own Kubernetes manifests to deploy": "Use sus propios manifiestos de Kubernetes para implementar", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "De manera predeterminada, las sondas usan HTTP GET en la ruta raíz con valores predeterminados adecuados. Habilite esta opción para personalizar la configuración de las sondas.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "De manera predeterminada, el puerto del servicio coincide con el puerto de destino. Active esta opción para usar un puerto diferente para el servicio.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "De manera predeterminada, esto eliminará el espacio de nombres administrado por Azure y las etiquetas de proyecto de los siguientes espacios de nombres:", - "Cancel": "Cancelar", - "Canceling will discard your pipeline progress. Are you sure?": "Cancelar descartará el progreso de la canalización. ¿Estás seguro?", - "Cancelled deletion of project {{ projectId }}.": "Se canceló la eliminación del proyecto {{ projectId }}.", - "Checking authentication status": "Comprobando estado de autenticación", - "Checking for existing identity...": "Comprobando si existe la identidad...", - "Checking if another project exists with same name": "Comprobando si existe otro proyecto con el mismo nombre", - "Checking merge status...": "Comprobando el estado de la fusión...", - "Checking repository readiness...": "Comprobando la preparación del repositorio...", - "Checking...": "Comprobando...", - "Choose a source for your deployment (container image, repo, etc.).": "Elija un origen para su implementación (imagen de contenedor, repositorio, etc.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "La canalización de CI/CD para {{repoFullName}} está lista. Inicia las implementaciones desde la pestaña Implementar.", - "Clear editor": "Borrar editor", - "Close": "Cerrar", - "Cluster": "Clúster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "El clúster '{{cluster}}' se ha combinado correctamente en kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "El clúster {{clusterName}} debe estar registrado antes de importar espacios de nombres normales. Primero importa un espacio de nombres administrado de este clúster.", - "Cluster Configuration": "Configuración de clúster", - "Cluster is being deleted. Cannot deploy to this cluster.": "El clúster se está eliminando. No se puede implementar en este clúster.", + "Azure Account": "Cuenta de Azure", + "Logged in as": "Inició sesión como", + "Add Cluster from Azure": "Agregar clúster desde Azure", + "Logging out": "Cerrando sesión", + "Log out": "Cerrar sesión", + "Azure CLI/aks-preview requirements not met": "No se han cumplido los requisitos de Azure CLI/aks-preview", + "Dismiss": "Descartar", + "Configure Pipeline": "Configurar canalización", + "Loading Azure context...": "Cargando contexto de Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Acceso de solo lectura a la mayoría de los objetos en un espacio de nombres. No puede ver roles, enlaces de roles ni secretos.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Acceso de lectura y escritura a la mayoría de los objetos en un espacio de nombres. No puedes ver ni modificar roles ni enlaces de roles. Puedes acceder a secretos y ejecutar pods como cualquier ServiceAccount en el espacio de nombres.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Acceso de lectura y escritura a la mayoría de los recursos en un espacio de nombres. Puede crear roles y enlaces de roles dentro del espacio de nombres. No puede modificar la cuota de recursos ni el espacio de nombres en sí.", + "Access": "Acceso", + "Assign permissions to users who need access to your namespace": "Asigne permisos a los usuarios que necesiten acceso a su espacio de nombres", + "Assignee": "Usuario asignado", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Rol", + "Remove assignee": "Quitar usuario asignado", + "Add assignee": "Agregar usuario asignado", + "Only clusters with Azure Entra ID authentication are shown.": "Solo se muestran los clústeres con autenticación de Azure Entra ID.", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}}\u00a0clúster(es) oculto(s): sin Azure Entra ID", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}}\u00a0clúster(es) oculto(s): sin Azure Entra ID", + "No eligible clusters found in this subscription.": "No se encontraron clústeres aptos en esta suscripción.", + "{{count}} eligible cluster(s) found._one": "{{count}}\u00a0clúster(es) elegible(s) encontrado(s).", + "{{count}} eligible cluster(s) found._many": "", + "{{count}} eligible cluster(s) found._other": "{{count}}\u00a0clúster(es) elegible(s) encontrado(s).", "Cluster is currently updating. Deployment may fail.": "El clúster se está actualizando. Es posible que falle la implementación.", - "Cluster is deallocated. Please start the cluster before deploying.": "El clúster está desasignado. Inicie el clúster antes de la implementación.", - "Cluster is in a failed state. Please check Azure portal.": "El clúster está en estado de error. Consulte Azure Portal.", + "Cluster is being deleted. Cannot deploy to this cluster.": "El clúster se está eliminando. No se puede implementar en este clúster.", "Cluster is still being created. Please wait until creation completes.": "El clúster aún se está creando. Espere hasta que se complete la creación.", + "Cluster is in a failed state. Please check Azure portal.": "El clúster está en estado de error. Consulte Azure Portal.", "Cluster is stopped. Please start the cluster before deploying.": "El clúster está detenido. Inicie el clúster antes de la implementación.", + "Cluster is deallocated. Please start the cluster before deploying.": "El clúster está desasignado. Inicie el clúster antes de la implementación.", + "AKS Preview Extension Required": "Extensión de la versión preliminar de AKS requerida", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "La extensión aks-preview es necesaria para crear espacios de nombres administrados. Instálela para continuar.", + "Installing": "Instalando", + "Install Extension": "Instalar extensión", + "AKS Preview Extension installed successfully!": "La extensión de versión preliminar de AKS se instaló correctamente", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "La característica ManagedNamespacePreview debe estar registrada para crear espacios de nombres administrados.", + "Current state": "Estado actual", + "Please register it to continue.": "Regístrelo para continuar.", + "Register ManagedNamespacePreview Feature": "Registrar la característica ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "La característica ManagedNamespacePreview se ha registrado correctamente.", + "Project Name": "Nombre del proyecto", + "Checking if another project exists with same name": "Comprobando si existe otro proyecto con el mismo nombre", + "Another project already exists with same name. Please choose a different name.": "Ya existe un proyecto con el mismo nombre. Elija otro.", + "Project name is available": "El nombre del proyecto está disponible", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "El nombre del proyecto solo debe contener letras minúsculas, números y guiones (sin espacios)", + "Project Description": "Descripción del proyecto", + "Enter project description": "Escriba la descripción del proyecto", + "Select a subscription": "Seleccionar una suscripción", + "Search subscriptions": "Buscar suscripciones", + "No subscriptions found": "No se encontraron suscripciones", + "Retry": "Reintentar", + "Cluster": "Clúster", + "Please select a subscription first": "Seleccione primero una suscripción", + "Loading clusters": "Cargando los clústeres", + "Select a cluster": "Seleccionar un clúster", + "Search clusters": "Buscar clústeres", + "No clusters with Azure Entra ID authentication found for this subscription": "No se encontraron clústeres con autenticación de Azure Entra ID para esta suscripción", "Cluster Not Ready": "El clúster no está listo", - "Collapse panel": "Contraer panel", - "Complete authorization on your browser screen": "Completa la autorización en la pantalla del navegador", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Completa la instalación en tu navegador. Se actualizará automáticamente una vez que la aplicación esté instalada en {{repoName}}.", - "Compute Quota": "Cuota de proceso", - "Configuration Complete": "Configuración completada", - "Configuration Error": "Error de configuración", + "Refreshing": "Actualización en curso", + "Refresh": "Actualizar", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Falta el clúster seleccionado en kubeconfig. Regístrelo antes de continuar.", + "Registering cluster": "Registrando clúster", + "Wizard steps": "Pasos del asistente", + "Azure Monitor Metrics (Managed Prometheus)": "Métricas de Azure Monitor (Prometheus gestionado)", + "KEDA (Event-Driven Autoscaling)": "KEDA (escalado automático basado en eventos)", + "VPA (Vertical Pod Autoscaler)": "VPA (escalador automáticos verticales de pod)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "La configuración está tardando más de lo esperado. Comprueba el estado actual de tu clúster en Azure Portal.", - "Configure": "Configurar", - "Configure Cluster": "Configurar el clúster", - "Configure Container Deployment": "Configurar implementación de contenedor", - "Configure container health probes.": "Configure sondeos de estado del contenedor.", - "Configure Pipeline": "Configurar canalización", - "Configure security context settings for the container.": "Configure las opciones de contexto de seguridad para el contenedor.", - "Configure Workload Identity": "Configurar identidad de carga de trabajo", - "Configured Replicas": "Réplicas configuradas", + "Failed to enable addons": "Error al habilitar los complementos", + "Failed to enable addon: {{error}}": "Error al habilitar el complemento: {{error}}", + "Cluster Configuration": "Configuración de clúster", + "(already enabled)": "(ya se ha habilitado)", + "The following addons can be enabled on this cluster:": "Se pueden habilitar los siguientes complementos en este clúster:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "No se puede cambiar el motor de directiva de red tras crear el clúster. Crea un nuevo clúster con", + "for full network policy support.": "para obtener compatibilidad total con la directiva de red.", + "Enabling these addons may incur additional Azure costs.": "Habilitar estos complementos puede generar costes adicionales en Azure.", + "Configuration Error": "Error de configuración", + "Configuration Complete": "Configuración completada", + "All selected addons have been enabled successfully.": "Todos los complementos seleccionados se han habilitado correctamente.", "Configuring cluster... This may take a few minutes.": "Configurando clúster... Esto podría tardar unos minutos.", - "Configuring federated credential...": "Configurando credencial federada...", + "Enabling Addons...": "Habilitando complementos...", "Configuring...": "Configurando...", - "Confirm & Import": "Confirmar e importar", - "Connect": "Conectar", - "Connect GitHub": "Conectar GitHub", - "Connect Source": "Conectar fuente", - "Connect to GitHub": "Conectarse a GitHub", - "Connected": "Conectado", - "Connected to '{{username}}'.": "Conectado a '{{username}}'.", - "Connecting to GitHub...": "Conectando a GitHub...", - "Connecting...": "Conectando...", - "Container image": "Imagen de contenedor", - "Container Image": "Imagen de contenedor", - "Contents": "Contenido", - "Continue": "Continuar", - "Controls whether a process can gain more privileges than its parent process.": "Controla si un proceso puede obtener más privilegios que su proceso primario.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controla si un proceso puede obtener más privilegios que su proceso primario. Desactivarlo (recomendado) evita ataques de elevación de privilegios.", - "Convert Namespaces to AKS Projects": "Convertir espacios de nombres en proyectos de AKS", - "Converting": "Convirtiendo", - "Converting {{name}} to AKS project (this may take a moment)...": "Convirtiendo {{name}} en proyecto de AKS (esto puede tardar un momento)...", - "Copied!": "Copiado.", - "Copilot agent": "Agente de Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "El agente de Copilot revisó tu repositorio y generó la solicitud de incorporación de cambios de implementación", - "Copy": "Copiar", - "Copy to clipboard": "Copiar en el portapapeles", - "CPU": "CPU", - "CPU limit": "Límite de CPU", - "CPU Limits": "Límites de CPU", - "CPU request": "Solicitud de CPU", - "CPU Requests": "Solicitudes de la CPU", + "Configure Cluster": "Configurar el clúster", + "Compute Quota": "Cuota de proceso", + "Set quota limits to prevent overuse and maintain cluster stability": "Establezca límites de cuota para evitar el uso excesivo y mantener la estabilidad del clúster", "CPU Resources": "Recursos de CPU", - "CPU Usage": "Uso de CPU", - "CPU Usage / Target": "Uso / Objetivo de CPU", - "Create a new namespace on an existing cluster and set it up as a project": "Crea un nuevo espacio de nombres en un clúster existente y configúralo como proyecto", - "Create Application": "Crear aplicación", - "Create deployment PRs": "Crear solicitudes de cambios de implementación", - "Create Namespace": "Crear espacio de nombres", - "Create New Namespace": "Crear un espacio de nombres nuevo", - "Create Project": "Crear proyecto", - "Create Setup PR": "Crear solicitud de incorporación de cambios de configuración", - "Create setup workflow in .github/workflows/": "Crear flujo de trabajo de configuración en .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Cree un LoadBalancer para exponer la aplicación a Internet.", - "Creating managed identity...": "Creando identidad administrada...", - "Creating namespace": "Creando espacio de nombres", - "Creating Namespace": "Creando espacio de nombres", + "CPU Requests": "Solicitudes de la CPU", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU mínima garantizada (1000\u00a0m = 1\u00a0núcleo de CPU)", + "CPU Limits": "Límites de CPU", + "Maximum CPU allowed (1000m = 1 CPU core)": "CPU máxima permitida (1000m = 1 núcleo de CPU)", + "Memory Resources": "Recursos de la memoria", + "Memory Requests": "Solicitudes de memoria", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memoria mínima garantizada (1024\u00a0MiB = 1\u00a0GiB)", + "Memory Limits": "Límites de memoria", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Memoria máxima permitida (1024 MiB = 1 GiB)", + "Basics": "Aspectos básicos", + "Networking Policies": "Directivas de redes", + "Review": "Revisión", + "New Project": "Nuevo proyecto", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Configurar un nuevo proyecto en Azure Kubernetes Service (AKS)", "Creating Project": "Creando proyecto", - "Creating setup PR...": "Creando solicitud de incorporación de cambios de configuración...", - "Creating the trigger issue for the Copilot coding agent.": "Creando el problema del desencadenador para el agente de codificación de Copilot.", - "Current Replicas": "Réplicas actuales", - "Current state": "Estado actual", - "Degraded": "Degradado", - "Delete project": "Eliminar proyecto", - "Delete Project": "Eliminar proyecto", + "Create Project": "Crear proyecto", + "Loading": "Cargando", + "Next": "Siguiente", + "Project Created Successfully!": "El proyecto se creó correctamente.", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "El proyecto de AKS \"{{projectName}}\" se ha creado y está listo para usarse.", + "Application name": "Nombre de aplicación", + "Enter application name": "Escriba el nombre de la aplicación", + "Enter a name for your first application to get started with deployment.": "Escriba un nombre para empezar a implementar su primera aplicación.", + "Create Application": "Crear aplicación", + "Project Creation Failed": "Error al crear el proyecto", + "Set security, communication and access rules for incoming and outgoing traffic": "Establecer reglas de seguridad, comunicación y acceso para el tráfico entrante y saliente", + "Allow traffic within same namespace": "Permitir el tráfico dentro del mismo espacio de nombres", + "Allow all traffic": "Permitir todo el tráfico", + "Deny all traffic": "Denegar todo el tráfico", + "Review Project Configuration": "Revisar la configuración del proyecto", + "Please review all the settings before creating your AKS project": "Revise toda la configuración antes de crear el proyecto de AKS", + "Project Basics": "Conceptos básicos del proyecto", + "Description": "Descripción", + "No description provided": "No se proporcionó ninguna descripción", + "Ingress Policy": "Directiva de entrada", + "Egress Policy": "Directiva de salida", + "CPU": "CPU", + "Requests": "Solicitudes", + "Limits": "Límites", + "Memory": "Memoria", + "Access Control ({{count}} assignee)_one": "Control de acceso ({{count}} usuario asignado)", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Control de acceso ({{count}} usuarios asignados)", + "Not specified": "No especificado", + "Select an option": "Seleccionar una opción", + "No options": "No hay opciones", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Iniciando la creación del proyecto", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "La creación del proyecto agotó el tiempo de espera después de 10\u00a0minutos. Compruebe si se creó el espacio de nombres e inténtelo de nuevo.", + "Initiating managed namespace creation": "Iniciando creación de espacio de nombres administrado", + "Namespace creation failed: {{message}}": "Error al crear el espacio de nombres: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Se inició la creación del espacio de nombres. Supervisión del estado de creación", + "Waiting for namespace to propagate": "Esperando a que se propague el espacio de nombres", + "Namespace status check failed: {{message}}": "Error en la comprobación del estado del espacio de nombres: {{message}}", + "Waiting for namespace to be created": "Esperando a que se cree el espacio de nombres", + "Namespace status verification failed: {{message}}": "Error en la comprobación del estado del espacio de nombres: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "La API de creación de espacio de nombres se ha realizado correctamente, continuando con las asignaciones de usuario", + "Namespace creation completed successfully! Adding user access": "La creación del espacio de nombres se completó correctamente. Agregando acceso de usuario", + "User assignment completed with errors": "Asignación de usuario completada con errores", + "Project creation completed successfully!": "La creación del proyecto se completó correctamente.", + "Performing final status verification": "Realizando comprobación de estado final", + "Final status check failed: {{message}}": "Error al comprobar el estado final: {{message}}", + "Final status verification failed: {{message}}": "Error en la comprobación de estado final: {{message}}", + "All verifications completed successfully!": "Todas las comprobaciones se completaron correctamente.", + "Failed to create project": "No se pudo crear el proyecto.", + "A cluster must be selected": "El clúster debe estar seleccionado", + "Namespace name is required": "El nombre del espacio de nombres es obligatorio", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "El nombre del espacio de nombres debe contener solo letras minúsculas, números y guiones, y debe comenzar y terminar con un carácter alfanumérico", + "Namespace name must be 63 characters or fewer": "El nombre del espacio de nombres debe tener 63 caracteres o menos", + "Creating namespace": "Creando espacio de nombres", + "Updating local settings": "Actualizando la configuración local", + "Namespace created successfully!": "El espacio de nombres se creó correctamente.", + "Failed to create namespace": "No se pudo crear el espacio de nombres", + "No clusters found. Register a cluster first.": "No se encontraron clústeres. Registrar un clúster primero.", + "Namespace Name": "Nombre de espacio de nombres", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Debe contener solo letras minúsculas, números y guiones, y comenzar y terminar con un carácter alfanumérico", + "The namespace will be created on the selected cluster and set up as a project": "El espacio de nombres se creará en el clúster seleccionado y se configurará como un proyecto", + "Type": "Tipo", + "Regular Kubernetes namespace": "Espacio de nombres de Kubernetes normal", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Se creará un nuevo espacio de nombres en el clúster con las etiquetas de proyecto aplicadas. Aparecerá inmediatamente en tu lista de proyectos.", + "Create New Namespace": "Crear un espacio de nombres nuevo", + "Create a new namespace on an existing cluster and set it up as a project": "Crea un nuevo espacio de nombres en un clúster existente y configúralo como proyecto", + "Creating Namespace": "Creando espacio de nombres", + "Namespace Creation Failed": "Error al crear el espacio de nombres", + "Namespace Created Successfully!": "El espacio de nombres se creó correctamente.", + "Your project \"{{projectName}}\" is ready to use.": "Tu proyecto \"{{projectName}}\" está listo para usarse.", + "Go To Projects": "Ir a proyectos", + "Create Namespace": "Crear espacio de nombres", + "Delete project": "Eliminar proyecto", + "Delete Project": "Eliminar proyecto", + "Are you sure you want to delete project \"{{projectId}}\"?": "¿Seguro que quiere eliminar el proyecto \"{{projectId}}\"?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "De manera predeterminada, esto eliminará el espacio de nombres administrado por Azure y las etiquetas de proyecto de los siguientes espacios de nombres:", + "Also delete the namespaces (this will remove all resources within them)": "Eliminar también los espacios de nombres (esto eliminará todos los recursos dentro de ellos)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Advertencia: esta acción no se puede deshacer. Todos los recursos de estos espacios de nombres se eliminarán permanentemente.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Nota: En el caso de los espacios de nombres administrados de AKS, la administración de Azure ARM se quitará automáticamente.", "Delete Project & Namespaces": "Eliminar proyecto y espacios de nombres", - "Deleted project {{ projectId }}.": "Proyecto eliminado {{ projectId }}.", "Deleting project {{ projectId }}…": "Eliminando proyecto {{ projectId }}…", - "Deny all traffic": "Denegar todo el tráfico", - "Deploy": "Implementar", - "Deploy {{repo}}": "Implemente {{repo}}", - "Deploy an application to start viewing metrics.": "Implemente una aplicación para empezar a ver las métricas.", - "Deploy an application to view logs.": "Implemente una aplicación para ver los registros.", + "Cancelled deletion of project {{ projectId }}.": "Se canceló la eliminación del proyecto {{ projectId }}.", + "Deleted project {{ projectId }}.": "Proyecto eliminado {{ projectId }}.", + "Error deleting project {{ projectId }}.": "Error al eliminar el proyecto {{ projectId }}.", "Deploy Application": "Implementar aplicación", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implementar desde Azure Container Registry, Docker Hub o GHCR", + "Failed to load pipeline runs": "No se pudieron cargar las ejecuciones de la canalización", + "Pipeline": "Canalización", + "Set up your pipeline": "Configura tu canalización", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configura una canalización CI/CD para automatizar tus despliegues y optimizar tu flujo de trabajo", + "Waiting for browser authorization...": "Esperando autorización del navegador...", + "Sign in to GitHub to view pipeline runs.": "Inicia sesión en GitHub para ver las ejecuciones de la canalización.", + "Connecting...": "Conectando...", + "No pipeline runs yet.": "Aún no hay ninguna ejecución de canalización.", + "View on GitHub": "Ver en GitHub", + "View run on GitHub": "Ver ejecución en GitHub", + "Healthy": "Correcto", + "Scaled down": "Reducido verticalmente", + "Degraded": "Degradado", + "VS Code": "VS Code", + "Manual": "Manual", + "Manual Deploy": "Implementación manual", + "Deploy {{repo}}": "Implemente {{repo}}", "Deploy via Pipeline": "Implementar mediante canalización", - "Deploying": "Implementando", + "No deployments found in this namespace.": "No se encontraron implementaciones en este espacio de nombres.", "Deployment": "Implementación", - "Deployment PR": "Solicitud de incorporación de cambios de implementación", - "Deployment PR Ready": "Solicitud de incorporación de cambios de implementación lista", - "Deployment PR reviewed and merged": "Solicitud de incorporación de cambios de implementación revisada y fusionada", - "Deployment source": "Origen de implementación", - "Description": "Descripción", - "Deselect All": "Cancelar toda la selección", - "Desired Replicas": "Réplicas deseadas", - "Discard": "Descartar", - "Dismiss": "Descartar", - "Distributes pods evenly across nodes to improve workload distribution.": "Distribuye pods uniformemente entre nodos para mejorar la distribución de la carga de trabajo.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribuye los pods de forma uniforme entre nodos, zonas u otros dominios de topología para mejorar la distribución de la carga de trabajo y la disponibilidad.", - "Done": "Listo", - "Edit Configuration": "Editar configuración", + "Source": "Origen", + "Replicas": "Réplicas", + "Ready": "Listo", + "Status": "Estado", + "Actions": "Acciones", "Edit deployment": "Editar implementación", - "Edit HPA Configuration": "Editar configuración de HPA", - "Edit Manual Scaling Configuration": "Editar configuración de escalado manual", - "Egress Policy": "Directiva de salida", + "View workflow run": "Ver ejecución del flujo de trabajo", + "Re-deploy": "Volver a implementar", + "Failed to trigger deployment": "No se pudo desencadenar la implementación", + "Trigger": "Desencadenador", + "workflow on": "flujo de trabajo en", + "with the following parameters:": "con los parámetros siguientes:", + "Namespace": "Espacio de nombres", + "Sign in": "Iniciar sesión", + "GitHub authentication required to trigger deployment.": "Se requiere autenticación de GitHub para iniciar la implementación.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "La distribución del flujo de trabajo se realizó con éxito. Consulta el progreso en Acciones de GitHub.", + "Close": "Cerrar", + "Triggering...": "Activando...", + "Deploy": "Implementar", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Activa las canalizaciones de GitHub en Configuración → Funciones en versión preliminar para usar implementaciones de canalizaciones.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Habilita las canalizaciones de implementación basadas en GitHub para proyectos de AKS.", - "Enable Horizontal Pod Autoscaler": "Habilitar el escalador automático de pod horizontal", - "Enable liveness probe": "Habilitar sondeo de ejecución", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Habilita o deshabilita funciones que aún están en desarrollo. Las características en vista previa pueden cambiar o eliminarse en futuras versiones.", - "Enable pod anti-affinity": "Habilitar antiafinidad de pod", - "Enable public access": "Habilitar el acceso público", - "Enable readiness probe": "Habilitar sondeo de preparación", - "Enable resource requests and limits": "Habilitar solicitudes y límites de recursos", - "Enable startup probe": "Habilitar sondeo de inicio", - "Enable topology spread constraints": "Habilitar restricciones de propagación de topología", - "Enabling Addons...": "Habilitando complementos...", - "Enabling these addons may incur additional Azure costs.": "Habilitar estos complementos puede generar costes adicionales en Azure.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Asegúrese de que el mínimo ≤ máximo de réplicas y que la CPU de destino esté entre el 10 % y el 95 %.", + "Workloads": "Cargas de trabajo", + "No clusters in this project.": "No hay clústeres en este proyecto.", + "Failed to fetch deployments": "No se pudieron capturar las implementaciones", + "Failed to fetch cluster status": "No se pudo obtener el estado del clúster", + "Configure security context settings for the container.": "Configure las opciones de contexto de seguridad para el contenedor.", + "Run as non root user": "Ejecutar como usuario que no es raíz", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Garantiza que el contenedor se ejecuta como un usuario que no es raíz (UID != 0) para mejorar la seguridad. Esto previene ataques de elevación de privilegios.", "Ensures the container runs as a non-root user for better security.": "Garantiza que el contenedor se ejecuta como un usuario que no es raíz para mejorar la seguridad.", - "Ensuring resource group exists...": "Garantizando que existe el grupo de recursos...", - "Enter a name for your first application to get started with deployment.": "Escriba un nombre para empezar a implementar su primera aplicación.", - "Enter application name": "Escriba el nombre de la aplicación", - "Enter project description": "Escriba la descripción del proyecto", + "Read only root filesystem": "Filesystem principal de solo lectura", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta el sistema de archivos raíz del contenedor como de solo lectura para evitar operaciones de escritura. Esto mejora la seguridad al impedir que código malicioso modifique archivos del sistema.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta el sistema de archivos raíz del contenedor como de solo lectura para evitar operaciones de escritura.", + "Allow privilege escalation": "Permitir la elevación de privilegios", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controla si un proceso puede obtener más privilegios que su proceso primario. Desactivarlo (recomendado) evita ataques de elevación de privilegios.", + "Controls whether a process can gain more privileges than its parent process.": "Controla si un proceso puede obtener más privilegios que su proceso primario.", + "Enable pod anti-affinity": "Habilitar antiafinidad de pod", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Elija la programación de pods en distintos nodos para mejorar la disponibilidad y la tolerancia a errores. Esto ayuda a distribuir los pods por todo el clúster.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Preferir la programación de pods en distintos nodos para mejorar la disponibilidad y la tolerancia a errores.", + "Enable topology spread constraints": "Habilitar restricciones de propagación de topología", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribuye los pods de forma uniforme entre nodos, zonas u otros dominios de topología para mejorar la distribución de la carga de trabajo y la disponibilidad.", + "Distributes pods evenly across nodes to improve workload distribution.": "Distribuye pods uniformemente entre nodos para mejorar la distribución de la carga de trabajo.", + "Container image": "Imagen de contenedor", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Número de réplicas de pod que se ejecutarán. Más réplicas ofrecen mejor disponibilidad y distribución de carga.", + "Continue": "Continuar", + "Configure Container Deployment": "Configurar implementación de contenedor", + "Networking": "Redes", + "Healthchecks": "Comprobaciones de estado", + "Resource Limits": "Límites de recursos", "Environment Variables": "Variables de entorno", - "Error deleting project {{ projectId }}.": "Error al eliminar el proyecto {{ projectId }}.", - "Error Rate": "Tasa de errores", - "Failed to apply": "No se pudo aplicar", - "Failed to apply resources.": "No se pudieron aplicar recursos.", - "Failed to convert namespace: {{message}}": "No se pudo convertir el espacio de nombres: {{message}}", - "Failed to create namespace": "No se pudo crear el espacio de nombres", - "Failed to create project": "No se pudo crear el proyecto.", - "Failed to enable addon: {{error}}": "Error al habilitar el complemento: {{error}}", - "Failed to enable addons": "Error al habilitar los complementos", - "Failed to fetch cluster status": "No se pudo obtener el estado del clúster", - "Failed to fetch deployment status": "No se pudo capturar el estado de implementación", - "Failed to fetch deployments": "No se pudieron capturar las implementaciones", - "Failed to fetch managed namespace details": "No se pudieron obtener los detalles de los espacios de nombres administrados", - "Failed to fetch managed namespaces": "No se pudieron capturar los espacios de nombres administrados", - "Failed to fetch pod status": "No se pudo obtener el estado del pod", - "Failed to fetch service status": "No se ha podido capturar el estado del servicio", - "Failed to import any projects. See details below.": "No se pudo importar ningún proyecto. Consulte los detalles a continuación.", - "Failed to initiate login: {{message}}": "No se pudo iniciar el inicio de sesión: {{message}}", - "Failed to load AKS clusters": "No se pudieron cargar los clústeres de AKS", - "Failed to load Azure context": "No se pudo cargar el contexto de Azure", - "Failed to load pipeline runs": "No se pudieron cargar las ejecuciones de la canalización", - "Failed to load repositories": "No se pudieron cargar los repositorios", - "Failed to load subscriptions": "Error al cargar las suscripciones.", - "Failed to merge cluster: {{message}}": "Error al combinar el clúster: {{message}}", - "Failed to monitor deployment health": "No se pudo supervisar el estado de la implementación", - "Failed to register cluster: {{message}}": "No se pudo registrar el clúster: {{message}}", - "Failed to trigger deployment": "No se pudo desencadenar la implementación", - "Failed to update managed namespace": "No se ha podido actualizar el espacio de nombres administrado", - "failureThreshold": "failureThreshold", - "Features": "Características", - "Federated Credential": "Credencial federada", - "Filter repositories": "Filtrar repositorios", - "Final status check failed: {{message}}": "Error al comprobar el estado final: {{message}}", - "Final status verification failed: {{message}}": "Error en la comprobación de estado final: {{message}}", - "for full network policy support.": "para obtener compatibilidad total con la directiva de red.", + "Workload Identity": "", + "Advanced": "Avanzado", + "Information about {{label}}": "Información sobre {{label}}", + "Kubernetes YAML": "YAML de Kubernetes", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Añada uno o varios manifiestos de Kubernetes. Cargue archivos para rellenar el editor o pegue o edite directamente a continuación.", + "Upload files": "Cargar archivos", + "Clear editor": "Borrar editor", + "Review & Deploy": "Revisar e implementar", "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifiestos de Kubernetes generados (espacio de nombres: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Se requiere autenticación de GitHub para iniciar la implementación.", - "GitHub Pipelines": "Canalizaciones de GitHub", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Ir a proyectos", - "Guided configuration for ports, replicas, env, and resources": "Configuración guiada para puertos, réplicas, entornos y recursos", - "Healthchecks": "Comprobaciones de estado", - "Healthy": "Correcto", + "Resources to be deployed ({{count}} object)_one": "Recursos que se van a implementar ({{count}}\u00a0objeto)", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Recursos que se van a implementar ({{count}}\u00a0objeto)", + "namespace: {{namespace}}": "espacio de nombres: {{namespace}}", + "Configure": "Configurar", + "Deploying": "Implementando", + "Key": "Clave", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Valor", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "quitar", + "Add variable": "Agregar variable", + "Configure container health probes.": "Configure sondeos de estado del contenedor.", + "Manually configure settings": "Configurar opciones manualmente", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "De manera predeterminada, las sondas usan HTTP GET en la ruta raíz con valores predeterminados adecuados. Habilite esta opción para personalizar la configuración de las sondas.", + "Enable liveness probe": "Habilitar sondeo de ejecución", + "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes reinicia el contenedor si esta comprobación falla repetidamente. Se usa para detectar y recuperarse de bloqueos o contenedores que no responden.", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes reinicia el contenedor si esta comprobación falla repetidamente.", + "Liveness path": "Ruta de ejecución", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Ruta HTTP para comprobar la ejecución (por ejemplo, /healthz). El sondeo realiza una solicitud HTTP GET a esta ruta.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Número de segundos después de que el contenedor se haya iniciado antes de que se inicien los sondeos de ejecución.", + "periodSeconds": "periodSeconds", "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Frecuencia (en segundos) para realizar el sondeo de ejecución. El valor predeterminado es 10 segundos.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Frecuencia (en segundos) para realizar el sondeo de preparación. El valor predeterminado es 10 segundos.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Frecuencia (en segundos) para realizar el sondeo de inicio. El valor predeterminado es 10 segundos.", - "HPA scales pods based on CPU utilization.": "HPA escala los pods en función de la utilización de la CPU.", - "Identity Resource Group": "Grupo de recursos de la identidad", - "Import AKS Projects": "Importar proyectos de AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importa los espacios de nombres administrados existentes y los espacios de nombres normales como proyectos. Los espacios de nombres que aún no sean proyectos del escritorio de AKS se convertirán añadiendo la etiqueta de proyecto necesaria.", - "Import Selected Projects": "Importar los proyectos seleccionados", - "Importing": "Importando", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importando {{current}} de {{total}}: {{name}} de {{clusterName}}", - "in resource group": "en el grupo de recursos", - "Information about {{label}}": "Información sobre {{label}}", - "Information about CPU limit": "Información sobre el límite de CPU", - "Information about CPU request": "Información sobre la solicitud de CPU", - "Information about memory limit": "Información sobre el límite de memoria", - "Information about memory request": "Información sobre la solicitud de memoria", - "Information about target CPU utilization": "Información sobre la utilización de CPU de destino", - "Ingress Policy": "Directiva de entrada", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Inicializando...", - "Initiating Azure login": "Iniciando sesión en Azure", - "Initiating managed namespace creation": "Iniciando creación de espacio de nombres administrado", - "Install Extension": "Instalar extensión", - "Install GitHub App": "Instalar la aplicación de GitHub", - "Installing": "Instalando", - "Internal only": "Solo interno", - "Invalid YAML": "YAML no válido", - "Invalid YAML: List item missing required field (kind)": "YAML no válido: falta un campo obligatorio (kind) en el elemento de lista", - "Invalid YAML: List item missing required field (metadata.name)": "YAML no válido: falta un campo obligatorio (metadata.name) en el elemento de lista", - "Invalid YAML: List resource must have an array \"items\" field": "YAML no válido: el recurso de lista debe tener un campo \"items\" de matriz", - "Invalid YAML: missing required field (kind)": "YAML no válido: falta un campo obligatorio (kind)", - "Invalid YAML: missing required field (metadata.name)": "YAML no válido: falta un campo obligatorio (metadata.name)", - "Issue {{number}}": "Problema {{number}}", - "Issues": "Problemas", - "just now": "ahora mismo", - "KEDA (Event-Driven Autoscaling)": "KEDA (escalado automático basado en eventos)", - "Keep Going": "Continuar", - "Key": "Clave", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes reinicia el contenedor si esta comprobación falla repetidamente.", - "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes reinicia el contenedor si esta comprobación falla repetidamente. Se usa para detectar y recuperarse de bloqueos o contenedores que no responden.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes desactiva temporalmente el estado de actividad y la preparación hasta que el inicio tenga éxito.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes desactiva temporalmente el estado de actividad y la preparación hasta que el inicio tenga éxito. Es útil para contenedores que tardan mucho en arrancar.", - "Kubernetes Version": "Versión de Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes no enviará tráfico al pod hasta que esta comprobación sea superada.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Número de segundos tras los cuales se agota el tiempo de espera del sondeo. El valor predeterminado es 1 segundo.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Cuando un sondeo falla, Kubernetes lo intentará varias veces antes de rendirse y reiniciar el contenedor.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Número mínimo de operaciones correctas consecutivas para que el sondeo se considere correcto después de haber dado error. El valor predeterminado es\u00a01.", + "Enable readiness probe": "Habilitar sondeo de preparación", "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes no enviará tráfico al pod hasta que esta comprobación sea superada. Se usa para indicar cuándo un contenedor está listo para aceptar tráfico.", - "Kubernetes YAML": "YAML de Kubernetes", - "less than a minute": "menos de un minuto", - "Limits": "Límites", - "Liveness path": "Ruta de ejecución", - "Loading": "Cargando", - "Loading AKS clusters": "Cargando clústeres de AKS", - "Loading Azure account information": "Cargando información de la cuenta de Azure", - "Loading Azure context...": "Cargando contexto de Azure...", - "Loading clusters": "Cargando los clústeres", - "Loading configuration...": "Cargando configuración...", - "Loading deployments": "Cargando implementaciones", - "Loading metrics": "Cargando métricas", - "Loading scaling metrics from Prometheus": "Cargando métricas de escalado desde Prometheus", - "Loading subscriptions": "Cargando suscripciones", - "Loading...": "Cargando...", - "Location": "Ubicación", - "Log out": "Cerrar sesión", - "Logged in as": "Inició sesión como", - "Logging out": "Cerrando sesión", - "Login successful! Redirecting": "Inicio de sesión correcto Redirigiendo", - "Login timeout. Please try again.": "Se agotó el tiempo de expiración de inicio de sesión. Inténtelo de nuevo.", - "Managed Identity": "Identidad administrada", - "managed namespaces only": "solo espacios de nombres administrados", - "ManagedNamespacePreview feature registered successfully!": "La característica ManagedNamespacePreview se ha registrado correctamente.", - "Manual": "Manual", - "Manual Deploy": "Implementación manual", - "Manually configure settings": "Configurar opciones manualmente", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes no enviará tráfico al pod hasta que esta comprobación sea superada.", + "Readiness path": "Ruta de preparación", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Ruta HTTP para comprobar la preparación (por ejemplo, /ready). El sondeo realiza una solicitud HTTP GET a esta ruta.", + "Number of seconds after the container has started before readiness probes are initiated.": "Número de segundos después de que el contenedor se haya iniciado antes de que se inicien los sondeos de preparación.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Frecuencia (en segundos) para realizar el sondeo de preparación. El valor predeterminado es 10 segundos.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Cuando un sondeo falla, Kubernetes lo intentará varias veces antes de marcar el pod como no listo.", + "Enable startup probe": "Habilitar sondeo de inicio", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes desactiva temporalmente el estado de actividad y la preparación hasta que el inicio tenga éxito. Es útil para contenedores que tardan mucho en arrancar.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes desactiva temporalmente el estado de actividad y la preparación hasta que el inicio tenga éxito.", + "Startup path": "Ruta de inicio", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Ruta HTTP para comprobar el inicio (por ejemplo, /startup). El sondeo realiza una solicitud HTTP GET a esta ruta.", + "Number of seconds after the container has started before startup probes are initiated.": "Número de segundos después de que el contenedor se haya iniciado antes de que se inicien los sondeos de inicio.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Frecuencia (en segundos) para realizar el sondeo de inicio. El valor predeterminado es 10 segundos.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Cuando un sondeo falla, Kubernetes lo intentará varias veces antes de rendirse. Para los sondeos de inicio, esto determina cuánto tiempo esperar antes de reiniciar.", + "Enable Horizontal Pod Autoscaler": "Habilitar el escalador automático de pod horizontal", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Escala automáticamente el número de pods según el uso de CPU. El HPA aumentará los pods cuando el uso de CPU supere el objetivo y los reducirá cuando esté por debajo.", + "HPA scales pods based on CPU utilization.": "HPA escala los pods en función de la utilización de la CPU.", + "Min replicas": "Réplicas mínimas", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Número mínimo de réplicas de pod que el HPA mantendrá, incluso cuando el uso de CPU sea bajo.", "Max replicas": "Máximo de réplicas", - "Maximum CPU allowed (1000m = 1 CPU core)": "CPU máxima permitida (1000m = 1 núcleo de CPU)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Memoria máxima permitida (1024 MiB = 1 GiB)", - "Maximum Replicas": "Número máximo de réplicas", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Número máximo de réplicas de pod al que el HPA puede escalar verticalmente cuando el uso de CPU es alto.", + "Target CPU utilization": "Uso de CPU de destino", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Porcentaje objetivo de utilización media de CPU en todos los pods. El HPA escalará verticalmente cuando el uso de CPU supere este valor y se reducirá verticalmente cuando esté por debajo.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Asegúrese de que el mínimo ≤ máximo de réplicas y que la CPU de destino esté entre el 10\u00a0% y el 95\u00a0%.", + "Target port": "Puerto de destino", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Número de puerto en el que escucha tu contenedor. Es el puerto dentro del contenedor donde se ejecuta la aplicación.", + "Service port": "Puerto de servicio", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Número de puerto expuesto por el servicio de Kubernetes. El tráfico a este puerto se redirige al puerto de destino.", + "Use custom service port": "Usar puerto de servicio personalizado", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "De manera predeterminada, el puerto del servicio coincide con el puerto de destino. Active esta opción para usar un puerto diferente para el servicio.", + "Service type": "Tipo de servicio", + "Internal only": "Solo interno", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Use ClusterIP. Ideal para servicios a los que solo se puede acceder dentro del clúster.", + "Enable public access": "Habilitar el acceso público", + "Creates a LoadBalancer to expose the application to the internet.": "Cree un LoadBalancer para exponer la aplicación a Internet.", + "Enable resource requests and limits": "Habilitar solicitudes y límites de recursos", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Configura las solicitudes de CPU y memoria (recursos garantizados) y los límites (recursos máximos) para controlar la asignación de recursos y evitar que los contenedores consuman recursos excesivos del clúster.", + "CPU request": "Solicitud de CPU", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Cantidad mínima de CPU garantizada para el contenedor. Kubernetes programará el pod en un nodo con al menos esta cantidad de CPU disponible.", + "millicores": "milinúcleos", + "CPU limit": "Límite de CPU", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Cantidad máxima de CPU que puede usar el contenedor. Si se supera, el contenedor se limitará.", + "Memory request": "Solicitud de memoria", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Cantidad mínima de memoria garantizada para el contenedor. Kubernetes programará el pod en un nodo con al menos esta cantidad de memoria disponible.", "mebibytes": "mebibytes", - "Memory": "Memoria", "Memory limit": "Límite de memoria", - "Memory Limits": "Límites de memoria", - "Memory request": "Solicitud de memoria", - "Memory Requests": "Solicitudes de memoria", - "Memory Resources": "Recursos de la memoria", - "Memory Usage": "Uso de memoria", - "Memory utilization": "Uso de memoria", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Combinando clúster {{clusterName}} ({{count}} espacio de nombres)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Combinando clúster {{clusterName}} ({{count}} espacio de nombres)", - "Metrics": "Métricas", - "Metrics refreshed every 30 seconds": "Métricas actualizadas cada 30 segundos", - "Metrics Unavailable": "Métricas no disponibles", - "millicores": "milinúcleos", - "Min replicas": "Réplicas mínimas", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Número mínimo de operaciones correctas consecutivas para que el sondeo se considere correcto después de haber dado error. El valor predeterminado es 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU mínima garantizada (1000 m = 1 núcleo de CPU)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memoria mínima garantizada (1024 MiB = 1 GiB)", - "Minimum Replicas": "Mínimo de réplicas", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Falta el contexto de Azure necesario. Asegúrate de haber iniciado sesión y de que el clúster esté asociado a una suscripción, grupo de recursos e inquilino válidos.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta el sistema de archivos raíz del contenedor como de solo lectura para evitar operaciones de escritura.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta el sistema de archivos raíz del contenedor como de solo lectura para evitar operaciones de escritura. Esto mejora la seguridad al impedir que código malicioso modifique archivos del sistema.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Compatibilidad con varios archivos (implementaciones, servicios, entrada, etc.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Debe contener solo letras minúsculas, números y guiones, y comenzar y terminar con un carácter alfanumérico", - "Name": "Nombre", - "Namespace": "Espacio de nombres", - "Namespace '{{name}}' converted and imported as project": "Espacio de nombres '{{name}}' convertido e importado como proyecto", - "Namespace created successfully!": "El espacio de nombres se creó correctamente.", - "Namespace Created Successfully!": "El espacio de nombres se creó correctamente.", - "Namespace creation API succeeded, proceeding with user assignments": "La API de creación de espacio de nombres se ha realizado correctamente, continuando con las asignaciones de usuario", - "Namespace creation completed successfully! Adding user access": "La creación del espacio de nombres se completó correctamente. Agregando acceso de usuario", - "Namespace Creation Failed": "Error al crear el espacio de nombres", - "Namespace creation failed: {{message}}": "Error al crear el espacio de nombres: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Se inició la creación del espacio de nombres. Supervisión del estado de creación", - "Namespace Name": "Nombre de espacio de nombres", - "Namespace name is required": "El nombre del espacio de nombres es obligatorio", - "Namespace name must be 63 characters or fewer": "El nombre del espacio de nombres debe tener 63 caracteres o menos", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "El nombre del espacio de nombres debe contener solo letras minúsculas, números y guiones, y debe comenzar y terminar con un carácter alfanumérico", - "Namespace status check failed: {{message}}": "Error en la comprobación del estado del espacio de nombres: {{message}}", - "Namespace status verification failed: {{message}}": "Error en la comprobación del estado del espacio de nombres: {{message}}", - "namespace: {{namespace}}": "espacio de nombres: {{namespace}}", - "Namespaces to convert:": "Espacios de nombres para convertir:", - "Network I/O": "E/S de red", - "Network In": "Entrada de red", - "Network Out": "Salida de red", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "No se puede cambiar el motor de directiva de red tras crear el clúster. Crea un nuevo clúster con", - "Networking": "Redes", - "Networking Policies": "Directivas de redes", - "New Project": "Nuevo proyecto", - "Next": "Siguiente", - "No": "No", - "No AKS clusters found in this subscription.": "No se encontraron clústeres de AKS en esta suscripción.", - "No cluster is associated with this project.": "No hay ningún clúster asociado a este proyecto.", - "No clusters found. Register a cluster first.": "No se encontraron clústeres. Registrar un clúster primero.", - "No clusters in this project.": "No hay clústeres en este proyecto.", - "No clusters with Azure Entra ID authentication found for this subscription": "No se encontraron clústeres con autenticación de Azure Entra ID para esta suscripción", - "No data available": "No hay datos disponibles", - "No deployments found": "No se encontraron implementaciones", - "No Deployments Found": "No se encontró ninguna implementación", - "No deployments found in this namespace.": "No se encontraron implementaciones en este espacio de nombres.", - "No description provided": "No se proporcionó ninguna descripción", - "No eligible clusters found in this subscription.": "No se encontraron clústeres aptos en esta suscripción.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Cantidad máxima de memoria que puede usar el contenedor. Si se supera, el contenedor se cerrará (OOMKilled).", + "Container Image": "Imagen de contenedor", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implementar desde Azure Container Registry, Docker Hub o GHCR", + "Auto-generated Deployment and Service manifests": "Manifiestos de implementación y servicio generados automáticamente", + "Guided configuration for ports, replicas, env, and resources": "Configuración guiada para puertos, réplicas, entornos y recursos", "No Kubernetes expertise required to get started": "No es necesario tener conocimientos de Kubernetes para empezar", - "No options": "No hay opciones", - "No pipeline runs yet.": "Aún no hay ninguna ejecución de canalización.", - "No pods found for deployment \"{{name}}\"": "No se encontraron pods para la implementación \"{{name}}\"", - "No repositories found": "No se encontraron repositorios", - "No repositories match your filter": "Ningún repositorio coincide con el filtro", - "No response time data available": "No hay datos de tiempo de respuesta disponibles", - "No scaling data available": "No hay datos de escalado disponibles", - "No subscriptions found": "No se encontraron suscripciones", - "Not specified": "No especificado", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Nota: En el caso de los espacios de nombres administrados de AKS, la administración de Azure ARM se quitará automáticamente.", - "Number of Replicas": "Número de réplicas", - "Number of seconds after the container has started before liveness probes are initiated.": "Número de segundos después de que el contenedor se haya iniciado antes de que se inicien los sondeos de ejecución.", - "Number of seconds after the container has started before readiness probes are initiated.": "Número de segundos después de que el contenedor se haya iniciado antes de que se inicien los sondeos de preparación.", - "Number of seconds after the container has started before startup probes are initiated.": "Número de segundos después de que el contenedor se haya iniciado antes de que se inicien los sondeos de inicio.", - "Number of seconds after which the probe times out. Default is 1 second.": "Número de segundos tras los cuales se agota el tiempo de espera del sondeo. El valor predeterminado es 1 segundo.", - "OIDC trust for": "Confianza OIDC para", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Una vez que el agente haya creado la solicitud de incorporación de cambios de implementación, revisa los archivos generados y fusiónalos para iniciar la canalización de implementación", - "Only clusters with Azure Entra ID authentication are shown.": "Solo se muestran los clústeres con autenticación de Azure Entra ID.", - "Performing final status verification": "Realizando comprobación de estado final", - "periodSeconds": "periodSeconds", - "Pipeline": "Canalización", - "Pipeline configured": "Canalización configurada", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Complete la autenticación en su navegador. Esta ventana se redirigirá automáticamente cuando finalice el inicio de sesión.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Regístrelo para continuar.", - "Please review all the settings before creating your AKS project": "Revise toda la configuración antes de crear el proyecto de AKS", - "Please select a deployment to view metrics": "Seleccione una implementación para ver las métricas", - "Please select a subscription first": "Seleccione primero una suscripción", - "Please select at least one namespace to import": "Seleccione al menos un espacio de nombres para importar", - "Please sign in to Azure to continue.": "Inicia sesión en Azure para continuar.", - "Pod Details": "Detalles del pod", - "Pod Name": "Nombre del pod", - "PR {{number}}": "Solicitud de cambios {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Preferir la programación de pods en distintos nodos para mejorar la disponibilidad y la tolerancia a errores.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Elija la programación de pods en distintos nodos para mejorar la disponibilidad y la tolerancia a errores. Esto ayuda a distribuir los pods por todo el clúster.", + "Bring your own Kubernetes manifests to deploy": "Use sus propios manifiestos de Kubernetes para implementar", + "Use existing manifests for full control": "Usar manifiestos existentes para el control total", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Compatibilidad con varios archivos (implementaciones, servicios, entrada, etc.)", "Preview and basic validation before apply": "Vista previa y validación básica antes de aplicar", - "Preview Features": "Características en vista previa", - "Project '{{name}}' successfully imported": "Proyecto '{{name}}' importado correctamente", - "Project Basics": "Conceptos básicos del proyecto", - "Project Created Successfully!": "El proyecto se creó correctamente.", - "Project creation completed successfully!": "La creación del proyecto se completó correctamente.", - "Project Creation Failed": "Error al crear el proyecto", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "La creación del proyecto agotó el tiempo de espera después de 10 minutos. Compruebe si se creó el espacio de nombres e inténtelo de nuevo.", - "Project Description": "Descripción del proyecto", - "Project Name": "Nombre del proyecto", - "Project name is available": "El nombre del proyecto está disponible", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "El nombre del proyecto solo debe contener letras minúsculas, números y guiones (sin espacios)", - "Project Status": "Estado del proyecto", - "Pull requests": "Solicitudes de incorporación de cambios", - "Push agent config files": "Enviar archivos de configuración del agente", - "Re-deploy": "Volver a implementar", - "Read only root filesystem": "Filesystem principal de solo lectura", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Acceso de solo lectura a la mayoría de los objetos en un espacio de nombres. No puede ver roles, enlaces de roles ni secretos.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Acceso de lectura y escritura a la mayoría de los objetos en un espacio de nombres. No puedes ver ni modificar roles ni enlaces de roles. Puedes acceder a secretos y ejecutar pods como cualquier ServiceAccount en el espacio de nombres.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Acceso de lectura y escritura a la mayoría de los recursos en un espacio de nombres. Puede crear roles y enlaces de roles dentro del espacio de nombres. No puede modificar la cuota de recursos ni el espacio de nombres en sí.", - "Readiness path": "Ruta de preparación", - "Ready": "Listo", - "Refresh": "Actualizar", - "Refreshing": "Actualización en curso", - "Register AKS Cluster": "Registro del clúster de AKS", - "Register Cluster": "Registrar clúster", - "Register ManagedNamespacePreview Feature": "Registrar la característica ManagedNamespacePreview", - "Registering": "Registrando", - "Registering cluster": "Registrando clúster", - "Regular": "Normal", - "Regular Kubernetes namespace": "Espacio de nombres de Kubernetes normal", - "remove": "quitar", - "Remove assignee": "Quitar usuario asignado", - "Reopen install page": "Volver a abrir la página de instalación", - "Replica Bounds": "Límites de réplica", - "Replicas": "Réplicas", - "Request & error rate": "Tasa de solicitudes y errores", - "Request Rate": "Solicitar tarifa", - "Requests": "Solicitudes", - "Required Permissions": "Permisos necesarios", - "Resource Group": "Grupo de recursos", - "Resource group where the managed identity will be created": "Grupo de recursos donde se creará la identidad administrada", - "Resource Limits": "Límites de recursos", - "Resource Usage": "Uso de recursos", - "Resources to be deployed ({{count}} object)_one": "Recursos que se van a implementar ({{count}} objeto)", - "Resources to be deployed ({{count}} object)_other": "Recursos que se van a implementar ({{count}} objeto)", - "Response Time": "Tiempo de respuesta", - "Restarts": "Reinicios", - "Retry": "Reintentar", - "Review": "Revisión", - "Review & Deploy": "Revisar e implementar", - "Review & Merge": "Revisar y combinar", - "Review and merge the setup PR to enable the Copilot agent.": "Revisa y fusiona la solicitud de incorporación de cambios de configuración para activar el agente Copilot.", - "Review on GitHub": "Revisar en GitHub", - "Review Project Configuration": "Revisar la configuración del proyecto", - "Role": "Rol", - "Role Assignment": "Asignación de roles", - "Run as non root user": "Ejecutar como usuario que no es raíz", - "Run deployment workflows": "Ejecutar flujos de trabajo de implementación", - "Save": "Guardar", - "Scaled down": "Reducido verticalmente", - "Scaling": "Escalando", - "Scaling Chart Unavailable": "Gráfico de escalado no disponible", - "Scaling History (Last 24 Hours)": "Historial de escalado (últimas 24 horas)", - "Scaling Mode": "Modo de escalado", - "Scaling Overview": "Información general sobre el escalado", - "Search clusters": "Buscar clústeres", - "Search subscriptions": "Buscar suscripciones", - "Select a cluster": "Seleccionar un clúster", - "Select a deployment to view metrics": "Seleccione una implementación para ver las métricas", - "Select a deployment to view scaling metrics": "Seleccione una implementación para ver las métricas de escalado", - "Select a subscription": "Seleccionar una suscripción", - "Select All": "Seleccionar todo", - "Select an AKS cluster": "Seleccione un clúster de AKS", - "Select an Azure subscription": "Selecciona una suscripción de Azure.", - "Select an option": "Seleccionar una opción", - "Select Deployment": "Seleccionar implementación", - "Select Namespaces to Import": "Seleccionar espacios de nombres para importar", - "Select repository": "Seleccionar repositorio", "Select Source": "Seleccionar origen", - "Selected Cluster Details": "Detalles del clúster seleccionado", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Falta el clúster seleccionado en kubeconfig. Regístrelo antes de continuar.", - "Service port": "Puerto de servicio", - "Service type": "Tipo de servicio", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Configura las solicitudes de CPU y memoria (recursos garantizados) y los límites (recursos máximos) para controlar la asignación de recursos y evitar que los contenedores consuman recursos excesivos del clúster.", - "Set quota limits to prevent overuse and maintain cluster stability": "Establezca límites de cuota para evitar el uso excesivo y mantener la estabilidad del clúster", - "Set security, communication and access rules for incoming and outgoing traffic": "Establecer reglas de seguridad, comunicación y acceso para el tráfico entrante y saliente", - "Set the desired number of pod replicas for this deployment": "Establecer el número deseado de réplicas de pod para esta implementación", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configura una canalización CI/CD para automatizar tus despliegues y optimizar tu flujo de trabajo", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Configurar un nuevo proyecto en Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Configurar el agente de Copilot", - "Set up your pipeline": "Configura tu canalización", - "Setting up Copilot agent...": "Configurando el agente de Copilot...", - "Setup PR Created": "Solicitud de incorporación de cambios de configuración creada", - "Setup PR reviewed and merged": "Solicitud de incorporación de cambios de configuración revisada y fusionada", - "Sign in": "Iniciar sesión", - "Sign in to GitHub": "Iniciar sesión en GitHub", - "Sign in to GitHub to view pipeline runs.": "Inicia sesión en GitHub para ver las ejecuciones de la canalización.", - "Sign in with Azure": "Iniciar sesión con Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Inicie sesión con su cuenta de Azure para administrar clústeres y recursos de AKS", - "Source": "Origen", - "Starting project creation": "Iniciando la creación del proyecto", - "Startup path": "Ruta de inicio", - "Status": "Estado", - "Subscription": "Suscripción", - "Successfully merged {{count}} cluster(s)_one": "{{count}} clústeres se combinaron correctamente", - "Successfully merged {{count}} cluster(s)_other": "{{count}} clústeres se combinaron correctamente", - "successThreshold": "successThreshold", - "Target CPU utilization": "Uso de CPU de destino", - "Target CPU Utilization (%)": "Uso de CPU de destino (%)", - "Target port": "Puerto de destino", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "El agente ha creado la solicitud de incorporación de cambios de implementación. Revisa los archivos generados y fusiónalos para iniciar la canalización de implementación.", - "The agent is creating the setup PR to enable the Copilot agent.": "El agente está creando la solicitud de incorporación de cambios de configuración para activar el agente de Copilot.", + "Choose a source for your deployment (container image, repo, etc.).": "Elija un origen para su implementación (imagen de contenedor, repositorio, etc.).", + "Deployment source": "Origen de implementación", + "Features": "Características", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Grupo de recursos de la identidad", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Comprobando si existe la identidad...", + "Creating managed identity...": "Creando identidad administrada...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "YAML no válido: falta un campo obligatorio (kind)", + "Invalid YAML: List resource must have an array \"items\" field": "YAML no válido: el recurso de lista debe tener un campo \"items\" de matriz", + "Invalid YAML: List item missing required field (kind)": "YAML no válido: falta un campo obligatorio (kind) en el elemento de lista", + "Invalid YAML: List item missing required field (metadata.name)": "YAML no válido: falta un campo obligatorio (metadata.name) en el elemento de lista", + "Invalid YAML: missing required field (metadata.name)": "YAML no válido: falta un campo obligatorio (metadata.name)", + "Invalid YAML": "YAML no válido", + "Validation failed": "Error de validación", + "Failed to apply": "No se pudo aplicar", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} recursos aplicados, pero {{failed}} con errores:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "Se han aplicado {{count}} recursos correctamente.", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "Se han aplicado {{count}} recursos correctamente.", + "Failed to apply resources.": "No se pudieron aplicar recursos.", + "unnamed": "sin nombre", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Contenido", + "Push agent config files": "Enviar archivos de configuración del agente", + "Workflows": "Flujos de trabajo", + "Create setup workflow in .github/workflows/": "Crear flujo de trabajo de configuración en .github/workflows/", + "Pull requests": "Solicitudes de incorporación de cambios", + "Create deployment PRs": "Crear solicitudes de cambios de implementación", + "Issues": "Problemas", + "Track agent progress": "Seguimiento del progreso del agente", + "Run deployment workflows": "Ejecutar flujos de trabajo de implementación", + "Connect to GitHub": "Conectarse a GitHub", + "Connected to '{{username}}'.": "Conectado a '{{username}}'.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autoriza al escritorio de AKS para crear canalizaciones de implementación en tu repositorio.", + "Required Permissions": "Permisos necesarios", + "Complete authorization on your browser screen": "Completa la autorización en la pantalla del navegador", + "Connect": "Conectar", + "Select repository": "Seleccionar repositorio", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Completa la instalación en tu navegador. Se actualizará automáticamente una vez que la aplicación esté instalada en {{repoName}}.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "La aplicación de GitHub de escritorio de AKS debe estar instalada en {{repoName}} para continuar.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "La extensión aks-preview es necesaria para crear espacios de nombres administrados. Instálela para continuar.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "El agente de codificación de Copilot está analizando tu repositorio y generando una solicitud de incorporación de cambios de implementación con Dockerfile, manifiestos de Kubernetes y un flujo de trabajo de Acciones de GitHub.", - "The following addons can be enabled on this cluster:": "Se pueden habilitar los siguientes complementos en este clúster:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Se crearán los siguientes recursos de Azure para permitir que la canalización de Acciones de GitHub se autentique con tu clúster de AKS:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Los siguientes espacios de nombres se convertirán en proyectos de escritorio de AKS añadiendo estas etiquetas:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Ruta HTTP para comprobar la ejecución (por ejemplo, /healthz). El sondeo realiza una solicitud HTTP GET a esta ruta.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Ruta HTTP para comprobar la preparación (por ejemplo, /ready). El sondeo realiza una solicitud HTTP GET a esta ruta.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Ruta HTTP para comprobar el inicio (por ejemplo, /startup). El sondeo realiza una solicitud HTTP GET a esta ruta.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "La característica ManagedNamespacePreview debe estar registrada para crear espacios de nombres administrados.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Cantidad máxima de CPU que puede usar el contenedor. Si se supera, el contenedor se limitará.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Cantidad máxima de memoria que puede usar el contenedor. Si se supera, el contenedor se cerrará (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Número máximo de réplicas de pod al que el HPA puede escalar verticalmente cuando el uso de CPU es alto.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Cantidad mínima de CPU garantizada para el contenedor. Kubernetes programará el pod en un nodo con al menos esta cantidad de CPU disponible.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Cantidad mínima de memoria garantizada para el contenedor. Kubernetes programará el pod en un nodo con al menos esta cantidad de memoria disponible.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Número mínimo de réplicas de pod que el HPA mantendrá, incluso cuando el uso de CPU sea bajo.", - "The namespace will be created on the selected cluster and set up as a project": "El espacio de nombres se creará en el clúster seleccionado y se configurará como un proyecto", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Número de réplicas de pod que se ejecutarán. Más réplicas ofrecen mejor disponibilidad y distribución de carga.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Es posible que la operación siga ejecutándose en GitHub. Consulta el vínculo anterior para ver el estado más reciente.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Número de puerto expuesto por el servicio de Kubernetes. El tráfico a este puerto se redirige al puerto de destino.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Número de puerto en el que escucha tu contenedor. Es el puerto dentro del contenedor donde se ejecuta la aplicación.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Porcentaje objetivo de utilización media de CPU en todos los pods. El HPA escalará verticalmente cuando el uso de CPU supere este valor y se reducirá verticalmente cuando esté por debajo.", - "There are no deployments in this project namespace yet.": "Todavía no hay implementaciones en este espacio de nombres de proyecto.", + "Reopen install page": "Volver a abrir la página de instalación", + "Install GitHub App": "Instalar la aplicación de GitHub", + "Checking...": "Comprobando...", + "Connecting to GitHub...": "Conectando a GitHub...", + "Connect GitHub": "Conectar GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Conectado", + "Sign in to GitHub": "Iniciar sesión en GitHub", + "Failed to load repositories": "No se pudieron cargar los repositorios", + "Filter repositories": "Filtrar repositorios", + "No repositories match your filter": "Ningún repositorio coincide con el filtro", + "No repositories found": "No se encontraron repositorios", + "less than a minute": "menos de un minuto", + "{{count}} min_one": "{{count}} minuto", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}} minuto", + "Up next": "Siguiente", + "PR {{number}}": "Solicitud de cambios {{number}}", + "Checking merge status...": "Comprobando el estado de la fusión...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Esto está tardando más de lo esperado. Consulta la solicitud de incorporación de cambios en GitHub para ver el estado más reciente.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Puede tratarse de un problema de permisos. Comprueba tus permisos de aplicación de GitHub y vuelve a intentarlo.", "This PR was closed without merging. You may need to restart the process.": "Esta solicitud de incorporación de cambios se cerró sin fusionar. Puede que necesites reiniciar el proceso.", + "Review on GitHub": "Revisar en GitHub", + "Agent is working": "El agente está funcionando", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "El agente de codificación de Copilot está analizando tu repositorio y generando una solicitud de incorporación de cambios de implementación con Dockerfile, manifiestos de Kubernetes y un flujo de trabajo de Acciones de GitHub.", + "Issue {{number}}": "Problema {{number}}", + "Waiting for agent workflow to start...": "Esperando a que se inicie el flujo de trabajo del agente...", "This typically takes 10–25 minutes.": "Suele tardar entre 10 y 25 minutos.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Total de pods", - "Track agent progress": "Seguimiento del progreso del agente", - "Trigger": "Desencadenador", - "Trigger Copilot Agent": "Activar agente de Copilot", - "Triggering...": "Activando...", + "Pipeline configured": "Canalización configurada", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "La canalización de CI/CD para {{repoFullName}} está lista. Inicia las implementaciones desde la pestaña Implementar.", + "Setup PR reviewed and merged": "Solicitud de incorporación de cambios de configuración revisada y fusionada", + "Copilot agent reviewed your repo and generated deployment PR": "El agente de Copilot revisó tu repositorio y generó la solicitud de incorporación de cambios de implementación", + "Deployment PR reviewed and merged": "Solicitud de incorporación de cambios de implementación revisada y fusionada", + "View deployment": "Ver implementación", + "You can collapse this panel. Progress is saved and will resume when you return.": "Puedes contraer este panel. El progreso se ha guardado y se reanudará cuando vuelvas.", + "Creating setup PR...": "Creando solicitud de incorporación de cambios de configuración...", + "The agent is creating the setup PR to enable the Copilot agent.": "El agente está creando la solicitud de incorporación de cambios de configuración para activar el agente de Copilot.", + "Setup PR Created": "Solicitud de incorporación de cambios de configuración creada", + "Review and merge the setup PR to enable the Copilot agent.": "Revisa y fusiona la solicitud de incorporación de cambios de configuración para activar el agente Copilot.", + "Setting up Copilot agent...": "Configurando el agente de Copilot...", + "Creating the trigger issue for the Copilot coding agent.": "Creando el problema del desencadenador para el agente de codificación de Copilot.", + "Deployment PR Ready": "Solicitud de incorporación de cambios de implementación lista", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "El agente ha creado la solicitud de incorporación de cambios de implementación. Revisa los archivos generados y fusiónalos para iniciar la canalización de implementación.", + "Copilot agent": "Agente de Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Tras fusionarla, el agente de Copilot analizará tu repositorio y creará una solicitud de incorporación de cambios de implementación", + "Deployment PR": "Solicitud de incorporación de cambios de implementación", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Una vez que el agente haya creado la solicitud de incorporación de cambios de implementación, revisa los archivos generados y fusiónalos para iniciar la canalización de implementación", + "Connect Source": "Conectar fuente", + "Set up Copilot Agent": "Configurar el agente de Copilot", + "Review & Merge": "Revisar y combinar", + "Collapse panel": "Contraer panel", + "Keep Going": "Continuar", + "Discard": "Descartar", + "Canceling will discard your pipeline progress. Are you sure?": "Cancelar descartará el progreso de la canalización. ¿Estás seguro?", + "Ensuring resource group exists...": "Garantizando que existe el grupo de recursos...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Configurando credencial federada...", + "Workload identity configured": "Identidad de carga de trabajo configurada", + "Configure Workload Identity": "Configurar identidad de carga de trabajo", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Se crearán los siguientes recursos de Azure para permitir que la canalización de Acciones de GitHub se autentique con tu clúster de AKS:", + "Managed Identity": "Identidad administrada", + "in resource group": "en el grupo de recursos", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Credencial federada", + "OIDC trust for": "Confianza OIDC para", + "branch": "rama", + "Resource group where the managed identity will be created": "Grupo de recursos donde se creará la identidad administrada", + "Workload identity configured successfully.": "Identidad de carga de trabajo configurada correctamente.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Puede tratarse de un problema de permisos. Comprueba tus permisos de aplicación de GitHub y vuelve a intentarlo.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Es posible que la operación siga ejecutándose en GitHub. Consulta el vínculo anterior para ver el estado más reciente.", "Try again, or check GitHub for details.": "Inténtalo de nuevo o consulta GitHub para más detalles.", - "Type": "Tipo", + "Initializing...": "Inicializando...", + "Checking repository readiness...": "Comprobando la preparación del repositorio...", + "Loading configuration...": "Cargando configuración...", "Unknown error": "Error desconocido", - "unnamed": "sin nombre", - "Up next": "Siguiente", - "Update": "Actualizar", - "Updating": "Actualizando", - "Updating local settings": "Actualizando la configuración local", - "Upload files": "Cargar archivos", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Use ClusterIP. Ideal para servicios a los que solo se puede acceder dentro del clúster.", - "Use custom service port": "Usar puerto de servicio personalizado", - "Use existing manifests for full control": "Usar manifiestos existentes para el control total", - "User assignment completed with errors": "Asignación de usuario completada con errores", - "Validation failed": "Error de validación", - "Value": "Valor", - "View deployment": "Ver implementación", - "View on GitHub": "Ver en GitHub", - "View run on GitHub": "Ver ejecución en GitHub", - "View workflow run": "Ver ejecución del flujo de trabajo", - "VPA (Vertical Pod Autoscaler)": "VPA (escalador automáticos verticales de pod)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Esperando a que se inicie el flujo de trabajo del agente...", - "Waiting for browser authorization...": "Esperando autorización del navegador...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Esperando a que se complete el inicio de sesión... ({{minutes}} minutos restantes)", - "Waiting for namespace to be created": "Esperando a que se cree el espacio de nombres", - "Waiting for namespace to propagate": "Esperando a que se propague el espacio de nombres", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Advertencia: esta acción no se puede deshacer. Todos los recursos de estos espacios de nombres se eliminarán permanentemente.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Cuando un sondeo falla, Kubernetes lo intentará varias veces antes de rendirse y reiniciar el contenedor.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Cuando un sondeo falla, Kubernetes lo intentará varias veces antes de rendirse. Para los sondeos de inicio, esto determina cuánto tiempo esperar antes de reiniciar.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Cuando un sondeo falla, Kubernetes lo intentará varias veces antes de marcar el pod como no listo.", + "Trigger Copilot Agent": "Activar agente de Copilot", + "Create Setup PR": "Crear solicitud de incorporación de cambios de configuración", + "Failed to fetch deployment status": "No se pudo capturar el estado de implementación", + "Failed to fetch pod status": "No se pudo obtener el estado del pod", + "Failed to fetch service status": "No se ha podido capturar el estado del servicio", + "Failed to monitor deployment health": "No se pudo supervisar el estado de la implementación", + "Convert Namespaces to AKS Projects": "Convertir espacios de nombres en proyectos de AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Los siguientes espacios de nombres se convertirán en proyectos de escritorio de AKS añadiendo estas etiquetas:", + "managed namespaces only": "solo espacios de nombres administrados", + "Namespaces to convert:": "Espacios de nombres para convertir:", + "Already AKS projects (will import directly):": "Ya hay proyectos de AKS (se importarán directamente):", + "Converting": "Convirtiendo", + "Confirm & Import": "Confirmar e importar", + "Please select at least one namespace to import": "Seleccione al menos un espacio de nombres para importar", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "El clúster {{clusterName}} debe estar registrado antes de importar espacios de nombres normales. Primero importa un espacio de nombres administrado de este clúster.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Combinando clúster {{clusterName}} ({{count}}\u00a0espacio de nombres)", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Combinando clúster {{clusterName}} ({{count}}\u00a0espacio de nombres)", + "Failed to merge cluster: {{message}}": "Error al combinar el clúster: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Convirtiendo {{name}} en proyecto de AKS (esto puede tardar un momento)...", + "Failed to convert namespace: {{message}}": "No se pudo convertir el espacio de nombres: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importando {{current}} de {{total}}: {{name}} de {{clusterName}}", + "Project '{{name}}' successfully imported": "Proyecto '{{name}}' importado correctamente", + "Namespace '{{name}}' converted and imported as project": "Espacio de nombres '{{name}}' convertido e importado como proyecto", + "Successfully merged {{count}} cluster(s)_one": "{{count}} clústeres se combinaron correctamente", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "{{count}} clústeres se combinaron correctamente", "with {{count}} project(s)_one": "con {{count}} proyectos", + "with {{count}} project(s)_many": "", "with {{count}} project(s)_other": "con {{count}} proyectos", - "with the following parameters:": "con los parámetros siguientes:", - "Wizard steps": "Pasos del asistente", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "La distribución del flujo de trabajo se realizó con éxito. Consulta el progreso en Acciones de GitHub.", - "workflow on": "flujo de trabajo en", - "Workflows": "Flujos de trabajo", - "Workload identity configured": "Identidad de carga de trabajo configurada", - "Workload identity configured successfully.": "Identidad de carga de trabajo configurada correctamente.", - "Workloads": "Cargas de trabajo", + "{{count}} failed._one": "Error de {{count}}.", + "{{count}} failed._many": "", + "{{count}} failed._other": "Error de {{count}}.", + "Failed to import any projects. See details below.": "No se pudo importar ningún proyecto. Consulte los detalles a continuación.", + "Import AKS Projects": "Importar proyectos de AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importa los espacios de nombres administrados existentes y los espacios de nombres normales como proyectos. Los espacios de nombres que aún no sean proyectos del escritorio de AKS se convertirán añadiendo la etiqueta de proyecto necesaria.", + "Select Namespaces to Import": "Seleccionar espacios de nombres para importar", + "{{count}} selected_one": "{{count}}\u00a0seleccionado", + "{{count}} selected_many": "", + "{{count}} selected_other": "{{count}}\u00a0seleccionados", + "Select All": "Seleccionar todo", + "Deselect All": "Cancelar toda la selección", + "AKS Managed": "AKS administrado", + "Regular": "Normal", + "AKS Project?": "¿Proyecto de AKS?", "Yes": "Sí", - "You can collapse this panel. Progress is saved and will resume when you return.": "Puedes contraer este panel. El progreso se ha guardado y se reanudará cuando vuelvas.", - "You need to be logged in to Azure to register AKS clusters.": "Debe haber iniciado sesión en Azure para registrar clústeres de AKS.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "El proyecto de AKS \"{{projectName}}\" se ha creado y está listo para usarse.", - "Your project \"{{projectName}}\" is ready to use.": "Tu proyecto \"{{projectName}}\" está listo para usarse." + "No": "No", + "Importing": "Importando", + "Import Selected Projects": "Importar los proyectos seleccionados", + "Failed to fetch managed namespaces": "No se pudieron capturar los espacios de nombres administrados", + "Failed to fetch managed namespace details": "No se pudieron obtener los detalles de los espacios de nombres administrados", + "Failed to update managed namespace": "No se ha podido actualizar el espacio de nombres administrado", + "Updating": "Actualizando", + "Update": "Actualizar", + "AKS desktop logo": "Logotipo de escritorio de AKS", + "No Deployments Found": "No se encontró ninguna implementación", + "There are no deployments in this project namespace yet.": "Todavía no hay implementaciones en este espacio de nombres de proyecto.", + "Deploy an application to view logs.": "Implemente una aplicación para ver los registros.", + "Metrics": "Métricas", + "CPU Usage": "Uso de CPU", + "Memory Usage": "Uso de memoria", + "Request Rate": "Solicitar tarifa", + "Error Rate": "Tasa de errores", + "Metrics refreshed every 30 seconds": "Métricas actualizadas cada 30\u00a0segundos", + "Select a deployment to view metrics": "Seleccione una implementación para ver las métricas", + "Metrics Unavailable": "Métricas no disponibles", + "Application Metrics": "Métricas de aplicación", + "Request & error rate": "Tasa de solicitudes y errores", + "No data available": "No hay datos disponibles", + "Response Time": "Tiempo de respuesta", + "Memory utilization": "Uso de memoria", + "Network I/O": "E/S de red", + "Deploy an application to start viewing metrics.": "Implemente una aplicación para empezar a ver las métricas.", + "Please select a deployment to view metrics": "Seleccione una implementación para ver las métricas", + "Project Status": "Estado del proyecto", + "Total Pods": "Total de pods", + "Application Health": "Estado de la aplicación", + "Loading metrics": "Cargando métricas", + "Resource Usage": "Uso de recursos", + "Avg Response Time": "Promedio de tiempo de respuesta", + "No response time data available": "No hay datos de tiempo de respuesta disponibles", + "Absolute usage": "Uso absoluto", + "Network In": "Entrada de red", + "Network Out": "Salida de red", + "Pod Details": "Detalles del pod", + "Pod Name": "Nombre del pod", + "Restarts": "Reinicios", + "No pods found for deployment \"{{name}}\"": "No se encontraron pods para la implementación \"{{name}}\"", + "Preview Features": "Características en vista previa", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Habilita o deshabilita funciones que aún están en desarrollo. Las características en vista previa pueden cambiar o eliminarse en futuras versiones.", + "GitHub Pipelines": "Canalizaciones de GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Habilita las canalizaciones de implementación basadas en GitHub para proyectos de AKS.", + "Loading scaling metrics from Prometheus": "Cargando métricas de escalado desde Prometheus", + "Scaling Chart Unavailable": "Gráfico de escalado no disponible", + "No scaling data available": "No hay datos de escalado disponibles", + "Edit HPA Configuration": "Editar configuración de HPA", + "Edit Manual Scaling Configuration": "Editar configuración de escalado manual", + "Minimum Replicas": "Mínimo de réplicas", + "Maximum Replicas": "Número máximo de réplicas", + "Target CPU Utilization (%)": "Uso de CPU de destino (%)", + "Number of Replicas": "Número de réplicas", + "Set the desired number of pod replicas for this deployment": "Establecer el número deseado de réplicas de pod para esta implementación", + "Save": "Guardar", + "Scaling Mode": "Modo de escalado", + "Current Replicas": "Réplicas actuales", + "Desired Replicas": "Réplicas deseadas", + "Configured Replicas": "Réplicas configuradas", + "Replica Bounds": "Límites de réplica", + "Available Replicas": "Réplicas disponibles", + "CPU Usage / Target": "Uso / Objetivo de CPU", + "Scaling": "Escalando", + "Select a deployment to view scaling metrics": "Seleccione una implementación para ver las métricas de escalado", + "Scaling Overview": "Información general sobre el escalado", + "Edit Configuration": "Editar configuración", + "Scaling History (Last 24 Hours)": "Historial de escalado (últimas 24\u00a0horas)", + "Copied!": "Copiado.", + "Copy": "Copiar", + "Copy to clipboard": "Copiar en el portapapeles", + "No deployments found": "No se encontraron implementaciones", + "Select Deployment": "Seleccionar implementación", + "Loading deployments": "Cargando implementaciones", + "No cluster is associated with this project.": "No hay ningún clúster asociado a este proyecto.", + "Please sign in to Azure to continue.": "Inicia sesión en Azure para continuar.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Falta el contexto de Azure necesario. Asegúrate de haber iniciado sesión y de que el clúster esté asociado a una suscripción, grupo de recursos e inquilino válidos.", + "Failed to load Azure context": "No se pudo cargar el contexto de Azure", + "just now": "ahora mismo", + "{{seconds}}s ago": "hace {{seconds}} s", + "{{minutes}} min ago": "hace {{minutes}}\u00a0min", + "{{hours}}h ago": "hace {{hours}}\u00a0h", + "{{days}}d ago": "hace {{days}}\u00a0d", + "{{weeks}}w ago": "hace {{weeks}} sem." } diff --git a/plugins/aks-desktop/locales/fr/translation.json b/plugins/aks-desktop/locales/fr/translation.json index f5062a488..358818744 100644 --- a/plugins/aks-desktop/locales/fr/translation.json +++ b/plugins/aks-desktop/locales/fr/translation.json @@ -1,629 +1,682 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "« Rôle d’utilisateur de cluster AKS » étendu au groupe de ressources", - "(already enabled)": "(déjà activés)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} cluster(s) masqué(s) – pas d’ID Azure Entra", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} cluster(s) masqué(s) – pas d’ID Azure Entra", - "{{count}} eligible cluster(s) found._one": "{{count}} cluster(s) éligible(s) trouvé(s).", - "{{count}} eligible cluster(s) found._other": "{{count}} cluster(s) éligible(s) trouvé(s).", - "{{count}} failed._one": "{{count}} élément(s) en échec.", - "{{count}} failed._other": "{{count}} élément(s) en échec.", - "{{count}} min_one": "{{count}} min", - "{{count}} min_other": "{{count}} min", - "{{count}} selected_one": "{{count}} sélectionnés", - "{{count}} selected_other": "{{count}} sélectionnés", - "{{days}}d ago": "Il y a {{days}} jours", - "{{hours}}h ago": "Il y a {{hours}} heures", - "{{minutes}} min ago": "Il y a {{minutes}} min", - "{{seconds}}s ago": "Il y a {{seconds}} secondes", - "{{weeks}}w ago": "Il y a {{weeks}} semaines", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Un cluster doit être sélectionné", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Un espace de noms sera créé sur le cluster avec des étiquettes de projet appliquées. Il apparaîtra immédiatement dans votre liste de projets.", - "Absolute usage": "Utilisation absolue", - "Access": "Accès", - "Access Control ({{count}} assignee)_one": "Contrôle d’accès ({{count}} personne responsable)", - "Access Control ({{count}} assignee)_other": "Access Control ({{count}} personnes responsables)", - "Actions": "Actions", - "Add assignee": "Ajouter une personne responsable", - "Add Cluster from Azure": "Ajouter un cluster depuis Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Ajoutez un ou plusieurs manifestes Kubernetes. Chargez des fichiers pour remplir l’éditeur ou collez/modifiez directement ci-dessous.", - "Add variable": "Ajouter une variable", - "Advanced": "Avancé", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Après la fusion, l’assistant Copilot analyse votre référentiel et crée une demande de tirage de déploiement", - "Agent is working": "L’assistant travaille", + "Failed to load subscriptions": "Échec du chargement des abonnements", + "Failed to load AKS clusters": "Nous n’avons pas pu charger de clusters AKS", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Le cluster «\u00a0{{cluster}}\u00a0» a été fusionné dans kubeconfig avec succès", + "Failed to register cluster: {{message}}": "Nous n’avons pas pu enregistrer le cluster\u00a0: {{message}}", + "Register AKS Cluster": "Inscrire un cluster AKS", + "Checking authentication status": "Vérification du statut de l’authentification", + "You need to be logged in to Azure to register AKS clusters.": "Vous devez être connecté à Azure pour inscrire des clusters AKS.", + "Subscription": "Abonnement", + "Select an Azure subscription": "Sélectionnez un abonnement Azure", + "Loading subscriptions": "Chargement des abonnements", + "Loading AKS clusters": "Chargement de clusters AKS", + "No AKS clusters found in this subscription.": "Aucun cluster AKS trouvé dans cet abonnement.", "AKS Cluster": "Cluster AKS", - "AKS desktop logo": "Logo AKS Desktop", - "AKS Managed": "Managé par AKS", - "AKS Preview Extension installed successfully!": "L’extension AKS en préversion a été installée", - "AKS Preview Extension Required": "Extension d’AKS en préversion requise", - "AKS Project?": "Projet AKS ?", - "All selected addons have been enabled successfully.": "Tous les modules complémentaires sélectionnés ont été activés.", - "All verifications completed successfully!": "Toutes les vérifications ont été effectuées avec succès !", - "Allow all traffic": "Autoriser tout le trafic", - "Allow privilege escalation": "Autoriser la réaffectation de privilèges", - "Allow traffic within same namespace": "Autoriser le trafic dans le même espace de noms", - "Already AKS projects (will import directly):": "Projets AKS déjà existants (seront directement importés) :", - "Also delete the namespaces (this will remove all resources within them)": "Supprimer également les espaces de noms (cela supprimera toutes les ressources qu’ils contiennent)", - "Another project already exists with same name. Please choose a different name.": "Un projet existe déjà avec le même nom. Veuillez choisir un autre nom.", - "Application Health": "Intégrité des applications", - "Application Metrics": "Mesures d’application", - "Application name": "Nom d’application", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} ressource(s) appliquée(s), mais {{failed}} a échoué :\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} ressource(s) appliquée(s) avec succès.", - "Applied {{count}} resource(s) successfully._other": "{{count}} ressource(s) appliquée(s) avec succès.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Voulez-vous vraiment supprimer le projet « {{projectId}} » ?", - "Assign permissions to users who need access to your namespace": "Attribuez des autorisations aux utilisateurs qui doivent accéder à votre espace de noms", - "Assignee": "Personne responsable", - "Assigning AKS Cluster User Role...": "Attribution du rôle d’utilisateur de cluster AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorisez AKS Desktop à créer des pipelines de déploiement dans votre référentiel.", - "Auto-generated Deployment and Service manifests": "Manifestes de déploiement et de service générés automatiquement", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Met automatiquement à l’échelle le nombre de pods en fonction de l’utilisation d’UC. HPA augmente les pods lorsque l’utilisation d’UC dépasse la cible et diminue lorsqu’elle est ci-dessous.", - "Available Replicas": "Réplicas disponibles", - "Avg Response Time": "Temps de réponse moyen", - "Azure Account": "Compte Azure", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "Sélectionner un cluster AKS", + "Selected Cluster Details": "Détails du cluster sélectionné", + "Name": "Nom", + "Resource Group": "Groupe de ressources", + "Location": "Emplacement", + "Kubernetes Version": "Version de Kubernetes", + "Done": "Terminé", + "Cancel": "Annuler", + "Registering": "Inscription", + "Register Cluster": "Inscrire le cluster", + "Initiating Azure login": "Initialisation de la connexion Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Veuillez terminer l’authentification dans votre navigateur. Cette fenêtre sera automatiquement redirigée une fois la connexion terminée.", + "Login successful! Redirecting": "Connexion réussie\u00a0! Redirection", + "Login timeout. Please try again.": "Délai d’expiration de la connexion dépassé. Veuillez réessayer.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "En attente de la fin de la connexion... ({{minutes}}\u00a0minutes restantes)", + "Failed to initiate login: {{message}}": "Nous n’avons pas pu initialiser la connexion\u00a0: {{message}}", "Azure Authentication": "Authentification Azure", - "Azure CLI/aks-preview requirements not met": "Exigences d’Azure CLI/aks-preview non satisfaites", - "Azure Monitor Metrics (Managed Prometheus)": "Mesures Azure Monitor (Prometheus managé)", + "Sign in with your Azure account to manage AKS clusters and resources": "Connectez-vous avec votre compte Azure pour gérer les clusters et les ressources AKS", + "Sign in with Azure": "Se connecter avec Azure Active Directory", + "Loading Azure account information": "Chargement des informations du compte Azure", "Back": "Retour", - "Basics": "Informations de base", - "branch": "créer une branche", - "Bring your own Kubernetes manifests to deploy": "Apporter vos propres manifestes Kubernetes à déployer", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Par défaut, les probes utilisent HTTP GET sur le chemin d’accès racine avec des valeurs par défaut adaptées. Activez cette option pour personnaliser les paramètres de la probe.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Par défaut, le port du service correspond au port cible. Activez ceci pour utiliser un port différent pour le service.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Par défaut, cela supprime les étiquettes d’espace de noms et de projet managés par Azure des espaces de noms suivants :", - "Cancel": "Annuler", - "Canceling will discard your pipeline progress. Are you sure?": "L’annulation va annuler la progression de votre pipeline. Voulez-vous vraiment continuer ?", - "Cancelled deletion of project {{ projectId }}.": "Suppression du projet {{ projectId }} annulée.", - "Checking authentication status": "Vérification du statut de l’authentification", - "Checking for existing identity...": "Vérification de l’identité existante...", - "Checking if another project exists with same name": "Nous vérifions l’existence d’un autre projet portant le même nom", - "Checking merge status...": "Vérification en cours du statut de fusion... Merci de patienter", - "Checking repository readiness...": "Vérification de la préparation du référentiel...", - "Checking...": "Vérification en cours...", - "Choose a source for your deployment (container image, repo, etc.).": "Choisissez une source pour votre déploiement (image conteneur, référentiel, et bien plus encore).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Le pipeline CI/CD pour {{repoFullName}} est prêt. Déclenchez des déploiements à partir de l’onglet Déployer.", - "Clear editor": "Effacer l’éditeur", - "Close": "Fermer", - "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Le cluster « {{cluster}} » a été fusionné dans kubeconfig avec succès", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Le cluster {{clusterName}} doit être inscrit avant d’importer des espaces de noms normaux. Importez d’abord un espace de noms managé depuis ce cluster.", - "Cluster Configuration": "Configuration de cluster", - "Cluster is being deleted. Cannot deploy to this cluster.": "Le cluster est en cours de suppression. Vous ne pouvez rien déployer sur ce cluster.", + "Azure Account": "Compte Azure", + "Logged in as": "Connecté comme", + "Add Cluster from Azure": "Ajouter un cluster depuis Azure", + "Logging out": "Déconnexion", + "Log out": "Fermer une session", + "Azure CLI/aks-preview requirements not met": "Exigences d’Azure CLI/aks-preview non satisfaites", + "Dismiss": "Ignorer", + "Configure Pipeline": "Configurer le pipeline", + "Loading Azure context...": "Chargement du contexte Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Accès en lecture seule à la plupart des objets d’un espace de noms. Impossible d’afficher les rôles, les liaisons de rôles ou les secrets.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Accès en lecture/écriture à la plupart des objets d’un espace de noms. Impossible d’afficher ou de modifier des rôles ou des liaisons de rôles. Peut accéder aux secrets et exécuter des pods comme n’importe quel ServiceAccount dans l’espace de noms.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Accès en lecture/écriture à la plupart des ressources d’un espace de noms. Peut créer des rôles et des liaisons de rôle dans l’espace de noms. Impossible d’écrire dans le quota de ressources ou dans l’espace de noms lui-même.", + "Access": "Accès", + "Assign permissions to users who need access to your namespace": "Attribuez des autorisations aux utilisateurs qui doivent accéder à votre espace de noms", + "Assignee": "Personne responsable", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Rôle", + "Remove assignee": "Supprimer une personne responsable", + "Add assignee": "Ajouter une personne responsable", + "Only clusters with Azure Entra ID authentication are shown.": "Seuls les clusters avec authentification Azure Entra ID s’affichent.", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}}\u00a0cluster(s) masqué(s) – pas d’ID Azure Entra", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}}\u00a0cluster(s) masqué(s) – pas d’ID Azure Entra", + "No eligible clusters found in this subscription.": "Aucun cluster éligible trouvé dans cet abonnement.", + "{{count}} eligible cluster(s) found._one": "{{count}}\u00a0cluster(s) éligible(s) trouvé(s).", + "{{count}} eligible cluster(s) found._many": "", + "{{count}} eligible cluster(s) found._other": "{{count}}\u00a0cluster(s) éligible(s) trouvé(s).", "Cluster is currently updating. Deployment may fail.": "Le cluster est en cours de mise à jour. Le déploiement risque d’échouer.", - "Cluster is deallocated. Please start the cluster before deploying.": "Le cluster est libéré. Veuillez démarrer le cluster avant le déploiement.", - "Cluster is in a failed state. Please check Azure portal.": "Le cluster est à l’état d’échec. Veuillez vérifier le Portail Azure.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Le cluster est en cours de suppression. Vous ne pouvez rien déployer sur ce cluster.", "Cluster is still being created. Please wait until creation completes.": "Le cluster est toujours en cours de création. Veuillez patienter jusqu’à la fin de la création.", + "Cluster is in a failed state. Please check Azure portal.": "Le cluster est à l’état d’échec. Veuillez vérifier le Portail Azure.", "Cluster is stopped. Please start the cluster before deploying.": "Le cluster est arrêté. Veuillez démarrer le cluster avant le déploiement.", + "Cluster is deallocated. Please start the cluster before deploying.": "Le cluster est libéré. Veuillez démarrer le cluster avant le déploiement.", + "AKS Preview Extension Required": "Extension d’AKS en préversion requise", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "L’extension aks-preview est requise pour créer des espaces de noms managés. Veuillez l’installer pour continuer.", + "Installing": "Installation en cours", + "Install Extension": "Installer l’extension", + "AKS Preview Extension installed successfully!": "L’extension AKS en préversion a été installée", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "La fonctionnalité ManagedNamespacePreview doit être inscrite pour créer des espaces de noms managés.", + "Current state": "État actuel", + "Please register it to continue.": "Veuillez l’enregistrer pour continuer.", + "Register ManagedNamespacePreview Feature": "Enregistrer la fonctionnalité ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "La fonctionnalité ManagedNamespacePreview a été enregistrée avec succès\u00a0!", + "Project Name": "Nom du projet", + "Checking if another project exists with same name": "Nous vérifions l’existence d’un autre projet portant le même nom", + "Another project already exists with same name. Please choose a different name.": "Un projet existe déjà avec le même nom. Veuillez choisir un autre nom.", + "Project name is available": "Le nom du projet est disponible", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Le nom de projet doit contenir uniquement des lettres minuscules, des chiffres et des traits d’union (pas d’espaces)", + "Project Description": "Description du projet", + "Enter project description": "Entrer la description du projet", + "Select a subscription": "Sélectionner un abonnement", + "Search subscriptions": "Rechercher des abonnements", + "No subscriptions found": "Aucun abonnement trouvé", + "Retry": "Réessayer", + "Cluster": "Cluster", + "Please select a subscription first": "Veuillez sélectionner d’abord un abonnement", + "Loading clusters": "Chargement des clusters", + "Select a cluster": "Sélectionner un cluster", + "Search clusters": "Rechercher des clusters", + "No clusters with Azure Entra ID authentication found for this subscription": "Aucun cluster avec authentification Azure Entra ID n’a été trouvé pour cet abonnement", "Cluster Not Ready": "Cluster non prêt", - "Collapse panel": "Réduire le volet", - "Complete authorization on your browser screen": "Autorisation complète sur l’écran de votre navigateur", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Terminez l’installation dans votre navigateur. Cette opération est automatiquement mise à jour une fois que l’application est installée sur {{repoName}}.", - "Compute Quota": "Quota de calcul", - "Configuration Complete": "Configuration terminée", - "Configuration Error": "Erreur de configuration", + "Refreshing": "Actualisation", + "Refresh": "Actualiser", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Le cluster sélectionné est absent du kubeconfig. Inscrivez-le avant de continuer.", + "Registering cluster": "Inscription du cluster", + "Wizard steps": "Étapes de l’Assistant", + "Azure Monitor Metrics (Managed Prometheus)": "Mesures Azure Monitor (Prometheus managé)", + "KEDA (Event-Driven Autoscaling)": "KEDA (mise à l’échelle automatique pilotée par les événements)", + "VPA (Vertical Pod Autoscaler)": "VPA (mise à l’échelle automatique de pods verticale)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "La configuration prend plus de temps que prévu. Veuillez vérifier le Portail Azure pour connaître le statut actuel de votre cluster.", - "Configure": "Configurer", - "Configure Cluster": "Configurer le cluster", - "Configure Container Deployment": "Configurer le déploiement de conteneurs", - "Configure container health probes.": "Configurez les sondes d’intégrité du conteneur.", - "Configure Pipeline": "Configurer le pipeline", - "Configure security context settings for the container.": "Configurez les paramètres du contexte de sécurité pour le conteneur.", - "Configure Workload Identity": "Configurer l’identité de la charge de travail", - "Configured Replicas": "Réplicas configurés", + "Failed to enable addons": "Échec de l’activation des modules complémentaires", + "Failed to enable addon: {{error}}": "Échec de l’activation du module complémentaire\u00a0: {{error}}", + "Cluster Configuration": "Configuration de cluster", + "(already enabled)": "(déjà activés)", + "The following addons can be enabled on this cluster:": "Les modules complémentaires suivants peuvent être activés sur ce cluster\u00a0:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Le moteur de stratégie réseau ne peut pas être modifié après la création du cluster. Créer un cluster avec", + "for full network policy support.": "pour une prise en charge complète de la stratégie réseau.", + "Enabling these addons may incur additional Azure costs.": "L’activation de ces modules complémentaires peut entraîner des coûts Azure supplémentaires.", + "Configuration Error": "Erreur de configuration", + "Configuration Complete": "Configuration terminée", + "All selected addons have been enabled successfully.": "Tous les modules complémentaires sélectionnés ont été activés.", "Configuring cluster... This may take a few minutes.": "Configuration du cluster... Cela peut prendre quelques minutes.", - "Configuring federated credential...": "Configuration des informations d’identification fédérées...", + "Enabling Addons...": "Activation des modules complémentaires...", "Configuring...": "Configuration en cours... Merci de patienter.", - "Confirm & Import": "Confirmer et importer", - "Connect": "Connecter", - "Connect GitHub": "Connecter GitHub", - "Connect Source": "Connecter une source", - "Connect to GitHub": "Se connecter à GitHub", - "Connected": "Connecté", - "Connected to '{{username}}'.": "Connecté à « {{username}} ».", - "Connecting to GitHub...": "Connexion à GitHub...", - "Connecting...": "Connexion en cours... Merci de patienter.", - "Container image": "Image conteneur", - "Container Image": "Image conteneur", - "Contents": "Contenu", - "Continue": "Continuer", - "Controls whether a process can gain more privileges than its parent process.": "Contrôle si un processus peut obtenir plus de privilèges que son processus parent.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Contrôle si un processus peut obtenir plus de privilèges que son processus parent. La désactivation de cette option (recommandée) empêche les attaques par réaffectation de privilèges.", - "Convert Namespaces to AKS Projects": "Convertir les espaces de noms en projets AKS", - "Converting": "Conversion", - "Converting {{name}} to AKS project (this may take a moment)...": "Conversion en cours de {{name}} en projet AKS (cela peut prendre un certain temps)...", - "Copied!": "Copié !", - "Copilot agent": "Assistant Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "L’assistant Copilot a examiné votre référentiel et généré la demande de tirage de déploiement", - "Copy": "Copier", - "Copy to clipboard": "Copier dans le presse-papiers", - "CPU": "UC", - "CPU limit": "Limite de processeur", - "CPU Limits": "Limites de processeur", - "CPU request": "Requête de processeur", - "CPU Requests": "Requêtes de processeur", + "Configure Cluster": "Configurer le cluster", + "Compute Quota": "Quota de calcul", + "Set quota limits to prevent overuse and maintain cluster stability": "Définissez des limites de quota pour éviter la surutilisation, puis maintenir la stabilité du cluster", "CPU Resources": "Ressources de processeur", - "CPU Usage": "Utilisation du processeur", - "CPU Usage / Target": "Utilisation du processeur/cible", - "Create a new namespace on an existing cluster and set it up as a project": "Créez un espace de noms dans un cluster existant et configurez-le comme projet", - "Create Application": "Créer une application", - "Create deployment PRs": "Créer des demandes de tirage déploiement", - "Create Namespace": "Créer un espace de noms", - "Create New Namespace": "Créer un espace de noms", - "Create Project": "Créer un projet", - "Create Setup PR": "Créer une demande de tirage d’installation", - "Create setup workflow in .github/workflows/": "Créer un workflow d’installation dans .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Crée un LoadBalancer pour exposer l’application sur Internet.", - "Creating managed identity...": "Création de l’identité managée...", - "Creating namespace": "Création d’un espace de noms", - "Creating Namespace": "Création d’un espace de noms", + "CPU Requests": "Requêtes de processeur", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Processeur minimal garanti (1000\u00a0m = 1\u00a0cœur de processeur)", + "CPU Limits": "Limites de processeur", + "Maximum CPU allowed (1000m = 1 CPU core)": "Quantité maximale de processeur autorisée (1\u00a0000\u00a0m = 1 cœur de processeur)", + "Memory Resources": "Ressources mémoire", + "Memory Requests": "Demandes de mémoire", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Mémoire minimale garantie (1024\u00a0Mio = 1\u00a0Gio)", + "Memory Limits": "Limites de mémoire", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Mémoire maximale autorisée (1\u00a0024\u00a0Mio\u00a0=\u00a01\u00a0Gio)", + "Basics": "Informations de base", + "Networking Policies": "Stratégies de mise en réseau", + "Review": "Révision", + "New Project": "Nouveau projet", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Installer et configurer un nouveau projet dans Azure Kubernetes Service (AKS)", "Creating Project": "Création du projet en cours", - "Creating setup PR...": "Création de la demande de tirage du programme d’installation...", - "Creating the trigger issue for the Copilot coding agent.": "Création du problème déclencheur pour l’assistant de codage Copilot.", - "Current Replicas": "Réplicas actuels", - "Current state": "État actuel", - "Degraded": "Détérioré", - "Delete project": "Supprimer le projet", - "Delete Project": "Supprimer le projet", - "Delete Project & Namespaces": "Supprimer le projet et les espaces de noms", - "Deleted project {{ projectId }}.": "Projet {{ projectId }} supprimé.", - "Deleting project {{ projectId }}…": "Suppression du projet {{ projectId }}…", + "Create Project": "Créer un projet", + "Loading": "Chargement", + "Next": "Suivant", + "Project Created Successfully!": "Le projet a été correctement créé\u00a0!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Votre projet AKS «\u00a0{{projectName}}\u00a0» a été créé et est prêt à être utilisé.", + "Application name": "Nom d’application", + "Enter application name": "Entrer le nom de l’application", + "Enter a name for your first application to get started with deployment.": "Entrez un nom pour que votre première application démarre le déploiement.", + "Create Application": "Créer une application", + "Project Creation Failed": "Nous n’avons pas pu créer le projet", + "Set security, communication and access rules for incoming and outgoing traffic": "Définissez des règles de sécurité, de communication et d’accès pour le trafic entrant et sortant", + "Allow traffic within same namespace": "Autoriser le trafic dans le même espace de noms", + "Allow all traffic": "Autoriser tout le trafic", "Deny all traffic": "Refuser tout le trafic", - "Deploy": "Déployer", - "Deploy {{repo}}": "Déployer {{repo}}", - "Deploy an application to start viewing metrics.": "Déployez une application pour commencer à afficher les mesures.", - "Deploy an application to view logs.": "Déployez une application pour afficher les journaux d’activité.", - "Deploy Application": "Déployer l’application", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Déployer depuis Azure Container Registry, Docker Hub ou GHCR", - "Deploy via Pipeline": "Déployer via pipeline", - "Deploying": "Déploiement", - "Deployment": "Déploiement", - "Deployment PR": "Demande de tirage de déploiement", - "Deployment PR Ready": "Demande de tirage de déploiement prête", - "Deployment PR reviewed and merged": "Demande de tirage de déploiement examinée et fusionnée", - "Deployment source": "Source de déploiement", + "Review Project Configuration": "Vérifier la configuration du projet", + "Please review all the settings before creating your AKS project": "Veuillez vérifier tous les paramètres avant de créer votre projet AKS", + "Project Basics": "Informations de base du projet", "Description": "Description", - "Deselect All": "Désélectionner tout", - "Desired Replicas": "Réplicas souhaités", - "Discard": "Abandonner", - "Dismiss": "Ignorer", - "Distributes pods evenly across nodes to improve workload distribution.": "Répartit les pods de manière uniforme entre les nœuds pour améliorer la répartition de la charge de travail.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribue uniformément les pods entre les nœuds, les zones ou d’autres domaines de topologie pour améliorer la distribution et la disponibilité des charges de travail.", - "Done": "Terminé", - "Edit Configuration": "Modifier la configuration", - "Edit deployment": "Modifier le déploiement", - "Edit HPA Configuration": "Modifier la configuration de HPA", - "Edit Manual Scaling Configuration": "Modifier la configuration de la mise à l’échelle manuelle", + "No description provided": "Aucune description n’est fournie", + "Ingress Policy": "Stratégie d’entrée", "Egress Policy": "Stratégie de sortie", - "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Activez GitHub Pipelines dans Paramètres → Fonctionnalités en préversion pour utiliser des déploiements de pipeline.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Activez les pipelines de déploiement basés sur GitHub pour les projets AKS.", - "Enable Horizontal Pod Autoscaler": "Activer la mise à l’échelle automatique de pod horizontal", - "Enable liveness probe": "Activer la probe liveness", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Activez ou désactivez les fonctionnalités encore en développement. Les fonctionnalités en préversion peuvent évoluer ou être supprimées dans les prochaines versions.", - "Enable pod anti-affinity": "Activer l’anti-affinité des pods", - "Enable public access": "Activer l’accès public", - "Enable readiness probe": "Activer la probe readiness", - "Enable resource requests and limits": "Activer les demandes et limites de ressources", - "Enable startup probe": "Activer la sonde de démarrage", - "Enable topology spread constraints": "Activer les contraintes de propagation de topologie", - "Enabling Addons...": "Activation des modules complémentaires...", - "Enabling these addons may incur additional Azure costs.": "L’activation de ces modules complémentaires peut entraîner des coûts Azure supplémentaires.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Vérifiez que le nombre minimal de réplicas est inférieur ou égal au nombre maximal et que la quantité de processeur cible est comprise entre 10 % et 95 %.", - "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Garantit que le conteneur s’exécute en tant qu’utilisateur non racine (UID != 0) pour une meilleure sécurité. Cela empêche les attaques par réaffectation de privilèges.", - "Ensures the container runs as a non-root user for better security.": "Garantit que le conteneur s’exécute en tant qu’utilisateur non racine pour une meilleure sécurité.", - "Ensuring resource group exists...": "Vérification de l’existence du groupe de ressources...", - "Enter a name for your first application to get started with deployment.": "Entrez un nom pour que votre première application démarre le déploiement.", - "Enter application name": "Entrer le nom de l’application", - "Enter project description": "Entrer la description du projet", - "Environment Variables": "Variables d’environnement", - "Error deleting project {{ projectId }}.": "Erreur lors de la suppression du projet {{ projectId }}.", - "Error Rate": "Taux d’erreur", - "Failed to apply": "Nous n’avons pas pu appliquer la modification", - "Failed to apply resources.": "Nous n’avons pas pu appliquer les ressources.", - "Failed to convert namespace: {{message}}": "Nous n’avons pas pu convertir l’espace de noms : {{message}}", - "Failed to create namespace": "Nous n’avons pas pu créer l’espace de noms", + "CPU": "UC", + "Requests": "Demandes", + "Limits": "Limites", + "Memory": "Mémoire", + "Access Control ({{count}} assignee)_one": "Contrôle d’accès ({{count}}\u00a0personne responsable)", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Access Control ({{count}}\u00a0personnes responsables)", + "Not specified": "Non spécifié", + "Select an option": "Sélectionner une option", + "No options": "Aucune option", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Démarrage de la création du projet", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "La création du projet a expiré après 10\u00a0minutes. Veuillez vérifier si l’espace de noms a été créé, puis réessayer.", + "Initiating managed namespace creation": "Initialisation de la création de l’espace de noms managé", + "Namespace creation failed: {{message}}": "Échec de la création de l’espace de noms\u00a0: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Création de l’espace de noms lancée\u00a0! Surveillance du statut de création", + "Waiting for namespace to propagate": "En attente de la propagation de l’espace de noms", + "Namespace status check failed: {{message}}": "Échec de la vérification du statut de l’espace de noms\u00a0: {{message}}", + "Waiting for namespace to be created": "En attente de création de l’espace de noms", + "Namespace status verification failed: {{message}}": "Échec de la vérification du statut de l’espace de noms\u00a0: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "API de création d’espace de noms réussie, poursuite des affectations d’utilisateurs", + "Namespace creation completed successfully! Adding user access": "La création de l’espace de noms s’est correctement terminée\u00a0! Ajout de l’accès utilisateur", + "User assignment completed with errors": "L’affectation de l’utilisateur s’est terminée avec des erreurs", + "Project creation completed successfully!": "La création du projet s’est terminée correctement\u00a0!", + "Performing final status verification": "Vérification finale du statut", + "Final status check failed: {{message}}": "Échec de la vérification du statut final\u00a0: {{message}}", + "Final status verification failed: {{message}}": "Échec de la vérification du statut final\u00a0: {{message}}", + "All verifications completed successfully!": "Toutes les vérifications ont été effectuées avec succès\u00a0!", "Failed to create project": "Échec de la création du projet", - "Failed to enable addon: {{error}}": "Échec de l’activation du module complémentaire : {{error}}", - "Failed to enable addons": "Échec de l’activation des modules complémentaires", - "Failed to fetch cluster status": "Échec de la récupération du statut du cluster", - "Failed to fetch deployment status": "Échec de la récupération du statut du déploiement", - "Failed to fetch deployments": "Échec de la récupération des déploiements", - "Failed to fetch managed namespace details": "Nous n’avons pas pu extraire les détails de l’espace de noms managé", - "Failed to fetch managed namespaces": "Nous n’avons pas pu extraire les espaces de noms managés", - "Failed to fetch pod status": "Échec de la récupération du statut du pod", - "Failed to fetch service status": "Échec de la récupération du statut du service", - "Failed to import any projects. See details below.": "Nous n’avons pas pu importer de projets. Veuillez consulter les détails ci-dessous.", - "Failed to initiate login: {{message}}": "Nous n’avons pas pu initialiser la connexion : {{message}}", - "Failed to load AKS clusters": "Nous n’avons pas pu charger de clusters AKS", - "Failed to load Azure context": "Échec du chargement du contexte Azure", + "A cluster must be selected": "Un cluster doit être sélectionné", + "Namespace name is required": "Un nom d’espace de noms est obligatoire", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Le nom de l’espace de noms doit contenir uniquement des lettres minuscules, des chiffres et des traits d’union, et doit commencer et se terminer par un caractère alphanumérique", + "Namespace name must be 63 characters or fewer": "Le nom de l’espace de noms doit comporter un maximum de 63\u00a0caractères", + "Creating namespace": "Création d’un espace de noms", + "Updating local settings": "Mise à jour en cours des paramètres locaux", + "Namespace created successfully!": "L’espace de noms a bien été créé\u00a0!", + "Failed to create namespace": "Nous n’avons pas pu créer l’espace de noms", + "No clusters found. Register a cluster first.": "Nous n’avons trouvé aucun cluster. Inscrivez d’abord un cluster.", + "Namespace Name": "Nom de l’espace de noms", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Doit contenir uniquement des lettres minuscules, des chiffres et des traits d’union, tout en commençant et en se terminant par un caractère alphanumérique", + "The namespace will be created on the selected cluster and set up as a project": "L’espace de noms sera créé sur le cluster sélectionné et sera configuré en tant que projet", + "Type": "Type", + "Regular Kubernetes namespace": "Espace de noms Kubernetes normal", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Un espace de noms sera créé sur le cluster avec des étiquettes de projet appliquées. Il apparaîtra immédiatement dans votre liste de projets.", + "Create New Namespace": "Créer un espace de noms", + "Create a new namespace on an existing cluster and set it up as a project": "Créez un espace de noms dans un cluster existant et configurez-le comme projet", + "Creating Namespace": "Création d’un espace de noms", + "Namespace Creation Failed": "Nous n’avons pas pu créer l’espace de noms", + "Namespace Created Successfully!": "L’espace de noms a bien été créé\u00a0!", + "Your project \"{{projectName}}\" is ready to use.": "Votre projet «\u00a0{{projectName}}\u00a0» est prêt à être utilisé.", + "Go To Projects": "Accéder aux projets", + "Create Namespace": "Créer un espace de noms", + "Delete project": "Supprimer le projet", + "Delete Project": "Supprimer le projet", + "Are you sure you want to delete project \"{{projectId}}\"?": "Voulez-vous vraiment supprimer le projet «\u00a0{{projectId}}\u00a0»\u00a0?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Par défaut, cela supprime les étiquettes d’espace de noms et de projet managés par Azure des espaces de noms suivants\u00a0:", + "Also delete the namespaces (this will remove all resources within them)": "Supprimer également les espaces de noms (cela supprimera toutes les ressources qu’ils contiennent)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Avertissement\u00a0: cette action ne peut pas être annulée. Toutes les ressources de ces espaces de noms seront supprimées définitivement.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Note\u00a0: pour les espaces de noms managés AKS, la gestion Azure ARM sera supprimée automatiquement.", + "Delete Project & Namespaces": "Supprimer le projet et les espaces de noms", + "Deleting project {{ projectId }}…": "Suppression du projet {{ projectId }}…", + "Cancelled deletion of project {{ projectId }}.": "Suppression du projet {{ projectId }} annulée.", + "Deleted project {{ projectId }}.": "Projet {{ projectId }} supprimé.", + "Error deleting project {{ projectId }}.": "Erreur lors de la suppression du projet {{ projectId }}.", + "Deploy Application": "Déployer l’application", "Failed to load pipeline runs": "Échec du chargement des exécutions de pipeline", - "Failed to load repositories": "Échec du chargement des référentiels", - "Failed to load subscriptions": "Échec du chargement des abonnements", - "Failed to merge cluster: {{message}}": "Nous n’avons pas pu fusionner le cluster : {{message}}", - "Failed to monitor deployment health": "Échec de la supervision de l’intégrité du déploiement", - "Failed to register cluster: {{message}}": "Nous n’avons pas pu enregistrer le cluster : {{message}}", + "Pipeline": "Pipeline", + "Set up your pipeline": "Configurez votre pipeline", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configurer un pipeline CI/CD pour automatiser vos déploiements et simplifier votre workflow", + "Waiting for browser authorization...": "En attente de l’autorisation du navigateur...", + "Sign in to GitHub to view pipeline runs.": "Connectez-vous à GitHub pour afficher les exécutions de pipeline.", + "Connecting...": "Connexion en cours... Merci de patienter.", + "No pipeline runs yet.": "Aucun pipeline n’est encore exécuté.", + "View on GitHub": "Voir sur GitHub", + "View run on GitHub": "Afficher l’exécution sur GitHub", + "Healthy": "Sain", + "Scaled down": "Réduit", + "Degraded": "Détérioré", + "VS Code": "VS\u00a0Code", + "Manual": "Manuel", + "Manual Deploy": "Déploiement manuel", + "Deploy {{repo}}": "Déployer {{repo}}", + "Deploy via Pipeline": "Déployer via pipeline", + "No deployments found in this namespace.": "Aucun déploiement trouvé dans cet espace de noms.", + "Deployment": "Déploiement", + "Source": "Source", + "Replicas": "Réplicas", + "Ready": "Prêt", + "Status": "Statut", + "Actions": "Actions", + "Edit deployment": "Modifier le déploiement", + "View workflow run": "Afficher l’exécution du flux de travail", + "Re-deploy": "Redéployer", "Failed to trigger deployment": "Échec de déclenchement du déploiement", - "Failed to update managed namespace": "Nous n’avons pas pu mettre à jour l’espace de noms managé", - "failureThreshold": "failureThreshold", - "Features": "Fonctionnalités", - "Federated Credential": "Informations d’identification fédérées", - "Filter repositories": "Filtrer les référentiels", - "Final status check failed: {{message}}": "Échec de la vérification du statut final : {{message}}", - "Final status verification failed: {{message}}": "Échec de la vérification du statut final : {{message}}", - "for full network policy support.": "pour une prise en charge complète de la stratégie réseau.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifestes Kubernetes générés (espace de noms : {{namespace}})", + "Trigger": "Déclencheur", + "workflow on": "workflow sur", + "with the following parameters:": "avec les paramètres suivants\u00a0:", + "Namespace": "Espace de noms", + "Sign in": "Se connecter", "GitHub authentication required to trigger deployment.": "Authentification GitHub requise pour déclencher le déploiement.", - "GitHub Pipelines": "Pipelines GitHub", - "GitHub: {{username}}": "GitHub : {{username}}", - "Go To Projects": "Accéder aux projets", - "Guided configuration for ports, replicas, env, and resources": "Configuration guidée pour les ports, réplicas, environnements et ressources", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "La répartition du workflow a été déclenchée. Vérifiez la progression dans GitHub Actions.", + "Close": "Fermer", + "Triggering...": "Déclenchement...", + "Deploy": "Déployer", + "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Activez GitHub Pipelines dans Paramètres → Fonctionnalités en préversion pour utiliser des déploiements de pipeline.", + "Workloads": "Charges de travail", + "No clusters in this project.": "Aucun cluster dans ce projet.", + "Failed to fetch deployments": "Échec de la récupération des déploiements", + "Failed to fetch cluster status": "Échec de la récupération du statut du cluster", + "Configure security context settings for the container.": "Configurez les paramètres du contexte de sécurité pour le conteneur.", + "Run as non root user": "Exécuter en tant qu’utilisateur non racine", + "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Garantit que le conteneur s’exécute en tant qu’utilisateur non racine (UID != 0) pour une meilleure sécurité. Cela empêche les attaques par réaffectation de privilèges.", + "Ensures the container runs as a non-root user for better security.": "Garantit que le conteneur s’exécute en tant qu’utilisateur non racine pour une meilleure sécurité.", + "Read only root filesystem": "Système de fichiers racine en lecture seule", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monte le système de fichiers racine du conteneur en lecture seule pour empêcher les opérations d’écriture. Cela renforce la sécurité en empêchant le code malveillant de modifier les fichiers système.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Monte le système de fichiers racine du conteneur en lecture seule pour empêcher les opérations d’écriture.", + "Allow privilege escalation": "Autoriser la réaffectation de privilèges", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Contrôle si un processus peut obtenir plus de privilèges que son processus parent. La désactivation de cette option (recommandée) empêche les attaques par réaffectation de privilèges.", + "Controls whether a process can gain more privileges than its parent process.": "Contrôle si un processus peut obtenir plus de privilèges que son processus parent.", + "Enable pod anti-affinity": "Activer l’anti-affinité des pods", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Nous vous recommandons de planifier des pods sur différents nœuds pour améliorer la disponibilité et la tolérance de panne. Cela permet de s’assurer que les pods sont distribués sur le cluster.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Nous vous recommandons de planifier des pods sur différents nœuds pour améliorer la disponibilité et la tolérance de panne.", + "Enable topology spread constraints": "Activer les contraintes de propagation de topologie", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribue uniformément les pods entre les nœuds, les zones ou d’autres domaines de topologie pour améliorer la distribution et la disponibilité des charges de travail.", + "Distributes pods evenly across nodes to improve workload distribution.": "Répartit les pods de manière uniforme entre les nœuds pour améliorer la répartition de la charge de travail.", + "Container image": "Image conteneur", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Nombre de réplicas de pod à exécuter. Davantage de réplicas offrent une meilleure disponibilité et une meilleure distribution de charge.", + "Continue": "Continuer", + "Configure Container Deployment": "Configurer le déploiement de conteneurs", + "Networking": "Réseau", "Healthchecks": "Vérifications d’intégrité", - "Healthy": "Sain", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Fréquence (en secondes) d’exécution de la probe liveness. La valeur par défaut est de 10 secondes.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Fréquence (en secondes) d’exécution de la probe readiness. La valeur par défaut est de 10 secondes.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Fréquence (en secondes) d’exécution de la sonde de démarrage. La valeur par défaut est de 10 secondes.", - "HPA scales pods based on CPU utilization.": "HPA met à l’échelle les pods en fonction de l’utilisation du processeur.", - "Identity Resource Group": "Groupe de ressources d’identité", - "Import AKS Projects": "Importer des projets AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importez des espaces de noms managés et des espaces de noms normaux existants en tant que projets. Les espaces de noms qui ne sont pas encore des projets AKS Desktop seront convertis en ajoutant l’étiquette de projet requise.", - "Import Selected Projects": "Importer les projets sélectionnés", - "Importing": "Importation", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importation de {{current}} sur {{total}} : {{name}} depuis {{clusterName}}", - "in resource group": "dans le groupe de ressources", + "Resource Limits": "Limites des ressources", + "Environment Variables": "Variables d’environnement", + "Workload Identity": "", + "Advanced": "Avancé", "Information about {{label}}": "Informations relatives à {{label}}", - "Information about CPU limit": "Informations sur la limite d’UC", - "Information about CPU request": "Informations sur la demande d’UC", - "Information about memory limit": "Informations sur la limite de mémoire", - "Information about memory request": "Informations sur la demande de mémoire", - "Information about target CPU utilization": "Informations sur l’utilisation d’UC cible", - "Ingress Policy": "Stratégie d’entrée", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Initialisation en cours... Merci de patienter.", - "Initiating Azure login": "Initialisation de la connexion Azure", - "Initiating managed namespace creation": "Initialisation de la création de l’espace de noms managé", - "Install Extension": "Installer l’extension", - "Install GitHub App": "Installer l’application GitHub", - "Installing": "Installation en cours", - "Internal only": "Interne uniquement", - "Invalid YAML": "YAML incorrect", - "Invalid YAML: List item missing required field (kind)": "YAML non valide : champ obligatoire manquant dans l’élément de liste (genre)", - "Invalid YAML: List item missing required field (metadata.name)": "YAML non valide : champ obligatoire manquant dans l’élément de liste (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "YAML non valide : la ressource de type liste doit contenir un champ « items » de type tableau", - "Invalid YAML: missing required field (kind)": "YAML non valide : champ obligatoire manquant (genre)", - "Invalid YAML: missing required field (metadata.name)": "YAML non valide : champ obligatoire manquant (metadata.name)", - "Issue {{number}}": "Problème {{number}}", - "Issues": "Problèmes", - "just now": "à l’instant", - "KEDA (Event-Driven Autoscaling)": "KEDA (mise à l’échelle automatique pilotée par les événements)", - "Keep Going": "Continuez !", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Ajoutez un ou plusieurs manifestes Kubernetes. Chargez des fichiers pour remplir l’éditeur ou collez/modifiez directement ci-dessous.", + "Upload files": "Charger des fichiers", + "Clear editor": "Effacer l’éditeur", + "Review & Deploy": "Vérifier et déployer", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifestes Kubernetes générés (espace de noms\u00a0: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Ressources à déployer ({{count}}\u00a0objet)", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Ressources à déployer ({{count}}\u00a0objet)", + "namespace: {{namespace}}": "espace de noms\u00a0: {{namespace}}", + "Configure": "Configurer", + "Deploying": "Déploiement", "Key": "Clé", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes redémarre le conteneur si cette vérification échoue à plusieurs reprises.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Valeur", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "supprimer", + "Add variable": "Ajouter une variable", + "Configure container health probes.": "Configurez les sondes d’intégrité du conteneur.", + "Manually configure settings": "Configurer manuellement les paramètres", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Par défaut, les probes utilisent HTTP GET sur le chemin d’accès racine avec des valeurs par défaut adaptées. Activez cette option pour personnaliser les paramètres de la probe.", + "Enable liveness probe": "Activer la probe liveness", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes redémarre le conteneur si cette vérification échoue à plusieurs reprises. Elle sert à détecter et récupérer des blocages ou des conteneurs non réactifs.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes désactive temporairement les vérifications d’activité/aptitude jusqu’à ce que le démarrage réussisse.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes désactive temporairement les vérifications d’activité/aptitude jusqu’à ce que le démarrage réussisse. Utile pour les conteneurs dont le démarrage prend beaucoup de temps.", - "Kubernetes Version": "Version de Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes n’envoie pas de trafic au pod tant que cette vérification n’est pas validée.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes n’envoie pas de trafic au pod tant que cette vérification n’est pas validée. Utilisé pour indiquer quand un conteneur est prêt à accepter le trafic.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "moins d'une minute", - "Limits": "Limites", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes redémarre le conteneur si cette vérification échoue à plusieurs reprises.", "Liveness path": "Chemin d’activité", - "Loading": "Chargement", - "Loading AKS clusters": "Chargement de clusters AKS", - "Loading Azure account information": "Chargement des informations du compte Azure", - "Loading Azure context...": "Chargement du contexte Azure...", - "Loading clusters": "Chargement des clusters", - "Loading configuration...": "Chargement en cours de la configuration...", - "Loading deployments": "Chargement en cours des déploiements", - "Loading metrics": "Chargement des mesures", - "Loading scaling metrics from Prometheus": "Chargement des mesures de mise à l’échelle depuis Prometheus", - "Loading subscriptions": "Chargement des abonnements", - "Loading...": "Chargement en cours...", - "Location": "Emplacement", - "Log out": "Fermer une session", - "Logged in as": "Connecté comme", - "Logging out": "Déconnexion", - "Login successful! Redirecting": "Connexion réussie ! Redirection", - "Login timeout. Please try again.": "Délai d’expiration de la connexion dépassé. Veuillez réessayer.", - "Managed Identity": "Identité managée", - "managed namespaces only": "espaces de noms managés uniquement", - "ManagedNamespacePreview feature registered successfully!": "La fonctionnalité ManagedNamespacePreview a été enregistrée avec succès !", - "Manual": "Manuel", - "Manual Deploy": "Déploiement manuel", - "Manually configure settings": "Configurer manuellement les paramètres", - "Max replicas": "Nb max. de réplicas", - "Maximum CPU allowed (1000m = 1 CPU core)": "Quantité maximale de processeur autorisée (1 000 m = 1 cœur de processeur)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Mémoire maximale autorisée (1 024 Mio = 1 Gio)", - "Maximum Replicas": "Nombre maximal de réplicas", - "mebibytes": "mébioctets", - "Memory": "Mémoire", - "Memory limit": "Limite de mémoire", - "Memory Limits": "Limites de mémoire", - "Memory request": "Requête de mémoire", - "Memory Requests": "Demandes de mémoire", - "Memory Resources": "Ressources mémoire", - "Memory Usage": "Utilisation de la mémoire", - "Memory utilization": "Utilisation de la mémoire", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Fusion du cluster {{clusterName}} ({{count}} espace(s) de noms)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Fusion du cluster {{clusterName}} ({{count}} espace(s) de noms)", - "Metrics": "Métriques", - "Metrics refreshed every 30 seconds": "Mesures actualisées toutes les 30 secondes", - "Metrics Unavailable": "Mesures non disponibles", - "millicores": "millicœurs", - "Min replicas": "Nb min. de réplicas", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Nombre minimal de réussites consécutives pour que la sonde soit considérée comme réussie après avoir échoué. La valeur par défaut est 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Processeur minimal garanti (1000 m = 1 cœur de processeur)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Mémoire minimale garantie (1024 Mio = 1 Gio)", - "Minimum Replicas": "Nombre minimal de réplicas", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contexte Azure requis manquant. Veuillez vérifier que vous êtes connecté et que le cluster est associé à un abonnement, un groupe de ressources et un locataire valides.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Monte le système de fichiers racine du conteneur en lecture seule pour empêcher les opérations d’écriture.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monte le système de fichiers racine du conteneur en lecture seule pour empêcher les opérations d’écriture. Cela renforce la sécurité en empêchant le code malveillant de modifier les fichiers système.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Prise en charge de plusieurs fichiers (déploiements, services, entrée, et bien plus encore)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Doit contenir uniquement des lettres minuscules, des chiffres et des traits d’union, tout en commençant et en se terminant par un caractère alphanumérique", - "Name": "Nom", - "Namespace": "Espace de noms", - "Namespace '{{name}}' converted and imported as project": "L’espace de noms « {{name}} » a été converti et importé en tant que projet", - "Namespace created successfully!": "L’espace de noms a bien été créé !", - "Namespace Created Successfully!": "L’espace de noms a bien été créé !", - "Namespace creation API succeeded, proceeding with user assignments": "API de création d’espace de noms réussie, poursuite des affectations d’utilisateurs", - "Namespace creation completed successfully! Adding user access": "La création de l’espace de noms s’est correctement terminée ! Ajout de l’accès utilisateur", - "Namespace Creation Failed": "Nous n’avons pas pu créer l’espace de noms", - "Namespace creation failed: {{message}}": "Échec de la création de l’espace de noms : {{message}}", - "Namespace creation initiated! Monitoring creation status": "Création de l’espace de noms lancée ! Surveillance du statut de création", - "Namespace Name": "Nom de l’espace de noms", - "Namespace name is required": "Un nom d’espace de noms est obligatoire", - "Namespace name must be 63 characters or fewer": "Le nom de l’espace de noms doit comporter un maximum de 63 caractères", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Le nom de l’espace de noms doit contenir uniquement des lettres minuscules, des chiffres et des traits d’union, et doit commencer et se terminer par un caractère alphanumérique", - "Namespace status check failed: {{message}}": "Échec de la vérification du statut de l’espace de noms : {{message}}", - "Namespace status verification failed: {{message}}": "Échec de la vérification du statut de l’espace de noms : {{message}}", - "namespace: {{namespace}}": "espace de noms : {{namespace}}", - "Namespaces to convert:": "Espaces de noms à convertir :", - "Network I/O": "E/S réseau", - "Network In": "Entrée réseau", - "Network Out": "Sortie réseau", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Le moteur de stratégie réseau ne peut pas être modifié après la création du cluster. Créer un cluster avec", - "Networking": "Réseau", - "Networking Policies": "Stratégies de mise en réseau", - "New Project": "Nouveau projet", - "Next": "Suivant", - "No": "Non", - "No AKS clusters found in this subscription.": "Aucun cluster AKS trouvé dans cet abonnement.", - "No cluster is associated with this project.": "Aucun cluster n’est associé à ce projet.", - "No clusters found. Register a cluster first.": "Nous n’avons trouvé aucun cluster. Inscrivez d’abord un cluster.", - "No clusters in this project.": "Aucun cluster dans ce projet.", - "No clusters with Azure Entra ID authentication found for this subscription": "Aucun cluster avec authentification Azure Entra ID n’a été trouvé pour cet abonnement", - "No data available": "Aucune donnée n’est disponible", - "No deployments found": "Aucun déploiement n’a été trouvé", - "No Deployments Found": "Aucun déploiement trouvé", - "No deployments found in this namespace.": "Aucun déploiement trouvé dans cet espace de noms.", - "No description provided": "Aucune description n’est fournie", - "No eligible clusters found in this subscription.": "Aucun cluster éligible trouvé dans cet abonnement.", - "No Kubernetes expertise required to get started": "Aucune expertise Kubernetes requise pour démarrer", - "No options": "Aucune option", - "No pipeline runs yet.": "Aucun pipeline n’est encore exécuté.", - "No pods found for deployment \"{{name}}\"": "Aucun pod trouvé pour le déploiement « {{name}} »", - "No repositories found": "Aucun référentiel trouvé", - "No repositories match your filter": "Aucun référentiel ne correspond à votre filtre", - "No response time data available": "Aucune donnée de temps de réponse disponible", - "No scaling data available": "Aucune donnée de mise à l’échelle disponible", - "No subscriptions found": "Aucun abonnement trouvé", - "Not specified": "Non spécifié", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Note : pour les espaces de noms managés AKS, la gestion Azure ARM sera supprimée automatiquement.", - "Number of Replicas": "Nombre de réplicas", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Chemin HTTP pour vérifier l’activité (par exemple, /healthz). La sonde effectue une requête HTTP GET sur ce chemin.", + "initialDelaySeconds": "initialDelaySeconds", "Number of seconds after the container has started before liveness probes are initiated.": "Nombre de secondes après le démarrage du conteneur avant le lancement des probes liveness.", - "Number of seconds after the container has started before readiness probes are initiated.": "Nombre de secondes après le démarrage du conteneur avant le lancement des probes readiness.", - "Number of seconds after the container has started before startup probes are initiated.": "Nombre de secondes après le démarrage du conteneur avant le lancement des sondes de démarrage.", - "Number of seconds after which the probe times out. Default is 1 second.": "Nombre de secondes après lesquelles la sonde expire. La valeur par défaut est 1 seconde.", - "OIDC trust for": "Approbation OIDC pour", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Une fois que l’assistant a créé la demande de tirage de déploiement, examinez les fichiers générés et fusionnez-la pour lancer le pipeline de déploiement", - "Only clusters with Azure Entra ID authentication are shown.": "Seuls les clusters avec authentification Azure Entra ID s’affichent.", - "Performing final status verification": "Vérification finale du statut", "periodSeconds": "periodSeconds", - "Pipeline": "Pipeline", - "Pipeline configured": "Pipeline configuré", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Veuillez terminer l’authentification dans votre navigateur. Cette fenêtre sera automatiquement redirigée une fois la connexion terminée.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Veuillez l’enregistrer pour continuer.", - "Please review all the settings before creating your AKS project": "Veuillez vérifier tous les paramètres avant de créer votre projet AKS", - "Please select a deployment to view metrics": "Veuillez sélectionner un déploiement pour afficher les mesures.", - "Please select a subscription first": "Veuillez sélectionner d’abord un abonnement", - "Please select at least one namespace to import": "Veuillez sélectionner au moins un espace de noms à importer", - "Please sign in to Azure to continue.": "Connectez-vous à Azure pour continuer.", - "Pod Details": "Détails du pod", - "Pod Name": "Nom du pod", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Nous vous recommandons de planifier des pods sur différents nœuds pour améliorer la disponibilité et la tolérance de panne.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Nous vous recommandons de planifier des pods sur différents nœuds pour améliorer la disponibilité et la tolérance de panne. Cela permet de s’assurer que les pods sont distribués sur le cluster.", - "Preview and basic validation before apply": "Préversion et validation basique avant application", - "Preview Features": "Fonctionnalités en préversion", - "Project '{{name}}' successfully imported": "Le projet « {{name}} » a bien été importé", - "Project Basics": "Informations de base du projet", - "Project Created Successfully!": "Le projet a été correctement créé !", - "Project creation completed successfully!": "La création du projet s’est terminée correctement !", - "Project Creation Failed": "Nous n’avons pas pu créer le projet", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "La création du projet a expiré après 10 minutes. Veuillez vérifier si l’espace de noms a été créé, puis réessayer.", - "Project Description": "Description du projet", - "Project Name": "Nom du projet", - "Project name is available": "Le nom du projet est disponible", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Le nom de projet doit contenir uniquement des lettres minuscules, des chiffres et des traits d’union (pas d’espaces)", - "Project Status": "Statut du projet", - "Pull requests": "Demandes de tirage (pull requests)", - "Push agent config files": "Envoyer les fichiers de configuration de l’assistant", - "Re-deploy": "Redéployer", - "Read only root filesystem": "Système de fichiers racine en lecture seule", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Accès en lecture seule à la plupart des objets d’un espace de noms. Impossible d’afficher les rôles, les liaisons de rôles ou les secrets.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Accès en lecture/écriture à la plupart des objets d’un espace de noms. Impossible d’afficher ou de modifier des rôles ou des liaisons de rôles. Peut accéder aux secrets et exécuter des pods comme n’importe quel ServiceAccount dans l’espace de noms.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Accès en lecture/écriture à la plupart des ressources d’un espace de noms. Peut créer des rôles et des liaisons de rôle dans l’espace de noms. Impossible d’écrire dans le quota de ressources ou dans l’espace de noms lui-même.", - "Readiness path": "Chemin de préparation", - "Ready": "Prêt", - "Refresh": "Actualiser", - "Refreshing": "Actualisation", - "Register AKS Cluster": "Inscrire un cluster AKS", - "Register Cluster": "Inscrire le cluster", - "Register ManagedNamespacePreview Feature": "Enregistrer la fonctionnalité ManagedNamespacePreview", - "Registering": "Inscription", - "Registering cluster": "Inscription du cluster", - "Regular": "Normal", - "Regular Kubernetes namespace": "Espace de noms Kubernetes normal", - "remove": "supprimer", - "Remove assignee": "Supprimer une personne responsable", - "Reopen install page": "Rouvrir la page d’installation", - "Replica Bounds": "Limites des réplicas", - "Replicas": "Réplicas", - "Request & error rate": "Taux de requêtes et d’erreurs", - "Request Rate": "Débit de la requête", - "Requests": "Demandes", - "Required Permissions": "Autorisations nécessaires", - "Resource Group": "Groupe de ressources", - "Resource group where the managed identity will be created": "Groupe de ressources dans lequel l’identité managée sera créée", - "Resource Limits": "Limites des ressources", - "Resource Usage": "Utilisation des ressources", - "Resources to be deployed ({{count}} object)_one": "Ressources à déployer ({{count}} objet)", - "Resources to be deployed ({{count}} object)_other": "Ressources à déployer ({{count}} objet)", - "Response Time": "Temps de réponse", - "Restarts": "Redémarrages", - "Retry": "Réessayer", - "Review": "Révision", - "Review & Deploy": "Vérifier et déployer", - "Review & Merge": "Révision et fusion", - "Review and merge the setup PR to enable the Copilot agent.": "Examinez et fusionnez la demande de tirage d’installation pour activer l’assistant Copilot.", - "Review on GitHub": "Révision sur GitHub", - "Review Project Configuration": "Vérifier la configuration du projet", - "Role": "Rôle", - "Role Assignment": "Attribution de rôle", - "Run as non root user": "Exécuter en tant qu’utilisateur non racine", - "Run deployment workflows": "Exécuter des workflows de déploiement", - "Save": "Enregistrer", - "Scaled down": "Réduit", - "Scaling": "Mise à l'échelle", - "Scaling Chart Unavailable": "Le graphique de mise à l’échelle n’est pas disponible", - "Scaling History (Last 24 Hours)": "Historique de mise à l’échelle (24 dernières heures)", - "Scaling Mode": "Mode de mise à l’échelle", - "Scaling Overview": "Vue d’ensemble de la mise à l’échelle", - "Search clusters": "Rechercher des clusters", - "Search subscriptions": "Rechercher des abonnements", - "Select a cluster": "Sélectionner un cluster", - "Select a deployment to view metrics": "Sélectionner un déploiement pour afficher les mesures", - "Select a deployment to view scaling metrics": "Sélectionner un déploiement pour afficher les mesures de mise à l’échelle", - "Select a subscription": "Sélectionner un abonnement", - "Select All": "Sélectionner tout", - "Select an AKS cluster": "Sélectionner un cluster AKS", - "Select an Azure subscription": "Sélectionnez un abonnement Azure", - "Select an option": "Sélectionner une option", - "Select Deployment": "Sélectionner un déploiement", - "Select Namespaces to Import": "Sélectionner les espaces de noms à importer", - "Select repository": "Sélectionner un référentiel", - "Select Source": "Sélectionner la source", - "Selected Cluster Details": "Détails du cluster sélectionné", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Le cluster sélectionné est absent du kubeconfig. Inscrivez-le avant de continuer.", - "Service port": "Port du service", - "Service type": "Type de service", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Définissez les demandes d’UC et mémoire (ressources garanties) ainsi que les limites (ressources maximales) pour contrôler l’allocation des ressources et empêcher les conteneurs de consommer excessivement les ressources du cluster.", - "Set quota limits to prevent overuse and maintain cluster stability": "Définissez des limites de quota pour éviter la surutilisation, puis maintenir la stabilité du cluster", - "Set security, communication and access rules for incoming and outgoing traffic": "Définissez des règles de sécurité, de communication et d’accès pour le trafic entrant et sortant", - "Set the desired number of pod replicas for this deployment": "Définir le nombre souhaité de réplicas de pod pour ce déploiement", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configurer un pipeline CI/CD pour automatiser vos déploiements et simplifier votre workflow", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Installer et configurer un nouveau projet dans Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Configurer l’assistant Copilot", - "Set up your pipeline": "Configurez votre pipeline", - "Setting up Copilot agent...": "Configuration de l’assistant Copilot...", - "Setup PR Created": "Demande de tirage d’installation créée", - "Setup PR reviewed and merged": "La demande de tirage de configuration a été examinée et fusionnée", - "Sign in": "Se connecter", - "Sign in to GitHub": "Se connecter à GitHub", - "Sign in to GitHub to view pipeline runs.": "Connectez-vous à GitHub pour afficher les exécutions de pipeline.", - "Sign in with Azure": "Se connecter avec Azure Active Directory", - "Sign in with your Azure account to manage AKS clusters and resources": "Connectez-vous avec votre compte Azure pour gérer les clusters et les ressources AKS", - "Source": "Source", - "Starting project creation": "Démarrage de la création du projet", - "Startup path": "Chemin de démarrage", - "Status": "Statut", - "Subscription": "Abonnement", - "Successfully merged {{count}} cluster(s)_one": "Nous avons bien fusionné {{count}} cluster(s)", - "Successfully merged {{count}} cluster(s)_other": "Nous avons bien fusionné {{count}} cluster(s)", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Fréquence (en secondes) d’exécution de la probe liveness. La valeur par défaut est de 10\u00a0secondes.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Nombre de secondes après lesquelles la sonde expire. La valeur par défaut est 1\u00a0seconde.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "En cas d’échec d’une sonde, Kubernetes tente cette opération plusieurs fois avant d’abandonner et de redémarrer le conteneur.", "successThreshold": "successThreshold", - "Target CPU utilization": "Utilisation de processeur cible", - "Target CPU Utilization (%)": "Utilisation de processeur cible (%)", - "Target port": "Port cible", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "L’assistant a créé la demande de tirage de déploiement. Passez en revue les fichiers générés et fusionnez pour démarrer le pipeline de déploiement.", - "The agent is creating the setup PR to enable the Copilot agent.": "L’assistant crée la demande de tirage de configuration pour activer l’assistant Copilot.", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "L’application GitHub AKS Desktop doit être installée sur {{repoName}} pour continuer.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "L’extension aks-preview est requise pour créer des espaces de noms managés. Veuillez l’installer pour continuer.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "L’assistant de codage Copilot analyse votre dépôt et génère une demande de tirage de déploiement avec un Dockerfile, des manifestes Kubernetes et un workflow GitHub Actions.", - "The following addons can be enabled on this cluster:": "Les modules complémentaires suivants peuvent être activés sur ce cluster :", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Les ressources Azure suivantes seront créées pour permettre à votre pipeline GitHub Actions de s’authentifier auprès de votre cluster AKS :", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Les espaces de noms suivants seront convertis en projets AKS Desktop en ajoutant ces étiquettes :", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Chemin HTTP pour vérifier l’activité (par exemple, /healthz). La sonde effectue une requête HTTP GET sur ce chemin.", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Nombre minimal de réussites consécutives pour que la sonde soit considérée comme réussie après avoir échoué. La valeur par défaut est 1.", + "Enable readiness probe": "Activer la probe readiness", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes n’envoie pas de trafic au pod tant que cette vérification n’est pas validée. Utilisé pour indiquer quand un conteneur est prêt à accepter le trafic.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes n’envoie pas de trafic au pod tant que cette vérification n’est pas validée.", + "Readiness path": "Chemin de préparation", "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Chemin HTTP pour vérifier la préparation (par exemple, /ready). La sonde effectue une requête HTTP GET sur ce chemin d’accès.", + "Number of seconds after the container has started before readiness probes are initiated.": "Nombre de secondes après le démarrage du conteneur avant le lancement des probes readiness.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Fréquence (en secondes) d’exécution de la probe readiness. La valeur par défaut est de 10\u00a0secondes.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "En cas d’échec d’une sonde, Kubernetes tentera ce nombre de fois avant de marquer le pod comme non prêt.", + "Enable startup probe": "Activer la sonde de démarrage", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes désactive temporairement les vérifications d’activité/aptitude jusqu’à ce que le démarrage réussisse. Utile pour les conteneurs dont le démarrage prend beaucoup de temps.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes désactive temporairement les vérifications d’activité/aptitude jusqu’à ce que le démarrage réussisse.", + "Startup path": "Chemin de démarrage", "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Chemin HTTP à vérifier pour le démarrage (par ex., /startup). La sonde effectue une requête HTTP GET sur ce chemin d’accès.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "La fonctionnalité ManagedNamespacePreview doit être inscrite pour créer des espaces de noms managés.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Quantité maximale de processeur que le conteneur peut utiliser. En cas de dépassement, le conteneur sera limité.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Quantité maximale de la mémoire que le conteneur peut utiliser. En cas de dépassement, le conteneur sera arrêté (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Nombre maximal de réplicas de pods que l’HPA peut atteindre lorsque l’utilisation d’UC est élevée.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Quantité minimale de processeur garantie pour le conteneur. Kubernetes planifie le pod sur un nœud disposant d’au moins cette capacité de processeur disponible.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Quantité minimale de mémoire garantie pour le conteneur. Kubernetes planifie le pod sur un nœud disposant d’au moins cette capacité de mémoire disponible.", + "Number of seconds after the container has started before startup probes are initiated.": "Nombre de secondes après le démarrage du conteneur avant le lancement des sondes de démarrage.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Fréquence (en secondes) d’exécution de la sonde de démarrage. La valeur par défaut est de 10\u00a0secondes.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "En cas d’échec d’une sonde, Kubernetes tente cette opération plusieurs fois avant d’abandonner. Pour les sondes de démarrage, cela détermine la durée d’attente avant le redémarrage.", + "Enable Horizontal Pod Autoscaler": "Activer la mise à l’échelle automatique de pod horizontal", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Met automatiquement à l’échelle le nombre de pods en fonction de l’utilisation d’UC. HPA augmente les pods lorsque l’utilisation d’UC dépasse la cible et diminue lorsqu’elle est ci-dessous.", + "HPA scales pods based on CPU utilization.": "HPA met à l’échelle les pods en fonction de l’utilisation du processeur.", + "Min replicas": "Nb min. de réplicas", "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Nombre minimal de réplicas de pods que l’HPA maintiendra, même lorsque l’utilisation d’UC est faible.", - "The namespace will be created on the selected cluster and set up as a project": "L’espace de noms sera créé sur le cluster sélectionné et sera configuré en tant que projet", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Nombre de réplicas de pod à exécuter. Davantage de réplicas offrent une meilleure disponibilité et une meilleure distribution de charge.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "L’opération est peut-être toujours en cours d’exécution sur GitHub. Consultez le lien ci-dessus pour connaître le statut le plus récent.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Numéro de port exposé par le service Kubernetes. Le trafic vers ce port est transféré vers le port cible.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Numéro de port sur lequel votre conteneur écoute. Il s’agit du port à l’intérieur du conteneur où votre application s’exécute.", + "Max replicas": "Nb max. de réplicas", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Nombre maximal de réplicas de pods que l’HPA peut atteindre lorsque l’utilisation d’UC est élevée.", + "Target CPU utilization": "Utilisation de processeur cible", "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Pourcentage moyen cible d’utilisation du processeur sur tous les pods. Le HPA effectue un scale-up lorsque l’utilisation du processeur dépasse cette valeur et un scale-down lorsque cette utilisation lui est inférieure.", - "There are no deployments in this project namespace yet.": "Aucun déploiement ne se trouve dans cet espace de noms de projet pour l’instant.", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Cela prend plus de temps que prévu. Vérifiez l’état le plus récent de la demande de tirage sur GitHub.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Il peut s’agir d’un problème d’autorisations. Vérifiez vos autorisations d’application GitHub et réessayez.", - "This PR was closed without merging. You may need to restart the process.": "Cette demande de tirage a été fermée sans fusion. Vous devrez peut-être redémarrer le processus.", - "This typically takes 10–25 minutes.": "Cela prend généralement entre 10 et 25 minutes.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Nombre total de pods", - "Track agent progress": "Suivre la progression de l’assistant", - "Trigger": "Déclencheur", - "Trigger Copilot Agent": "Déclencher l’assistant Copilot", - "Triggering...": "Déclenchement...", - "Try again, or check GitHub for details.": "Réessayez ou consultez GitHub pour plus d’informations.", - "Type": "Type", - "Unknown error": "Erreur inconnue", - "unnamed": "sans nom", - "Up next": "À suivre", - "Update": "Mettre à jour", - "Updating": "Mise à jour en cours", - "Updating local settings": "Mise à jour en cours des paramètres locaux", - "Upload files": "Charger des fichiers", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Utiliser ClusterIP. Idéal pour les services accessibles uniquement au sein du cluster.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Vérifiez que le nombre minimal de réplicas est inférieur ou égal au nombre maximal et que la quantité de processeur cible est comprise entre 10\u00a0% et 95\u00a0%.", + "Target port": "Port cible", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Numéro de port sur lequel votre conteneur écoute. Il s’agit du port à l’intérieur du conteneur où votre application s’exécute.", + "Service port": "Port du service", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Numéro de port exposé par le service Kubernetes. Le trafic vers ce port est transféré vers le port cible.", "Use custom service port": "Utiliser un port de service personnalisé", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Par défaut, le port du service correspond au port cible. Activez ceci pour utiliser un port différent pour le service.", + "Service type": "Type de service", + "Internal only": "Interne uniquement", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Utiliser ClusterIP. Idéal pour les services accessibles uniquement au sein du cluster.", + "Enable public access": "Activer l’accès public", + "Creates a LoadBalancer to expose the application to the internet.": "Crée un LoadBalancer pour exposer l’application sur Internet.", + "Enable resource requests and limits": "Activer les demandes et limites de ressources", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Définissez les demandes d’UC et mémoire (ressources garanties) ainsi que les limites (ressources maximales) pour contrôler l’allocation des ressources et empêcher les conteneurs de consommer excessivement les ressources du cluster.", + "CPU request": "Requête de processeur", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Quantité minimale de processeur garantie pour le conteneur. Kubernetes planifie le pod sur un nœud disposant d’au moins cette capacité de processeur disponible.", + "millicores": "millicœurs", + "CPU limit": "Limite de processeur", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Quantité maximale de processeur que le conteneur peut utiliser. En cas de dépassement, le conteneur sera limité.", + "Memory request": "Requête de mémoire", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Quantité minimale de mémoire garantie pour le conteneur. Kubernetes planifie le pod sur un nœud disposant d’au moins cette capacité de mémoire disponible.", + "mebibytes": "mébioctets", + "Memory limit": "Limite de mémoire", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Quantité maximale de la mémoire que le conteneur peut utiliser. En cas de dépassement, le conteneur sera arrêté (OOMKilled).", + "Container Image": "Image conteneur", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Déployer depuis Azure Container Registry, Docker Hub ou GHCR", + "Auto-generated Deployment and Service manifests": "Manifestes de déploiement et de service générés automatiquement", + "Guided configuration for ports, replicas, env, and resources": "Configuration guidée pour les ports, réplicas, environnements et ressources", + "No Kubernetes expertise required to get started": "Aucune expertise Kubernetes requise pour démarrer", + "Bring your own Kubernetes manifests to deploy": "Apporter vos propres manifestes Kubernetes à déployer", "Use existing manifests for full control": "Utiliser des manifestes existants pour un contrôle total", - "User assignment completed with errors": "L’affectation de l’utilisateur s’est terminée avec des erreurs", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Prise en charge de plusieurs fichiers (déploiements, services, entrée, et bien plus encore)", + "Preview and basic validation before apply": "Préversion et validation basique avant application", + "Select Source": "Sélectionner la source", + "Choose a source for your deployment (container image, repo, etc.).": "Choisissez une source pour votre déploiement (image conteneur, référentiel, et bien plus encore).", + "Deployment source": "Source de déploiement", + "Features": "Fonctionnalités", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Groupe de ressources d’identité", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Vérification de l’identité existante...", + "Creating managed identity...": "Création de l’identité managée...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "YAML non valide\u00a0: champ obligatoire manquant (genre)", + "Invalid YAML: List resource must have an array \"items\" field": "YAML non valide\u00a0: la ressource de type liste doit contenir un champ «\u00a0items\u00a0» de type tableau", + "Invalid YAML: List item missing required field (kind)": "YAML non valide\u00a0: champ obligatoire manquant dans l’élément de liste (genre)", + "Invalid YAML: List item missing required field (metadata.name)": "YAML non valide\u00a0: champ obligatoire manquant dans l’élément de liste (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "YAML non valide\u00a0: champ obligatoire manquant (metadata.name)", + "Invalid YAML": "YAML incorrect", "Validation failed": "La validation a échoué", - "Value": "Valeur", - "View deployment": "Afficher le déploiement", - "View on GitHub": "Voir sur GitHub", - "View run on GitHub": "Afficher l’exécution sur GitHub", - "View workflow run": "Afficher l’exécution du flux de travail", - "VPA (Vertical Pod Autoscaler)": "VPA (mise à l’échelle automatique de pods verticale)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "En attente du démarrage du workflow d’assistant...", - "Waiting for browser authorization...": "En attente de l’autorisation du navigateur...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "En attente de la fin de la connexion... ({{minutes}} minutes restantes)", - "Waiting for namespace to be created": "En attente de création de l’espace de noms", - "Waiting for namespace to propagate": "En attente de la propagation de l’espace de noms", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Avertissement : cette action ne peut pas être annulée. Toutes les ressources de ces espaces de noms seront supprimées définitivement.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "En cas d’échec d’une sonde, Kubernetes tente cette opération plusieurs fois avant d’abandonner et de redémarrer le conteneur.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "En cas d’échec d’une sonde, Kubernetes tente cette opération plusieurs fois avant d’abandonner. Pour les sondes de démarrage, cela détermine la durée d’attente avant le redémarrage.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "En cas d’échec d’une sonde, Kubernetes tentera ce nombre de fois avant de marquer le pod comme non prêt.", - "with {{count}} project(s)_one": "avec {{count}} projet(s)", - "with {{count}} project(s)_other": "avec {{count}} projet(s)", - "with the following parameters:": "avec les paramètres suivants :", - "Wizard steps": "Étapes de l’Assistant", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "La répartition du workflow a été déclenchée. Vérifiez la progression dans GitHub Actions.", - "workflow on": "workflow sur", + "Failed to apply": "Nous n’avons pas pu appliquer la modification", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} ressource(s) appliquée(s), mais {{failed}} a échoué\u00a0:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "{{count}} ressource(s) appliquée(s) avec succès.", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "{{count}} ressource(s) appliquée(s) avec succès.", + "Failed to apply resources.": "Nous n’avons pas pu appliquer les ressources.", + "unnamed": "sans nom", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Contenu", + "Push agent config files": "Envoyer les fichiers de configuration de l’assistant", "Workflows": "Workflows", + "Create setup workflow in .github/workflows/": "Créer un workflow d’installation dans .github/workflows/", + "Pull requests": "Demandes de tirage (pull requests)", + "Create deployment PRs": "Créer des demandes de tirage déploiement", + "Issues": "Problèmes", + "Track agent progress": "Suivre la progression de l’assistant", + "Run deployment workflows": "Exécuter des workflows de déploiement", + "Connect to GitHub": "Se connecter à GitHub", + "Connected to '{{username}}'.": "Connecté à «\u00a0{{username}}\u00a0».", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorisez AKS Desktop à créer des pipelines de déploiement dans votre référentiel.", + "Required Permissions": "Autorisations nécessaires", + "Complete authorization on your browser screen": "Autorisation complète sur l’écran de votre navigateur", + "Connect": "Connecter", + "Select repository": "Sélectionner un référentiel", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Terminez l’installation dans votre navigateur. Cette opération est automatiquement mise à jour une fois que l’application est installée sur {{repoName}}.", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "L’application GitHub AKS Desktop doit être installée sur {{repoName}} pour continuer.", + "Reopen install page": "Rouvrir la page d’installation", + "Install GitHub App": "Installer l’application GitHub", + "Checking...": "Vérification en cours...", + "Connecting to GitHub...": "Connexion à GitHub...", + "Connect GitHub": "Connecter GitHub", + "GitHub: {{username}}": "GitHub\u00a0: {{username}}", + "Connected": "Connecté", + "Sign in to GitHub": "Se connecter à GitHub", + "Failed to load repositories": "Échec du chargement des référentiels", + "Filter repositories": "Filtrer les référentiels", + "No repositories match your filter": "Aucun référentiel ne correspond à votre filtre", + "No repositories found": "Aucun référentiel trouvé", + "less than a minute": "moins d'une minute", + "{{count}} min_one": "{{count}}\u00a0min", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}}\u00a0min", + "Up next": "À suivre", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "Vérification en cours du statut de fusion... Merci de patienter", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Cela prend plus de temps que prévu. Vérifiez l’état le plus récent de la demande de tirage sur GitHub.", + "This PR was closed without merging. You may need to restart the process.": "Cette demande de tirage a été fermée sans fusion. Vous devrez peut-être redémarrer le processus.", + "Review on GitHub": "Révision sur GitHub", + "Agent is working": "L’assistant travaille", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "L’assistant de codage Copilot analyse votre dépôt et génère une demande de tirage de déploiement avec un Dockerfile, des manifestes Kubernetes et un workflow GitHub Actions.", + "Issue {{number}}": "Problème {{number}}", + "Waiting for agent workflow to start...": "En attente du démarrage du workflow d’assistant...", + "This typically takes 10–25 minutes.": "Cela prend généralement entre 10 et 25\u00a0minutes.", + "Pipeline configured": "Pipeline configuré", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Le pipeline CI/CD pour {{repoFullName}} est prêt. Déclenchez des déploiements à partir de l’onglet Déployer.", + "Setup PR reviewed and merged": "La demande de tirage de configuration a été examinée et fusionnée", + "Copilot agent reviewed your repo and generated deployment PR": "L’assistant Copilot a examiné votre référentiel et généré la demande de tirage de déploiement", + "Deployment PR reviewed and merged": "Demande de tirage de déploiement examinée et fusionnée", + "View deployment": "Afficher le déploiement", + "You can collapse this panel. Progress is saved and will resume when you return.": "Vous pouvez réduire ce panneau. Votre progression est enregistrée et reprendra lorsque vous reviendrez.", + "Creating setup PR...": "Création de la demande de tirage du programme d’installation...", + "The agent is creating the setup PR to enable the Copilot agent.": "L’assistant crée la demande de tirage de configuration pour activer l’assistant Copilot.", + "Setup PR Created": "Demande de tirage d’installation créée", + "Review and merge the setup PR to enable the Copilot agent.": "Examinez et fusionnez la demande de tirage d’installation pour activer l’assistant Copilot.", + "Setting up Copilot agent...": "Configuration de l’assistant Copilot...", + "Creating the trigger issue for the Copilot coding agent.": "Création du problème déclencheur pour l’assistant de codage Copilot.", + "Deployment PR Ready": "Demande de tirage de déploiement prête", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "L’assistant a créé la demande de tirage de déploiement. Passez en revue les fichiers générés et fusionnez pour démarrer le pipeline de déploiement.", + "Copilot agent": "Assistant Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Après la fusion, l’assistant Copilot analyse votre référentiel et crée une demande de tirage de déploiement", + "Deployment PR": "Demande de tirage de déploiement", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Une fois que l’assistant a créé la demande de tirage de déploiement, examinez les fichiers générés et fusionnez-la pour lancer le pipeline de déploiement", + "Connect Source": "Connecter une source", + "Set up Copilot Agent": "Configurer l’assistant Copilot", + "Review & Merge": "Révision et fusion", + "Collapse panel": "Réduire le volet", + "Keep Going": "Continuez\u00a0!", + "Discard": "Abandonner", + "Canceling will discard your pipeline progress. Are you sure?": "L’annulation va annuler la progression de votre pipeline. Voulez-vous vraiment continuer\u00a0?", + "Ensuring resource group exists...": "Vérification de l’existence du groupe de ressources...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Configuration des informations d’identification fédérées...", "Workload identity configured": "Identité de charge de travail configurée", + "Configure Workload Identity": "Configurer l’identité de la charge de travail", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Les ressources Azure suivantes seront créées pour permettre à votre pipeline GitHub Actions de s’authentifier auprès de votre cluster AKS\u00a0:", + "Managed Identity": "Identité managée", + "in resource group": "dans le groupe de ressources", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Informations d’identification fédérées", + "OIDC trust for": "Approbation OIDC pour", + "branch": "créer une branche", + "Resource group where the managed identity will be created": "Groupe de ressources dans lequel l’identité managée sera créée", "Workload identity configured successfully.": "L’identité de la charge de travail a été configurée.", - "Workloads": "Charges de travail", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Il peut s’agir d’un problème d’autorisations. Vérifiez vos autorisations d’application GitHub et réessayez.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "L’opération est peut-être toujours en cours d’exécution sur GitHub. Consultez le lien ci-dessus pour connaître le statut le plus récent.", + "Try again, or check GitHub for details.": "Réessayez ou consultez GitHub pour plus d’informations.", + "Initializing...": "Initialisation en cours... Merci de patienter.", + "Checking repository readiness...": "Vérification de la préparation du référentiel...", + "Loading configuration...": "Chargement en cours de la configuration...", + "Unknown error": "Erreur inconnue", + "Trigger Copilot Agent": "Déclencher l’assistant Copilot", + "Create Setup PR": "Créer une demande de tirage d’installation", + "Failed to fetch deployment status": "Échec de la récupération du statut du déploiement", + "Failed to fetch pod status": "Échec de la récupération du statut du pod", + "Failed to fetch service status": "Échec de la récupération du statut du service", + "Failed to monitor deployment health": "Échec de la supervision de l’intégrité du déploiement", + "Convert Namespaces to AKS Projects": "Convertir les espaces de noms en projets AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Les espaces de noms suivants seront convertis en projets AKS Desktop en ajoutant ces étiquettes\u00a0:", + "managed namespaces only": "espaces de noms managés uniquement", + "Namespaces to convert:": "Espaces de noms à convertir\u00a0:", + "Already AKS projects (will import directly):": "Projets AKS déjà existants (seront directement importés)\u00a0:", + "Converting": "Conversion", + "Confirm & Import": "Confirmer et importer", + "Please select at least one namespace to import": "Veuillez sélectionner au moins un espace de noms à importer", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Le cluster {{clusterName}} doit être inscrit avant d’importer des espaces de noms normaux. Importez d’abord un espace de noms managé depuis ce cluster.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Fusion du cluster {{clusterName}} ({{count}}\u00a0espace(s) de noms)", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Fusion du cluster {{clusterName}} ({{count}}\u00a0espace(s) de noms)", + "Failed to merge cluster: {{message}}": "Nous n’avons pas pu fusionner le cluster\u00a0: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Conversion en cours de {{name}} en projet AKS (cela peut prendre un certain temps)...", + "Failed to convert namespace: {{message}}": "Nous n’avons pas pu convertir l’espace de noms\u00a0: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importation de {{current}} sur {{total}}\u00a0: {{name}} depuis {{clusterName}}", + "Project '{{name}}' successfully imported": "Le projet «\u00a0{{name}}\u00a0» a bien été importé", + "Namespace '{{name}}' converted and imported as project": "L’espace de noms «\u00a0{{name}}\u00a0» a été converti et importé en tant que projet", + "Successfully merged {{count}} cluster(s)_one": "Nous avons bien fusionné {{count}}\u00a0cluster(s)", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "Nous avons bien fusionné {{count}}\u00a0cluster(s)", + "with {{count}} project(s)_one": "avec {{count}}\u00a0projet(s)", + "with {{count}} project(s)_many": "", + "with {{count}} project(s)_other": "avec {{count}}\u00a0projet(s)", + "{{count}} failed._one": "{{count}}\u00a0élément(s) en échec.", + "{{count}} failed._many": "", + "{{count}} failed._other": "{{count}}\u00a0élément(s) en échec.", + "Failed to import any projects. See details below.": "Nous n’avons pas pu importer de projets. Veuillez consulter les détails ci-dessous.", + "Import AKS Projects": "Importer des projets AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importez des espaces de noms managés et des espaces de noms normaux existants en tant que projets. Les espaces de noms qui ne sont pas encore des projets AKS Desktop seront convertis en ajoutant l’étiquette de projet requise.", + "Select Namespaces to Import": "Sélectionner les espaces de noms à importer", + "{{count}} selected_one": "{{count}}\u00a0sélectionnés", + "{{count}} selected_many": "", + "{{count}} selected_other": "{{count}}\u00a0sélectionnés", + "Select All": "Sélectionner tout", + "Deselect All": "Désélectionner tout", + "AKS Managed": "Managé par AKS", + "Regular": "Normal", + "AKS Project?": "Projet AKS\u00a0?", "Yes": "Oui", - "You can collapse this panel. Progress is saved and will resume when you return.": "Vous pouvez réduire ce panneau. Votre progression est enregistrée et reprendra lorsque vous reviendrez.", - "You need to be logged in to Azure to register AKS clusters.": "Vous devez être connecté à Azure pour inscrire des clusters AKS.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Votre projet AKS « {{projectName}} » a été créé et est prêt à être utilisé.", - "Your project \"{{projectName}}\" is ready to use.": "Votre projet « {{projectName}} » est prêt à être utilisé." + "No": "Non", + "Importing": "Importation", + "Import Selected Projects": "Importer les projets sélectionnés", + "Failed to fetch managed namespaces": "Nous n’avons pas pu extraire les espaces de noms managés", + "Failed to fetch managed namespace details": "Nous n’avons pas pu extraire les détails de l’espace de noms managé", + "Failed to update managed namespace": "Nous n’avons pas pu mettre à jour l’espace de noms managé", + "Updating": "Mise à jour en cours", + "Update": "Mettre à jour", + "AKS desktop logo": "Logo AKS Desktop", + "No Deployments Found": "Aucun déploiement trouvé", + "There are no deployments in this project namespace yet.": "Aucun déploiement ne se trouve dans cet espace de noms de projet pour l’instant.", + "Deploy an application to view logs.": "Déployez une application pour afficher les journaux d’activité.", + "Metrics": "Métriques", + "CPU Usage": "Utilisation du processeur", + "Memory Usage": "Utilisation de la mémoire", + "Request Rate": "Débit de la requête", + "Error Rate": "Taux d’erreur", + "Metrics refreshed every 30 seconds": "Mesures actualisées toutes les 30\u00a0secondes", + "Select a deployment to view metrics": "Sélectionner un déploiement pour afficher les mesures", + "Metrics Unavailable": "Mesures non disponibles", + "Application Metrics": "Mesures d’application", + "Request & error rate": "Taux de requêtes et d’erreurs", + "No data available": "Aucune donnée n’est disponible", + "Response Time": "Temps de réponse", + "Memory utilization": "Utilisation de la mémoire", + "Network I/O": "E/S réseau", + "Deploy an application to start viewing metrics.": "Déployez une application pour commencer à afficher les mesures.", + "Please select a deployment to view metrics": "Veuillez sélectionner un déploiement pour afficher les mesures.", + "Project Status": "Statut du projet", + "Total Pods": "Nombre total de pods", + "Application Health": "Intégrité des applications", + "Loading metrics": "Chargement des mesures", + "Resource Usage": "Utilisation des ressources", + "Avg Response Time": "Temps de réponse moyen", + "No response time data available": "Aucune donnée de temps de réponse disponible", + "Absolute usage": "Utilisation absolue", + "Network In": "Entrée réseau", + "Network Out": "Sortie réseau", + "Pod Details": "Détails du pod", + "Pod Name": "Nom du pod", + "Restarts": "Redémarrages", + "No pods found for deployment \"{{name}}\"": "Aucun pod trouvé pour le déploiement «\u00a0{{name}}\u00a0»", + "Preview Features": "Fonctionnalités en préversion", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Activez ou désactivez les fonctionnalités encore en développement. Les fonctionnalités en préversion peuvent évoluer ou être supprimées dans les prochaines versions.", + "GitHub Pipelines": "Pipelines GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Activez les pipelines de déploiement basés sur GitHub pour les projets AKS.", + "Loading scaling metrics from Prometheus": "Chargement des mesures de mise à l’échelle depuis Prometheus", + "Scaling Chart Unavailable": "Le graphique de mise à l’échelle n’est pas disponible", + "No scaling data available": "Aucune donnée de mise à l’échelle disponible", + "Edit HPA Configuration": "Modifier la configuration de HPA", + "Edit Manual Scaling Configuration": "Modifier la configuration de la mise à l’échelle manuelle", + "Minimum Replicas": "Nombre minimal de réplicas", + "Maximum Replicas": "Nombre maximal de réplicas", + "Target CPU Utilization (%)": "Utilisation de processeur cible (%)", + "Number of Replicas": "Nombre de réplicas", + "Set the desired number of pod replicas for this deployment": "Définir le nombre souhaité de réplicas de pod pour ce déploiement", + "Save": "Enregistrer", + "Scaling Mode": "Mode de mise à l’échelle", + "Current Replicas": "Réplicas actuels", + "Desired Replicas": "Réplicas souhaités", + "Configured Replicas": "Réplicas configurés", + "Replica Bounds": "Limites des réplicas", + "Available Replicas": "Réplicas disponibles", + "CPU Usage / Target": "Utilisation du processeur/cible", + "Scaling": "Mise à l'échelle", + "Select a deployment to view scaling metrics": "Sélectionner un déploiement pour afficher les mesures de mise à l’échelle", + "Scaling Overview": "Vue d’ensemble de la mise à l’échelle", + "Edit Configuration": "Modifier la configuration", + "Scaling History (Last 24 Hours)": "Historique de mise à l’échelle (24\u00a0dernières heures)", + "Copied!": "Copié\u00a0!", + "Copy": "Copier", + "Copy to clipboard": "Copier dans le presse-papiers", + "No deployments found": "Aucun déploiement n’a été trouvé", + "Select Deployment": "Sélectionner un déploiement", + "Loading deployments": "Chargement en cours des déploiements", + "No cluster is associated with this project.": "Aucun cluster n’est associé à ce projet.", + "Please sign in to Azure to continue.": "Connectez-vous à Azure pour continuer.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contexte Azure requis manquant. Veuillez vérifier que vous êtes connecté et que le cluster est associé à un abonnement, un groupe de ressources et un locataire valides.", + "Failed to load Azure context": "Échec du chargement du contexte Azure", + "just now": "à l’instant", + "{{seconds}}s ago": "Il y a {{seconds}}\u00a0secondes", + "{{minutes}} min ago": "Il y a {{minutes}}\u00a0min", + "{{hours}}h ago": "Il y a {{hours}}\u00a0heures", + "{{days}}d ago": "Il y a {{days}}\u00a0jours", + "{{weeks}}w ago": "Il y a {{weeks}}\u00a0semaines" } diff --git a/plugins/aks-desktop/locales/hu/translation.json b/plugins/aks-desktop/locales/hu/translation.json index 219cbaca8..2b084d98d 100644 --- a/plugins/aks-desktop/locales/hu/translation.json +++ b/plugins/aks-desktop/locales/hu/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "Az AKS-fürt felhasználói szerepkör hatóköre az erőforráscsoportra terjed ki", - "(already enabled)": "(már engedélyezve van)", + "Failed to load subscriptions": "Az előfizetéseket nem sikerült betölteni", + "Failed to load AKS clusters": "Nem sikerült betölteni az AKS-fürtöket", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "A(z) {{cluster}} fürt sikeresen egyesítve a kubeconfig állományban", + "Failed to register cluster: {{message}}": "Nem sikerült regisztrálni a fürtöt: {{message}}", + "Register AKS Cluster": "AKS-fürt regisztrálása", + "Checking authentication status": "Hitelesítési állapot ellenőrzése", + "You need to be logged in to Azure to register AKS clusters.": "Az AKS-fürtök regisztrálásához be kell jelentkeznie az Azure-ba.", + "Subscription": "Előfizetés", + "Select an Azure subscription": "Válasszon ki egy Azure-előfizetést", + "Loading subscriptions": "Előfizetések betöltése folyamatban", + "Loading AKS clusters": "AKS-fürtök betöltése", + "No AKS clusters found in this subscription.": "Ebben az előfizetésben nem találhatók AKS-fürtök.", + "AKS Cluster": "AKS-fürt", + "Select an AKS cluster": "AKS-fürt kiválasztása", + "Selected Cluster Details": "Kijelölt fürt részletei", + "Name": "Név", + "Resource Group": "Erőforráscsoport", + "Location": "Hely", + "Kubernetes Version": "Kubernetes-verzió", + "Done": "Kész", + "Cancel": "Mégse", + "Registering": "Regisztrálás folyamatban", + "Register Cluster": "Fürt regisztrálása", + "Initiating Azure login": "Azure-bejelentkezés kezdeményezése", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Végezze el a hitelesítést a böngészőben. Ez az ablak automatikusan átirányítja a bejelentkezés befejezése után.", + "Login successful! Redirecting": "Sikeres bejelentkezés! Átirányítás", + "Login timeout. Please try again.": "Bejelentkezési időtúllépés. Próbálkozzon újra.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Várakozás a bejelentkezés befejezésére... ({{minutes}} perc van hátra)", + "Failed to initiate login: {{message}}": "Nem sikerült a bejelentkezés kezdeményezése: {{message}}", + "Azure Authentication": "Azure-hitelesítés", + "Sign in with your Azure account to manage AKS clusters and resources": "Jelentkezzen be Azure-fiókjával az AKS-fürtök és -erőforrások kezeléséhez", + "Sign in with Azure": "Bejelentkezés az Azure-ral", + "Loading Azure account information": "Azure-fiókinformáció betöltése", + "Back": "Vissza", + "Azure Account": "Azure-fiók", + "Logged in as": "A következőként bejelentkezve:", + "Add Cluster from Azure": "Fürt hozzáadása az Azure-ból", + "Logging out": "Kijelentkezés", + "Log out": "Kijelentkezés", + "Azure CLI/aks-preview requirements not met": "Az Azure CLI/aks-preview követelményei nem teljesülnek", + "Dismiss": "Bezárás", + "Configure Pipeline": "Folyamat konfigurálása", + "Loading Azure context...": "Azure-környezet betöltése...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Írásvédett hozzáférés a névtér legtöbb objektumához. Nem tekintheti meg a szerepköröket, szerepkörkötéseket és titkos kódokat.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Olvasási/írási hozzáférés a névtér legtöbb objektumához. Nem tekinti meg és nem módosíthatja a szerepköröket és a szerepkörkötéseket. Hozzáférhet a titkos kódokhoz és podokat futtathat a névtér bármely ServiceAccount-jaként.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Olvasási/írási hozzáférés a névtér legtöbb erőforrásához. Létrehozhat szerepköröket és szerepkörkötéseket a névtérben. Nem írhat az erőforráskvótára vagy magára a névtérre.", + "Access": "Hozzáférés", + "Assign permissions to users who need access to your namespace": "Engedélyek hozzárendelése azokhoz a felhasználókhoz, akiknek hozzáférésre van szükségük a névtérhez", + "Assignee": "Felelős", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Szerepkör", + "Remove assignee": "Felelős eltávolítása", + "Add assignee": "Felelős hozzáadása", + "Only clusters with Azure Entra ID authentication are shown.": "Csak az Azure Entra ID-hitelesítéssel rendelkező fürtök jelennek meg.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} fürt rejtett – nincs Azure Entra-ID", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} fürt rejtett – nincs Azure Entra-ID", + "No eligible clusters found in this subscription.": "Ebben az előfizetésben nem találhatók jogosult fürtök.", "{{count}} eligible cluster(s) found._one": "{{count}} jogosult fürt található.", "{{count}} eligible cluster(s) found._other": "{{count}} jogosult fürt található.", - "{{count}} failed._one": "{{count}} sikertelen.", - "{{count}} failed._other": "{{count}} sikertelen.", - "{{count}} min_one": "{{count}} perc", - "{{count}} min_other": "{{count}} perc", - "{{count}} selected_one": "{{count}} kiválasztva", - "{{count}} selected_other": "{{count}} kiválasztva", - "{{days}}d ago": "{{days}} napja", - "{{hours}}h ago": "{{hours}} órája", - "{{minutes}} min ago": "{{minutes}} perce", - "{{seconds}}s ago": "{{seconds}} másodperce", - "{{weeks}}w ago": "{{weeks}} hete", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Ki kell választani egy fürtöt", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Új névtér jön létre a fürtön, amelyen projektcímkék lesznek alkalmazva. Azonnal megjelenik a projektlistában.", - "Absolute usage": "Abszolút használat", - "Access": "Hozzáférés", - "Access Control ({{count}} assignee)_one": "Hozzáférés-vezérlés ({{count}} felelős)", - "Access Control ({{count}} assignee)_other": "Hozzáférés-vezérlés ({{count}} felelős)", - "Actions": "Műveletek", - "Add assignee": "Felelős hozzáadása", - "Add Cluster from Azure": "Fürt hozzáadása az Azure-ból", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Adjon hozzá egy vagy több Kubernetes-jegyzékfájlt. Töltsön fel fájlokat a szerkesztő feltöltéséhez, vagy illessze be/szerkessze közvetlenül alább.", - "Add variable": "Változó hozzáadása", - "Advanced": "Speciális", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Az egyesítés után az Copilot ügynök elemzi az adattárat, és létrehoz egy üzembe helyezési lekéréses kérelmet", - "Agent is working": "Az ügynök működik", - "AKS Cluster": "AKS-fürt", - "AKS desktop logo": "AKS asztal embléma", - "AKS Managed": "AKS által felügyelt", - "AKS Preview Extension installed successfully!": "Az előzetes verziójú AKS-bővítmény sikeresen telepítve!", - "AKS Preview Extension Required": "Előzetes verziójú AKS-bővítmény szükséges", - "AKS Project?": "AKS-projekt?", - "All selected addons have been enabled successfully.": "Az összes kijelölt bővítmény sikeresen engedélyezve.", - "All verifications completed successfully!": "Minden ellenőrzés sikeresen befejeződött!", - "Allow all traffic": "Az összes forgalom engedélyezése", - "Allow privilege escalation": "Jogosultságemelés engedélyezése", - "Allow traffic within same namespace": "Adatforgalom engedélyezése ugyanazon a névtéren belül", - "Already AKS projects (will import directly):": "Már AKS-projektek (közvetlenül importálhatók):", - "Also delete the namespaces (this will remove all resources within them)": "Törölje a névtereket is (ez eltávolítja a bennük lévő összes erőforrást)", - "Another project already exists with same name. Please choose a different name.": "Már létezik ilyen nevű projekt. Válasszon másik nevet.", - "Application Health": "Alkalmazás állapota", - "Application Metrics": "Alkalmazásmetrikák", - "Application name": "Alkalmazás neve", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} erőforrás alkalmazva, de {{failed}} meghiúsult:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} erőforrás sikeresen alkalmazva.", - "Applied {{count}} resource(s) successfully._other": "{{count}} erőforrás sikeresen alkalmazva.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Biztosan törli a(z) {{projectId}} projektet?", - "Assign permissions to users who need access to your namespace": "Engedélyek hozzárendelése azokhoz a felhasználókhoz, akiknek hozzáférésre van szükségük a névtérhez", - "Assignee": "Felelős", - "Assigning AKS Cluster User Role...": "AKS-fürt felhasználói szerepkörének hozzárendelése...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Engedélyezze az AKS asztal számára, hogy üzembe helyezési folyamatokat hozzon létre az adattárban.", - "Auto-generated Deployment and Service manifests": "Automatikusan létrehozott üzembe helyezési és szolgáltatásjegyzékek", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automatikusan skálázza a podok számát a CPU-kihasználtság alapján. A HPA megnöveli a podokat, ha a CPU-használat meghaladja a célt, és csökkenti, ha alatta van.", - "Available Replicas": "Rendelkezésre álló replikák", - "Avg Response Time": "Átlagos válaszidő", - "Azure Account": "Azure-fiók", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Azure-hitelesítés", - "Azure CLI/aks-preview requirements not met": "Az Azure CLI/aks-preview követelményei nem teljesülnek", - "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor metrikák (felügyelt Prometheus)", - "Back": "Vissza", - "Basics": "Alapvető beállítások", - "branch": "ág", - "Bring your own Kubernetes manifests to deploy": "Saját Kubernetes-jegyzékek használata az üzembe helyezéshez", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Alapértelmezés szerint a tesztek a HTTP GET kérést használják a gyökérútvonalon, ésszerű alapértelmezett beállításokkal. Engedélyezze ezt a tesztelési beállítások testreszabásához.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Alapértelmezés szerint a szolgáltatásport megegyezik a célporttal. Engedélyezze ezt a beállítást, ha másik portot szeretne használni a szolgáltatáshoz.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Alapértelmezés szerint ez eltávolítja az Azure által felügyelt névteret és projektcímkéket a következő névterekből:", - "Cancel": "Mégse", - "Canceling will discard your pipeline progress. Are you sure?": "A megszakítás elveti a folyamat előrehaladását. Biztosan folytatja?", - "Cancelled deletion of project {{ projectId }}.": "A(z) {{ projectId }} projekt törlése visszavonva.", - "Checking authentication status": "Hitelesítési állapot ellenőrzése", - "Checking for existing identity...": "Meglévő identitás keresése...", - "Checking if another project exists with same name": "Annak ellenőrzése, hogy létezik-e másik projekt ezzel a névvel", - "Checking merge status...": "Egyesítés állapotának ellenőrzése...", - "Checking repository readiness...": "Az adattár készültségének ellenőrzése...", - "Checking...": "Ellenőrzés...", - "Choose a source for your deployment (container image, repo, etc.).": "Válasszon forrást az üzembe helyezéshez (tárolólemezkép, adattár stb.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "A(z) {{repoFullName}} CI/CD-folyamata készen áll. Központi telepítések aktiválása az Üzembe helyezés lapról.", - "Clear editor": "Szerkesztő törlése", - "Close": "Bezárás", - "Cluster": "Fürt", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "A(z) {{cluster}} fürt sikeresen egyesítve a kubeconfig állományban", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "A(z) {{clusterName}} fürtöt regisztrálni kell a normál névterek importálása előtt. Először importáljon egy felügyelt névteret ebből a fürtből.", - "Cluster Configuration": "Fürtkonfiguráció", - "Cluster is being deleted. Cannot deploy to this cluster.": "Fürt törlése folyamatban. Nem telepíthet erre a fürtre.", "Cluster is currently updating. Deployment may fail.": "Fürt frissítése folyamatban. Az üzembe helyezés meghiúsulhat.", - "Cluster is deallocated. Please start the cluster before deploying.": "Fürt felszabadítva. Az üzembe helyezés előtt indítsa el a fürtöt.", - "Cluster is in a failed state. Please check Azure portal.": "A fürt hibás állapotban van. Ellenőrizze Azure Portált.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Fürt törlése folyamatban. Nem telepíthet erre a fürtre.", "Cluster is still being created. Please wait until creation completes.": "A fürt létrehozása még folyamatban van. Várjon, amíg a létrehozás befejeződik.", + "Cluster is in a failed state. Please check Azure portal.": "A fürt hibás állapotban van. Ellenőrizze Azure Portált.", "Cluster is stopped. Please start the cluster before deploying.": "A fürt leállt. Az üzembe helyezés előtt indítsa el a fürtöt.", + "Cluster is deallocated. Please start the cluster before deploying.": "Fürt felszabadítva. Az üzembe helyezés előtt indítsa el a fürtöt.", + "AKS Preview Extension Required": "Előzetes verziójú AKS-bővítmény szükséges", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Felügyelt névterek létrehozásához aks-preview bővítmény szükséges. A folytatáshoz telepítse.", + "Installing": "Telepítés", + "Install Extension": "Bővítmény telepítése", + "AKS Preview Extension installed successfully!": "Az előzetes verziójú AKS-bővítmény sikeresen telepítve!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Felügyelt névterek létrehozásához regisztrálni kell a ManagedNamespacePreview funkciót.", + "Current state": "Aktuális állapot", + "Please register it to continue.": "A folytatáshoz regisztrálja.", + "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview funkció regisztrálása", + "ManagedNamespacePreview feature registered successfully!": "A ManagedNamespacePreview funkció sikeresen regisztrálva!", + "Project Name": "Projektnév", + "Checking if another project exists with same name": "Annak ellenőrzése, hogy létezik-e másik projekt ezzel a névvel", + "Another project already exists with same name. Please choose a different name.": "Már létezik ilyen nevű projekt. Válasszon másik nevet.", + "Project name is available": "A projektnév elérhető", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "A projekt neve csak kisbetűket, számokat és kötőjeleket tartalmazhat (szóközöket nem)", + "Project Description": "Projekt leírása", + "Enter project description": "Projektleírás megadása", + "Select a subscription": "Válasszon ki egy előfizetést", + "Search subscriptions": "Előfizetések keresése", + "No subscriptions found": "Nem található előfizetés", + "Retry": "Újrapróbálkozás", + "Cluster": "Fürt", + "Please select a subscription first": "Először válasszon előfizetést", + "Loading clusters": "Fürtök betöltése folyamatban", + "Select a cluster": "Fürt kiválasztása", + "Search clusters": "Fürtök keresése", + "No clusters with Azure Entra ID authentication found for this subscription": "Ehhez az előfizetéshez nem található Azure Entra ID-hitelesítéssel rendelkező fürt", "Cluster Not Ready": "A fürt nem áll készen", - "Collapse panel": "Panel összecsukása", - "Complete authorization on your browser screen": "Engedélyezés végrehajtása a böngésző képernyőjén", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Végezze el a telepítést a böngészőben. Ez automatikusan frissül, amint az alkalmazás telepítve lesz a(z) {{repoName}} adattárban.", - "Compute Quota": "Számítási kvóta", - "Configuration Complete": "Konfigurálás kész", - "Configuration Error": "Konfigurációs hiba", + "Refreshing": "Frissítés", + "Refresh": "Frissítés", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "A kiválasztott fürt hiányzik a kubeconfig állományból. A folytatás előtt regisztrálja.", + "Registering cluster": "Fürt regisztrálása", + "Wizard steps": "Varázsló lépései", + "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor metrikák (felügyelt Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (eseményvezérelt automatikus skálázás)", + "VPA (Vertical Pod Autoscaler)": "VPA (automatikus vertikális podméretező)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "A konfiguráció a vártnál tovább tart. Ellenőrizze a fürt aktuális állapotát az Azure Portalon.", - "Configure": "Konfigurálás", - "Configure Cluster": "Fürt konfigurálása", - "Configure Container Deployment": "Tároló üzembe helyezésének konfigurálása", - "Configure container health probes.": "Tároló-állapottesztek konfigurálása.", - "Configure Pipeline": "Folyamat konfigurálása", - "Configure security context settings for the container.": "Konfigurálja a tároló biztonsági környezeti beállításait.", - "Configure Workload Identity": "Számítási feladat identitásának konfigurálása", - "Configured Replicas": "Replikák konfigurálva", + "Failed to enable addons": "Nem sikerült engedélyezni a bővítményeket", + "Failed to enable addon: {{error}}": "Nem sikerült engedélyezni a bővítményt: {{error}}", + "Cluster Configuration": "Fürtkonfiguráció", + "(already enabled)": "(már engedélyezve van)", + "The following addons can be enabled on this cluster:": "A következő bővítmények engedélyezhetők ezen a fürtön:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "A hálózatiházirend-motor nem módosítható a fürt létrehozása után. Hozzon létre egy új fürtöt a következővel:", + "for full network policy support.": "a hálózati házirend teljes körű támogatásához.", + "Enabling these addons may incur additional Azure costs.": "A bővítmények engedélyezése további Azure-költségeket vonhat maga után.", + "Configuration Error": "Konfigurációs hiba", + "Configuration Complete": "Konfigurálás kész", + "All selected addons have been enabled successfully.": "Az összes kijelölt bővítmény sikeresen engedélyezve.", "Configuring cluster... This may take a few minutes.": "Fürt konfigurálása... Ez több percet is igénybe vehet.", - "Configuring federated credential...": "Összevont hitelesítő adatok konfigurálása...", + "Enabling Addons...": "Bővítmények engedélyezése...", "Configuring...": "Konfigurálás...", - "Confirm & Import": "Megerősítés és importálás", - "Connect": "Csatlakozás", - "Connect GitHub": "A GitHub csatlakoztatása", - "Connect Source": "Forrás csatlakoztatása", - "Connect to GitHub": "Csatlakozás a GitHubhoz", - "Connected": "Csatlakozva", - "Connected to '{{username}}'.": "Csatlakozva a következőhöz: {{username}}.", - "Connecting to GitHub...": "Csatlakozás a GitHubhoz...", - "Connecting...": "Csatlakozás...", - "Container image": "Tárolólemezkép", - "Container Image": "Tárolólemezkép", - "Contents": "Tartalom", - "Continue": "Folytatás", - "Controls whether a process can gain more privileges than its parent process.": "Meghatározza, hogy egy folyamat több jogosultságot szerezhet-e, mint a szülőfolyamata.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Meghatározza, hogy egy folyamat több jogosultságot szerezhet-e, mint a szülőfolyamata. Ennek letiltása (ajánlott) megakadályozza a jogosultságemeléses támadásokat.", - "Convert Namespaces to AKS Projects": "Névterek konvertálása AKS-projektekké", - "Converting": "Konvertálás", - "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} konvertálása AKS-projektté (ez eltarthat egy kis ideig)...", - "Copied!": "Másolva!", - "Copilot agent": "Copilot-ügynök", - "Copilot agent reviewed your repo and generated deployment PR": "A Copilot-ügynök áttekintette az adattárat, és létrehozta az üzembe helyezési lekéréses kérelmet", - "Copy": "Másolás", - "Copy to clipboard": "Másolás a vágólapra", - "CPU": "CPU", - "CPU limit": "CPU-korlát", - "CPU Limits": "CPU-korlátok", - "CPU request": "CPU-kérelem", - "CPU Requests": "CPU-kérelmek", + "Configure Cluster": "Fürt konfigurálása", + "Compute Quota": "Számítási kvóta", + "Set quota limits to prevent overuse and maintain cluster stability": "Állítson be kvótakorlátokat a túlzott használat megelőzése és a fürt stabilitásának fenntartása érdekében", "CPU Resources": "Processzor-erőforrások", - "CPU Usage": "CPU-használat", - "CPU Usage / Target": "CPU-használat/cél", - "Create a new namespace on an existing cluster and set it up as a project": "Új névtér létrehozása egy meglévő fürtön, és beállítása projektként", - "Create Application": "Alkalmazás létrehozása", - "Create deployment PRs": "Üzembe helyezési lekéréses kérelmek létrehozása", - "Create Namespace": "Névtér létrehozása", - "Create New Namespace": "Új névtér létrehozása", - "Create Project": "Projekt létrehozása", - "Create Setup PR": "Beállítási lekéréses kérelem létrehozása", - "Create setup workflow in .github/workflows/": "Beállítási munkafolyamat létrehozása a .github/workflows/ webhelyen", - "Creates a LoadBalancer to expose the application to the internet.": "Létrehoz egy LoadBalancer-t az alkalmazás interneten való közzétételéhez.", - "Creating managed identity...": "Felügyelt identitás létrehozása...", - "Creating namespace": "Névtér létrehozása", - "Creating Namespace": "Névtér létrehozása", - "Creating Project": "Projekt létrehozása", - "Creating setup PR...": "Beállítási lekéréses kérelem létrehozása...", - "Creating the trigger issue for the Copilot coding agent.": "A Copilot kódolási ügynök kiváltó eseményének létrehozása.", - "Current Replicas": "Aktuális replikák", - "Current state": "Aktuális állapot", - "Degraded": "Csökkentett teljesítményű", - "Delete project": "Projekt törlése", + "CPU Requests": "CPU-kérelmek", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimálisan garantált CPU (1000 m = 1 processzormag)", + "CPU Limits": "CPU-korlátok", + "Maximum CPU allowed (1000m = 1 CPU core)": "Maximálisan engedélyezett CPU-kapacitás (1000m = 1 processzormag)", + "Memory Resources": "Memória-erőforrások", + "Memory Requests": "Memóriakérelmek", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimálisan garantált memória (1024 MiB = 1 GiB)", + "Memory Limits": "Memóriakorlátok", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximálisan engedélyezett memória (1024 MiB = 1 GiB)", + "Basics": "Alapvető beállítások", + "Networking Policies": "Hálózatkezelési házirendek", + "Review": "Felülvizsgálat", + "New Project": "Új projekt", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Új projekt beállítása és konfigurálása az Azure Kubernetes Service (AKS) szolgáltatásban", + "Creating Project": "Projekt létrehozása", + "Create Project": "Projekt létrehozása", + "Loading": "Betöltés folyamatban", + "Next": "Következő", + "Project Created Successfully!": "Projekt sikeresen létrehozva!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "A(z) {{projectName}} AKS-projekt létrejött, és használatra kész.", + "Application name": "Alkalmazás neve", + "Enter application name": "Adja meg az alkalmazás nevét", + "Enter a name for your first application to get started with deployment.": "Adja meg az első alkalmazás nevét az üzembe helyezés megkezdéséhez.", + "Create Application": "Alkalmazás létrehozása", + "Project Creation Failed": "A projekt létrehozása nem sikerült", + "Set security, communication and access rules for incoming and outgoing traffic": "Biztonsági, kommunikációs és hozzáférési szabályok beállítása a bejövő és kimenő forgalomhoz", + "Allow traffic within same namespace": "Adatforgalom engedélyezése ugyanazon a névtéren belül", + "Allow all traffic": "Az összes forgalom engedélyezése", + "Deny all traffic": "Az összes forgalom elutasítása", + "Review Project Configuration": "Projektkonfiguráció áttekintése", + "Please review all the settings before creating your AKS project": "Az AKS-projekt létrehozása előtt tekintse át az összes beállítást", + "Project Basics": "A Project alapadatai", + "Description": "Leírás", + "No description provided": "Nincs megadva leírás", + "Ingress Policy": "Bejövő forgalmi házirend", + "Egress Policy": "Kimenő forgalom házirendje", + "CPU": "CPU", + "Requests": "Kérések", + "Limits": "Korlátok", + "Memory": "Memória", + "Access Control ({{count}} assignee)_one": "Hozzáférés-vezérlés ({{count}} felelős)", + "Access Control ({{count}} assignee)_other": "Hozzáférés-vezérlés ({{count}} felelős)", + "Not specified": "Nincs megadva", + "Select an option": "Válasszon egy lehetőséget", + "No options": "Nincsenek beállítások", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Projektlétrehozás indítása", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "A projekt létrehozása 10 perc után túllépte az időkorlátot. Ellenőrizze, hogy létrejött-e a névtér, majd próbálkozzon újra.", + "Initiating managed namespace creation": "Felügyelt névtér létrehozásának kezdeményezése", + "Namespace creation failed: {{message}}": "A névtér létrehozása meghiúsult: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Névtér létrehozása elindítva! Létrehozás állapotának figyelése", + "Waiting for namespace to propagate": "Várakozás a névtér propagálására", + "Namespace status check failed: {{message}}": "Nem sikerült ellenőrizni a névtér állapotát: {{message}}", + "Waiting for namespace to be created": "Várakozás a névtér létrehozására", + "Namespace status verification failed: {{message}}": "A névtér állapotának ellenőrzése nem sikerült: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "A névtér-létrehozási API sikeresen befejezve, tovább a felhasználó-hozzárendelésekhez", + "Namespace creation completed successfully! Adding user access": "A névtér létrehozása sikeresen befejeződött! Felhasználói hozzáférés hozzáadása", + "User assignment completed with errors": "A felhasználó-hozzárendelés hibákkal fejeződött be", + "Project creation completed successfully!": "Projekt sikeresen létrehozva", + "Performing final status verification": "Végső állapotellenőrzés végrehajtása", + "Final status check failed: {{message}}": "A végső állapotellenőrzés sikertelen: {{message}}", + "Final status verification failed: {{message}}": "A végső állapotellenőrzés sikertelen: {{message}}", + "All verifications completed successfully!": "Minden ellenőrzés sikeresen befejeződött!", + "Failed to create project": "Nem sikerült létrehozni a projektet", + "A cluster must be selected": "Ki kell választani egy fürtöt", + "Namespace name is required": "A névtér nevének megadása kötelező", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "A névtér neve csak kisbetűket, számokat és kötőjeleket tartalmazhat, valamint alfanumerikus karakterrel kell kezdődnie és végződnie", + "Namespace name must be 63 characters or fewer": "A névtér neve legfeljebb 63 karakterből kell állhat", + "Creating namespace": "Névtér létrehozása", + "Updating local settings": "Helyi beállítások frissítése", + "Namespace created successfully!": "Névtér sikeresen létrehozva!", + "Failed to create namespace": "Nem sikerült létrehozni a névteret", + "No clusters found. Register a cluster first.": "Nem találhatók fürtök. Először regisztráljon egy fürtöt.", + "Namespace Name": "Névtér neve", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Csak kisbetűket, számokat és kötőjeleket tartalmazhat, és alfanumerikus karakterrel kell kezdődnie és végződnie", + "The namespace will be created on the selected cluster and set up as a project": "A névtér létrejön a kiválasztott fürtön, és projektként lesz beállítva", + "Type": "Típus", + "Regular Kubernetes namespace": "Normál Kubernetes-névtér", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Új névtér jön létre a fürtön, amelyen projektcímkék lesznek alkalmazva. Azonnal megjelenik a projektlistában.", + "Create New Namespace": "Új névtér létrehozása", + "Create a new namespace on an existing cluster and set it up as a project": "Új névtér létrehozása egy meglévő fürtön, és beállítása projektként", + "Creating Namespace": "Névtér létrehozása", + "Namespace Creation Failed": "A névtér létrehozása meghiúsult", + "Namespace Created Successfully!": "Névtér sikeresen létrehozva!", + "Your project \"{{projectName}}\" is ready to use.": "A(z) {{projectName}} projekt használatra kész.", + "Go To Projects": "Ugrás a projektekre", + "Create Namespace": "Névtér létrehozása", + "Delete project": "Projekt törlése", "Delete Project": "Projekt törlése", + "Are you sure you want to delete project \"{{projectId}}\"?": "Biztosan törli a(z) {{projectId}} projektet?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Alapértelmezés szerint ez eltávolítja az Azure által felügyelt névteret és projektcímkéket a következő névterekből:", + "Also delete the namespaces (this will remove all resources within them)": "Törölje a névtereket is (ez eltávolítja a bennük lévő összes erőforrást)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Figyelem: Ez a művelet nem vonható vissza. A névterekben lévő összes erőforrás véglegesen törlődik.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Megjegyzés: Az AKS által felügyelt névterek esetében az Azure ARM-felügyelet automatikusan el lesz távolítva.", "Delete Project & Namespaces": "Projekt és névterek törlése", - "Deleted project {{ projectId }}.": "A(z) {{ projectId }} projekt törölve.", "Deleting project {{ projectId }}…": "A(z) {{ projectId }} projekt törlése…", - "Deny all traffic": "Az összes forgalom elutasítása", - "Deploy": "Üzembe helyezés", - "Deploy {{repo}}": "A(z) {{repo}} üzembe helyezése", - "Deploy an application to start viewing metrics.": "A metrikák megtekintésének megkezdéséhez helyezzen üzembe egy alkalmazást.", - "Deploy an application to view logs.": "Helyezzen üzembe egy alkalmazást a naplók megtekintéséhez.", + "Cancelled deletion of project {{ projectId }}.": "A(z) {{ projectId }} projekt törlése visszavonva.", + "Deleted project {{ projectId }}.": "A(z) {{ projectId }} projekt törölve.", + "Error deleting project {{ projectId }}.": "Hiba történt a(z) {{ projectId }} projekt törlése során.", "Deploy Application": "Alkalmazás üzembe helyezése", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Üzembe helyezés Azure Container Registry, Docker Hub vagy GHCR forrásból", + "Failed to load pipeline runs": "Nem sikerült betölteni a folyamatfuttatásokat", + "Pipeline": "Folyamat", + "Set up your pipeline": "A folyamat beállítása", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "CI/CD-folyamat beállítása az üzembe helyezések automatizálásához és a munkafolyamat egyszerűsítéséhez", + "Waiting for browser authorization...": "Várakozás a böngésző engedélyezésére...", + "Sign in to GitHub to view pipeline runs.": "A folyamatfuttatások megtekintéséhez jelentkezzen be a GitHubra.", + "Connecting...": "Csatlakozás...", + "No pipeline runs yet.": "Még nincsenek folyamatfuttatások.", + "View on GitHub": "Megtekintés a GitHubon", + "View run on GitHub": "Futtatás megtekintése a GitHubon", + "Healthy": "Kifogástalan", + "Scaled down": "Vertikálisan leskálázva", + "Degraded": "Csökkentett teljesítményű", + "VS Code": "VS Code", + "Manual": "Manuális", + "Manual Deploy": "Manuális üzembe helyezés", + "Deploy {{repo}}": "A(z) {{repo}} üzembe helyezése", "Deploy via Pipeline": "Üzembe helyezés folyamaton keresztül", - "Deploying": "Üzembe helyezés", + "No deployments found in this namespace.": "Nem találhatók üzemelő példányok ebben a névtérben.", "Deployment": "Üzembe helyezés", - "Deployment PR": "Üzembe helyezési lekéréses kérelem", - "Deployment PR Ready": "Üzembe helyezési lekéréses kérelem kész", - "Deployment PR reviewed and merged": "Az üzembe helyezési lekéréses kérelem áttekintve és egyesítve", - "Deployment source": "Központi telepítés forrása", - "Description": "Leírás", - "Deselect All": "Összes kijelölés törlése", - "Desired Replicas": "Kívánt replikák", - "Discard": "Elvetés", - "Dismiss": "Bezárás", - "Distributes pods evenly across nodes to improve workload distribution.": "Egyenletesen osztja el a podokat a csomópontok között a számítási feladatok elosztásának javítása érdekében.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Egyenletesen osztja el a podokat csomópontok, zónák vagy más topológiatartományok között a számítási feladatok elosztásának és rendelkezésre állásának javítása érdekében.", - "Done": "Kész", - "Edit Configuration": "Konfiguráció szerkesztése", + "Source": "Forrás", + "Replicas": "Replikák", + "Ready": "Kész", + "Status": "Állapot", + "Actions": "Műveletek", "Edit deployment": "Üzemelő példány szerkesztése", - "Edit HPA Configuration": "HPA-konfiguráció szerkesztése", - "Edit Manual Scaling Configuration": "Manuális skálázási konfiguráció szerkesztése", - "Egress Policy": "Kimenő forgalom házirendje", + "View workflow run": "Munkafolyamat futtatásának megtekintése", + "Re-deploy": "Újbóli üzembe helyezés", + "Failed to trigger deployment": "Nem sikerült elindítani az üzembe helyezést", + "Trigger": "Trigger", + "workflow on": "munkafolyamat itt:", + "with the following parameters:": "a következő paraméterekkel:", + "Namespace": "Névtér", + "Sign in": "Bejelentkezés", + "GitHub authentication required to trigger deployment.": "Az üzembe helyezés elindításához GitHub-hitelesítés szükséges.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "A munkafolyamat elküldése sikeresen aktiválva. Ellenőrizze a GitHub Actions előrehaladását.", + "Close": "Bezárás", + "Triggering...": "Aktiválás...", + "Deploy": "Üzembe helyezés", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Engedélyezze a GitHub-folyamatokat a Beállítások → Előzetes funkciók menüben a folyamattelepítések használatához.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Engedélyezze a GitHub-alapú üzembe helyezési folyamatokat AKS-projektekhez.", - "Enable Horizontal Pod Autoscaler": "Horizontal Pod Autoscaler engedélyezése", - "Enable liveness probe": "Üzemelési tesztek engedélyezése", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "A még fejlesztés alatt álló funkciók engedélyezése vagy letiltása. Az előzetes funkciók a későbbi kiadásokban módosulhatnak vagy eltávolításra kerülhetnek.", - "Enable pod anti-affinity": "Pod anti-affinitás engedélyezése", - "Enable public access": "Nyilvános hozzáférés engedélyezése", - "Enable readiness probe": "Készenléti teszt engedélyezése", - "Enable resource requests and limits": "Erőforrás-kérelmek és korlátok engedélyezése", - "Enable startup probe": "Rendszerindítási teszt engedélyezése", - "Enable topology spread constraints": "Topológiafedés korlátozásainak engedélyezése", - "Enabling Addons...": "Bővítmények engedélyezése...", - "Enabling these addons may incur additional Azure costs.": "A bővítmények engedélyezése további Azure-költségeket vonhat maga után.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Gondoskodjon a minimális ≤ maximális replikákról és 10% és 95% közötti cél CPU-ról.", + "Workloads": "Alkalmazások és szolgáltatások", + "No clusters in this project.": "Ebben a projektben nincsenek fürtök.", + "Failed to fetch deployments": "Nem sikerült beolvasni az üzemelő példányokat", + "Failed to fetch cluster status": "Nem sikerült beolvasni fürt állapotát", + "Configure security context settings for the container.": "Konfigurálja a tároló biztonsági környezeti beállításait.", + "Run as non root user": "Futtatás nem gyökérszintű felhasználóként", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Biztosítja, hogy a tároló ne gyökérszintű felhasználóként (UID != 0) fusson a nagyobb biztonság érdekében. Ez megakadályozza a jogosultságemeléses támadásokat.", "Ensures the container runs as a non-root user for better security.": "Biztosítja, hogy a tároló ne gyökérszintű felhasználóként fusson a nagyobb biztonság érdekében.", - "Ensuring resource group exists...": "Az erőforráscsoport meglétének ellenőrzése...", - "Enter a name for your first application to get started with deployment.": "Adja meg az első alkalmazás nevét az üzembe helyezés megkezdéséhez.", - "Enter application name": "Adja meg az alkalmazás nevét", - "Enter project description": "Projektleírás megadása", - "Environment Variables": "Környezeti változók", - "Error deleting project {{ projectId }}.": "Hiba történt a(z) {{ projectId }} projekt törlése során.", - "Error Rate": "Hibaarány", - "Failed to apply": "Nem sikerült alkalmazni a módosítást", - "Failed to apply resources.": "Nem sikerült alkalmazni az erőforrásokat.", - "Failed to convert namespace: {{message}}": "Nem sikerült konvertálni a névteret: {{message}}", - "Failed to create namespace": "Nem sikerült létrehozni a névteret", - "Failed to create project": "Nem sikerült létrehozni a projektet", - "Failed to enable addon: {{error}}": "Nem sikerült engedélyezni a bővítményt: {{error}}", - "Failed to enable addons": "Nem sikerült engedélyezni a bővítményeket", - "Failed to fetch cluster status": "Nem sikerült beolvasni fürt állapotát", - "Failed to fetch deployment status": "Nem sikerült beolvasni az üzembe helyezés állapotát", - "Failed to fetch deployments": "Nem sikerült beolvasni az üzemelő példányokat", - "Failed to fetch managed namespace details": "Nem sikerült beolvasni a felügyelt névtér részleteit", - "Failed to fetch managed namespaces": "Nem sikerült beolvasni a felügyelt névteret", - "Failed to fetch pod status": "Nem sikerült beolvasni a pod állapotát", - "Failed to fetch service status": "Nem sikerült beolvasni a szolgáltatás állapotát", - "Failed to import any projects. See details below.": "Nem sikerült importálni projektet. A részleteket lásd alább.", - "Failed to initiate login: {{message}}": "Nem sikerült a bejelentkezés kezdeményezése: {{message}}", - "Failed to load AKS clusters": "Nem sikerült betölteni az AKS-fürtöket", - "Failed to load Azure context": "Nem sikerült betölteni az Azure-környezetet", - "Failed to load pipeline runs": "Nem sikerült betölteni a folyamatfuttatásokat", - "Failed to load repositories": "Nem sikerült betölteni az adattárakat", - "Failed to load subscriptions": "Az előfizetéseket nem sikerült betölteni", - "Failed to merge cluster: {{message}}": "Nem sikerült a fürt egyesítése: {{message}}", - "Failed to monitor deployment health": "Nem sikerült nyomon követni az üzembe helyezés állapotát", - "Failed to register cluster: {{message}}": "Nem sikerült regisztrálni a fürtöt: {{message}}", - "Failed to trigger deployment": "Nem sikerült elindítani az üzembe helyezést", - "Failed to update managed namespace": "A felügyelt névtér frissítése nem sikerült", - "failureThreshold": "failureThreshold", - "Features": "Funkciók", - "Federated Credential": "Összevont hitelesítő adatok", - "Filter repositories": "Adattárak szűrése", - "Final status check failed: {{message}}": "A végső állapotellenőrzés sikertelen: {{message}}", - "Final status verification failed: {{message}}": "A végső állapotellenőrzés sikertelen: {{message}}", - "for full network policy support.": "a hálózati házirend teljes körű támogatásához.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Kubernetes-jegyzékek létrehozva (névtér: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Az üzembe helyezés elindításához GitHub-hitelesítés szükséges.", - "GitHub Pipelines": "GitHub-folyamatok", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Ugrás a projektekre", - "Guided configuration for ports, replicas, env, and resources": "Irányított konfiguráció portokhoz, replikákhoz, környezetekhez és erőforrásokhoz", + "Read only root filesystem": "Írásvédett gyökérszintű fájlrendszer", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Az írási műveletek megakadályozása érdekében a tároló gyökérszintű fájlrendszerét írásvédettként csatlakoztatja. Ez növeli a biztonságot azáltal, hogy megakadályozza, hogy a kártékony kódok módosítsák a rendszerfájlokat.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Az írási műveletek megakadályozása érdekében a tároló gyökérszintű fájlrendszerét írásvédettként csatlakoztatja.", + "Allow privilege escalation": "Jogosultságemelés engedélyezése", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Meghatározza, hogy egy folyamat több jogosultságot szerezhet-e, mint a szülőfolyamata. Ennek letiltása (ajánlott) megakadályozza a jogosultságemeléses támadásokat.", + "Controls whether a process can gain more privileges than its parent process.": "Meghatározza, hogy egy folyamat több jogosultságot szerezhet-e, mint a szülőfolyamata.", + "Enable pod anti-affinity": "Pod anti-affinitás engedélyezése", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "A rendelkezésre állás és a hibatűrés javítása érdekében a podok különböző csomópontokon való ütemezésének előnyben részesítése. Ez segít biztosítani a podok elosztását a fürtön.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "A rendelkezésre állás és a hibatűrés javítása érdekében a podok különböző csomópontokon való ütemezésének előnyben részesítése.", + "Enable topology spread constraints": "Topológiafedés korlátozásainak engedélyezése", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Egyenletesen osztja el a podokat csomópontok, zónák vagy más topológiatartományok között a számítási feladatok elosztásának és rendelkezésre állásának javítása érdekében.", + "Distributes pods evenly across nodes to improve workload distribution.": "Egyenletesen osztja el a podokat a csomópontok között a számítási feladatok elosztásának javítása érdekében.", + "Container image": "Tárolólemezkép", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "A futtatandó podreplikák száma. Több replika jobb rendelkezésre állást és terheléselosztást biztosít.", + "Continue": "Folytatás", + "Configure Container Deployment": "Tároló üzembe helyezésének konfigurálása", + "Networking": "Hálózatkezelés", "Healthchecks": "Állapotellenőrzések", - "Healthy": "Kifogástalan", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Milyen gyakran (másodpercben) végezze el az üzemelési tesztet. Az alapértelmezett érték 10 másodperc.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Milyen gyakran (másodpercben) végezze el a készenléti tesztet. Az alapértelmezett érték 10 másodperc.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "A rendszerindítási teszt elvégzésének gyakorisága (másodpercben megadva). Az alapértelmezett érték 10 másodperc.", - "HPA scales pods based on CPU utilization.": "A HPA a processzorkihasználtság alapján skálázza a podokat.", - "Identity Resource Group": "Identitás erőforráscsoportja", - "Import AKS Projects": "AKS-projektek importálása", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importáljon meglévő felügyelt névtereket és normál névtereket projektekként. Azok a névterek, amelyek még nem AKS Desktop-projektek, a szükséges projektcímke hozzáadásával konvertálva lesznek.", - "Import Selected Projects": "Kijelölt projektek importálása", - "Importing": "Importálás folyamatban", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}}/{{total}} importálása: {{name}} innen: {{clusterName}}", - "in resource group": "az erőforráscsoportban", + "Resource Limits": "Erőforráskorlátok", + "Environment Variables": "Környezeti változók", + "Workload Identity": "", + "Advanced": "Speciális", "Information about {{label}}": "A következővel kapcsolatos információk: {{label}}", - "Information about CPU limit": "Információ a CPU-korlátról", - "Information about CPU request": "Információ a CPU-igényről", - "Information about memory limit": "Információ a memóriakorlátról", - "Information about memory request": "Információ a memóriaigényről", - "Information about target CPU utilization": "Információ a cél CPU-kihasználtságáról", - "Ingress Policy": "Bejövő forgalmi házirend", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Inicializálás...", - "Initiating Azure login": "Azure-bejelentkezés kezdeményezése", - "Initiating managed namespace creation": "Felügyelt névtér létrehozásának kezdeményezése", - "Install Extension": "Bővítmény telepítése", - "Install GitHub App": "GitHub-alkalmazás telepítése", - "Installing": "Telepítés", - "Internal only": "Csak belső", - "Invalid YAML": "Érvénytelen YAML", - "Invalid YAML: List item missing required field (kind)": "Érvénytelen YAML: A listaelemből kötelező mező (kind) hiányzik", - "Invalid YAML: List item missing required field (metadata.name)": "Érvénytelen YAML: A listaelemből kötelező mező (metadata.name) hiányzik", - "Invalid YAML: List resource must have an array \"items\" field": "Érvénytelen YAML: A listaerőforrásnak egy tömb items mezővel kell rendelkeznie", - "Invalid YAML: missing required field (kind)": "Érvénytelen YAML: kötelező mező (kind) hiányzik", - "Invalid YAML: missing required field (metadata.name)": "Érvénytelen YAML: kötelező mező (metadata.name) hiányzik", - "Issue {{number}}": "Probléma {{number}}", - "Issues": "Problémák", - "just now": "éppen most", - "KEDA (Event-Driven Autoscaling)": "KEDA (eseményvezérelt automatikus skálázás)", - "Keep Going": "Folytatás", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Adjon hozzá egy vagy több Kubernetes-jegyzékfájlt. Töltsön fel fájlokat a szerkesztő feltöltéséhez, vagy illessze be/szerkessze közvetlenül alább.", + "Upload files": "Fájlok feltöltése", + "Clear editor": "Szerkesztő törlése", + "Review & Deploy": "Áttekintés és üzembe helyezés", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Kubernetes-jegyzékek létrehozva (névtér: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Üzembe helyezendő erőforrások ({{count}} objektum)", + "Resources to be deployed ({{count}} object)_other": "Üzembe helyezendő erőforrások ({{count}} objektum)", + "namespace: {{namespace}}": "névtér: {{namespace}}", + "Configure": "Konfigurálás", + "Deploying": "Üzembe helyezés", "Key": "Kulcs", - "Kubernetes restarts the container if this check fails repeatedly.": "A Kubernetes újraindítja a tárolót, ha ez az ellenőrzés ismételten meghiúsul.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Érték", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "eltávolítja", + "Add variable": "Változó hozzáadása", + "Configure container health probes.": "Tároló-állapottesztek konfigurálása.", + "Manually configure settings": "Beállítások manuális konfigurálása", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Alapértelmezés szerint a tesztek a HTTP GET kérést használják a gyökérútvonalon, ésszerű alapértelmezett beállításokkal. Engedélyezze ezt a tesztelési beállítások testreszabásához.", + "Enable liveness probe": "Üzemelési tesztek engedélyezése", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "A Kubernetes újraindítja a tárolót, ha ez az ellenőrzés ismételten meghiúsul. Holtpontok vagy nem válaszoló tárolók észlelésére és helyreállítására szolgál.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "A Kubernetes ideiglenesen letiltja az üzemelést/készenlétet, amíg az indítás sikeres nem lesz.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "A Kubernetes ideiglenesen letiltja az üzemelést/készenlétet, amíg az indítás sikeres nem lesz. Olyan tárolók esetén hasznos, amelyek elindítása hosszú időt vesz igénybe.", - "Kubernetes Version": "Kubernetes-verzió", - "Kubernetes won't send traffic to the pod until this check passes.": "A Kubernetes nem küld forgalmat a podnak, amíg ez az ellenőrzés nem sikeres.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "A Kubernetes nem küld forgalmat a podnak, amíg ez az ellenőrzés nem sikeres. Annak jelzésére szolgál, hogy egy tároló mikor áll készen a forgalom fogadására.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "egy percnél kevesebb", - "Limits": "Korlátok", + "Kubernetes restarts the container if this check fails repeatedly.": "A Kubernetes újraindítja a tárolót, ha ez az ellenőrzés ismételten meghiúsul.", "Liveness path": "Üzemelés elérési útja", - "Loading": "Betöltés folyamatban", - "Loading AKS clusters": "AKS-fürtök betöltése", - "Loading Azure account information": "Azure-fiókinformáció betöltése", - "Loading Azure context...": "Azure-környezet betöltése...", - "Loading clusters": "Fürtök betöltése folyamatban", - "Loading configuration...": "Konfiguráció betöltése...", - "Loading deployments": "Üzemelő példányok betöltése", - "Loading metrics": "Metrikák betöltése", - "Loading scaling metrics from Prometheus": "Skálázási metrikák betöltése a Prometheusból", - "Loading subscriptions": "Előfizetések betöltése folyamatban", - "Loading...": "Betöltés...", - "Location": "Hely", - "Log out": "Kijelentkezés", - "Logged in as": "A következőként bejelentkezve:", - "Logging out": "Kijelentkezés", - "Login successful! Redirecting": "Sikeres bejelentkezés! Átirányítás", - "Login timeout. Please try again.": "Bejelentkezési időtúllépés. Próbálkozzon újra.", - "Managed Identity": "Felügyelt identitás", - "managed namespaces only": "csak felügyelt névterek", - "ManagedNamespacePreview feature registered successfully!": "A ManagedNamespacePreview funkció sikeresen regisztrálva!", - "Manual": "Manuális", - "Manual Deploy": "Manuális üzembe helyezés", - "Manually configure settings": "Beállítások manuális konfigurálása", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Az üzemelés ellenőrzéséhez használt HTTP-elérési út (pl. /healthz). Az állapotteszt HTTP GET kérést hajt végre erre az elérési útra.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "A tároló elindítása és az üzemelési tesztek megkezdése közötti idő másodpercben megadva.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Milyen gyakran (másodpercben) végezze el az üzemelési tesztet. Az alapértelmezett érték 10 másodperc.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "A teszt időkorlátja másodpercben megadva. Az alapértelmezett érték 1 másodperc.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Ha az állapotteszt sikertelen, a Kubernetes ennyi alkalommal próbálkozik, mielőtt feladná és újraindítaná a tárolót.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "A sikertelenség után legalább ennyi egymást követő sikeres próbálkozás szükséges ahhoz, hogy a teszt sikeresnek minősüljön. Az alapértelmezett érték 1.", + "Enable readiness probe": "Készenléti teszt engedélyezése", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "A Kubernetes nem küld forgalmat a podnak, amíg ez az ellenőrzés nem sikeres. Annak jelzésére szolgál, hogy egy tároló mikor áll készen a forgalom fogadására.", + "Kubernetes won't send traffic to the pod until this check passes.": "A Kubernetes nem küld forgalmat a podnak, amíg ez az ellenőrzés nem sikeres.", + "Readiness path": "Készültségi útvonal", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "A készültség ellenőrzéséhez használt HTTP-elérési út (pl. /ready). Az állapotteszt HTTP GET kérést hajt végre erre az elérési útra.", + "Number of seconds after the container has started before readiness probes are initiated.": "A tároló elindítása és a készenléti tesztek megkezdése közötti idő másodpercben megadva.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Milyen gyakran (másodpercben) végezze el a készenléti tesztet. Az alapértelmezett érték 10 másodperc.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Ha egy állapotteszt sikertelen, a Kubernetes ennyi alkalommal próbálkozik, mielőtt a podot nem készként jelöli meg.", + "Enable startup probe": "Rendszerindítási teszt engedélyezése", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "A Kubernetes ideiglenesen letiltja az üzemelést/készenlétet, amíg az indítás sikeres nem lesz. Olyan tárolók esetén hasznos, amelyek elindítása hosszú időt vesz igénybe.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "A Kubernetes ideiglenesen letiltja az üzemelést/készenlétet, amíg az indítás sikeres nem lesz.", + "Startup path": "Rendszerindítási útvonal", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "A rendszerindítás ellenőrzéséhez használt HTTP-elérési út (pl. /startup). Az állapotteszt HTTP GET kérést hajt végre erre az elérési útra.", + "Number of seconds after the container has started before startup probes are initiated.": "A tároló elindítása és a rendszerindítási tesztek megkezdése közötti idő másodpercben megadva.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "A rendszerindítási teszt elvégzésének gyakorisága (másodpercben megadva). Az alapértelmezett érték 10 másodperc.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Ha egy állapotteszt sikertelen, a Kubernetes ennyi alkalommal próbálkozik, mielőtt feladná. Rendszerindítási állapottesztek esetén ez határozza meg, hogy mennyi ideig kell várni az újraindítás előtt.", + "Enable Horizontal Pod Autoscaler": "Horizontal Pod Autoscaler engedélyezése", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automatikusan skálázza a podok számát a CPU-kihasználtság alapján. A HPA megnöveli a podokat, ha a CPU-használat meghaladja a célt, és csökkenti, ha alatta van.", + "HPA scales pods based on CPU utilization.": "A HPA a processzorkihasználtság alapján skálázza a podokat.", + "Min replicas": "Replikák minimális száma", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "A HPA által még alacsony CPU-használat mellett is fenntartott podreplikák minimális száma.", "Max replicas": "Replikák maximális száma", - "Maximum CPU allowed (1000m = 1 CPU core)": "Maximálisan engedélyezett CPU-kapacitás (1000m = 1 processzormag)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximálisan engedélyezett memória (1024 MiB = 1 GiB)", - "Maximum Replicas": "Replikák maximális száma", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Azoknak a podreplikáknak a maximális száma, amelyeket a HPA vertikális felskálázhat, ha a processzorhasználat magas.", + "Target CPU utilization": "Célzott CPU-kihasználtság", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "A cél átlagos CPU-kihasználtsága az összes podon. A HPA vertikálisan felskáláz, ha a CPU-használat meghaladja ezt az értéket, és leskáláz, ha alatta van.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Gondoskodjon a minimális ≤ maximális replikákról és 10% és 95% közötti cél CPU-ról.", + "Target port": "Célport", + "The port number that your container listens on. This is the port inside the container where your application runs.": "A tároló által figyelt portszám. Ez az a port a tárolóban, ahol az alkalmazása fut.", + "Service port": "Szolgáltatásport", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "A Kubernetes szolgáltatás által elérhetővé tett portszám. Az erre a portra irányuló forgalom a célportra lesz továbbítva.", + "Use custom service port": "Egyéni szolgáltatásport használata", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Alapértelmezés szerint a szolgáltatásport megegyezik a célporttal. Engedélyezze ezt a beállítást, ha másik portot szeretne használni a szolgáltatáshoz.", + "Service type": "Szolgáltatástípus", + "Internal only": "Csak belső", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Használja a ClusterIP-t. Olyan szolgáltatásokhoz ideális, amelyek csak a fürtön belül érhetők el.", + "Enable public access": "Nyilvános hozzáférés engedélyezése", + "Creates a LoadBalancer to expose the application to the internet.": "Létrehoz egy LoadBalancer-t az alkalmazás interneten való közzétételéhez.", + "Enable resource requests and limits": "Erőforrás-kérelmek és korlátok engedélyezése", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Állítsa be a CPU- és memóriakérelmeket (garantált erőforrások) és korlátokat (maximális erőforrások) az erőforrás-kiosztás szabályozása és a tárolók túlzott fürterőforrás-felhasználásának megakadályozása érdekében.", + "CPU request": "CPU-kérelem", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "A tároló számára garantált minimális CPU. A Kubernetes a podot egy olyan csomóponton fogja ütemezni, amelyen legalább ennyi CPU áll rendelkezésre.", + "millicores": "millicore", + "CPU limit": "CPU-korlát", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "A tároló által használható maximális CPU-mennyiség. Ha túllépi, a tároló le lesz szabályozva.", + "Memory request": "Memóriakérelem", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "A tároló számára garantált minimális memóriamennyiség. A Kubernetes a podot egy olyan csomóponton fogja ütemezni, amelyen legalább ennyi memória áll rendelkezésre.", "mebibytes": "mebibájt", - "Memory": "Memória", "Memory limit": "Memóriakorlát", - "Memory Limits": "Memóriakorlátok", - "Memory request": "Memóriakérelem", - "Memory Requests": "Memóriakérelmek", - "Memory Resources": "Memória-erőforrások", - "Memory Usage": "Memóriahasználat", - "Memory utilization": "Memóriakihasználtság", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "{{clusterName}} fürt ({{count}} névtér) egyesítése", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "{{clusterName}} fürt ({{count}} névtér) egyesítése", - "Metrics": "metrikák", - "Metrics refreshed every 30 seconds": "A metrikák 30 másodpercenként frissülnek", - "Metrics Unavailable": "A metrikák nem érhetők el", - "millicores": "millicore", - "Min replicas": "Replikák minimális száma", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "A sikertelenség után legalább ennyi egymást követő sikeres próbálkozás szükséges ahhoz, hogy a teszt sikeresnek minősüljön. Az alapértelmezett érték 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimálisan garantált CPU (1000 m = 1 processzormag)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimálisan garantált memória (1024 MiB = 1 GiB)", - "Minimum Replicas": "Replikák minimális száma", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Hiányzik a szükséges Azure-környezet. Győződjön meg arról, hogy be van jelentkezve, és a fürt egy érvényes előfizetéshez, erőforráscsoporthoz és bérlőhöz van társítva.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Az írási műveletek megakadályozása érdekében a tároló gyökérszintű fájlrendszerét írásvédettként csatlakoztatja.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Az írási műveletek megakadályozása érdekében a tároló gyökérszintű fájlrendszerét írásvédettként csatlakoztatja. Ez növeli a biztonságot azáltal, hogy megakadályozza, hogy a kártékony kódok módosítsák a rendszerfájlokat.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Többfájlos támogatás (üzemelő példányok, szolgáltatások, bejövő forgalom stb.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Csak kisbetűket, számokat és kötőjeleket tartalmazhat, és alfanumerikus karakterrel kell kezdődnie és végződnie", - "Name": "Név", - "Namespace": "Névtér", - "Namespace '{{name}}' converted and imported as project": "A(z) {{name}} névtér konvertálva és projektként importálva lett", - "Namespace created successfully!": "Névtér sikeresen létrehozva!", - "Namespace Created Successfully!": "Névtér sikeresen létrehozva!", - "Namespace creation API succeeded, proceeding with user assignments": "A névtér-létrehozási API sikeresen befejezve, tovább a felhasználó-hozzárendelésekhez", - "Namespace creation completed successfully! Adding user access": "A névtér létrehozása sikeresen befejeződött! Felhasználói hozzáférés hozzáadása", - "Namespace Creation Failed": "A névtér létrehozása meghiúsult", - "Namespace creation failed: {{message}}": "A névtér létrehozása meghiúsult: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Névtér létrehozása elindítva! Létrehozás állapotának figyelése", - "Namespace Name": "Névtér neve", - "Namespace name is required": "A névtér nevének megadása kötelező", - "Namespace name must be 63 characters or fewer": "A névtér neve legfeljebb 63 karakterből kell állhat", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "A névtér neve csak kisbetűket, számokat és kötőjeleket tartalmazhat, valamint alfanumerikus karakterrel kell kezdődnie és végződnie", - "Namespace status check failed: {{message}}": "Nem sikerült ellenőrizni a névtér állapotát: {{message}}", - "Namespace status verification failed: {{message}}": "A névtér állapotának ellenőrzése nem sikerült: {{message}}", - "namespace: {{namespace}}": "névtér: {{namespace}}", - "Namespaces to convert:": "Konvertálandó névterek:", - "Network I/O": "Hálózati I/O", - "Network In": "Bejövő hálózati forgalom", - "Network Out": "Kimenő hálózati forgalom", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "A hálózatiházirend-motor nem módosítható a fürt létrehozása után. Hozzon létre egy új fürtöt a következővel:", - "Networking": "Hálózatkezelés", - "Networking Policies": "Hálózatkezelési házirendek", - "New Project": "Új projekt", - "Next": "Következő", - "No": "Nem", - "No AKS clusters found in this subscription.": "Ebben az előfizetésben nem találhatók AKS-fürtök.", - "No cluster is associated with this project.": "Ehhez a projekthez nincs fürt társítva.", - "No clusters found. Register a cluster first.": "Nem találhatók fürtök. Először regisztráljon egy fürtöt.", - "No clusters in this project.": "Ebben a projektben nincsenek fürtök.", - "No clusters with Azure Entra ID authentication found for this subscription": "Ehhez az előfizetéshez nem található Azure Entra ID-hitelesítéssel rendelkező fürt", - "No data available": "Nincs elérhető adat", - "No deployments found": "Nem található üzemelő példány", - "No Deployments Found": "Nem található üzemelő példány", - "No deployments found in this namespace.": "Nem találhatók üzemelő példányok ebben a névtérben.", - "No description provided": "Nincs megadva leírás", - "No eligible clusters found in this subscription.": "Ebben az előfizetésben nem találhatók jogosult fürtök.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "A tároló által használható maximális memóriamennyiség. Ha túllépi, a tároló leáll (OOMKilled).", + "Container Image": "Tárolólemezkép", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Üzembe helyezés Azure Container Registry, Docker Hub vagy GHCR forrásból", + "Auto-generated Deployment and Service manifests": "Automatikusan létrehozott üzembe helyezési és szolgáltatásjegyzékek", + "Guided configuration for ports, replicas, env, and resources": "Irányított konfiguráció portokhoz, replikákhoz, környezetekhez és erőforrásokhoz", "No Kubernetes expertise required to get started": "Nincs szükség Kubernetes-szakértelemre a kezdéshez", - "No options": "Nincsenek beállítások", - "No pipeline runs yet.": "Még nincsenek folyamatfuttatások.", - "No pods found for deployment \"{{name}}\"": "Nem találhatók podok a(z) {{name}} üzemelő példányhoz", - "No repositories found": "Nem találhatók adattárak", - "No repositories match your filter": "Egyetlen adattár sem felel meg a szűrőnek", - "No response time data available": "Nem állnak rendelkezésre válaszidő-adatok", - "No scaling data available": "Nem állnak rendelkezésre skálázási adatok", - "No subscriptions found": "Nem található előfizetés", - "Not specified": "Nincs megadva", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Megjegyzés: Az AKS által felügyelt névterek esetében az Azure ARM-felügyelet automatikusan el lesz távolítva.", - "Number of Replicas": "Replikák száma", - "Number of seconds after the container has started before liveness probes are initiated.": "A tároló elindítása és az üzemelési tesztek megkezdése közötti idő másodpercben megadva.", - "Number of seconds after the container has started before readiness probes are initiated.": "A tároló elindítása és a készenléti tesztek megkezdése közötti idő másodpercben megadva.", - "Number of seconds after the container has started before startup probes are initiated.": "A tároló elindítása és a rendszerindítási tesztek megkezdése közötti idő másodpercben megadva.", - "Number of seconds after which the probe times out. Default is 1 second.": "A teszt időkorlátja másodpercben megadva. Az alapértelmezett érték 1 másodperc.", - "OIDC trust for": "OIDC bizalmi kapcsolat a következőhöz:", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Az ügynök létrehozott egy üzembe helyezési lekéréses kérelmet. Tekintse át a létrehozott fájlokat, majd egyesítéssel indítsa el az üzembe helyezési folyamatot", - "Only clusters with Azure Entra ID authentication are shown.": "Csak az Azure Entra ID-hitelesítéssel rendelkező fürtök jelennek meg.", - "Performing final status verification": "Végső állapotellenőrzés végrehajtása", - "periodSeconds": "periodSeconds", - "Pipeline": "Folyamat", - "Pipeline configured": "Folyamat konfigurálva", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Végezze el a hitelesítést a böngészőben. Ez az ablak automatikusan átirányítja a bejelentkezés befejezése után.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "A folytatáshoz regisztrálja.", - "Please review all the settings before creating your AKS project": "Az AKS-projekt létrehozása előtt tekintse át az összes beállítást", - "Please select a deployment to view metrics": "Válasszon ki egy üzemelő példányt a metrikák megtekintéséhez", - "Please select a subscription first": "Először válasszon előfizetést", - "Please select at least one namespace to import": "Válasszon ki legalább egy importálandó névteret", - "Please sign in to Azure to continue.": "A folytatáshoz jelentkezzen be az Azure-ba.", - "Pod Details": "Pod részletei", - "Pod Name": "Pod neve", - "PR {{number}}": "Lekéréses kérelem {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "A rendelkezésre állás és a hibatűrés javítása érdekében a podok különböző csomópontokon való ütemezésének előnyben részesítése.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "A rendelkezésre állás és a hibatűrés javítása érdekében a podok különböző csomópontokon való ütemezésének előnyben részesítése. Ez segít biztosítani a podok elosztását a fürtön.", + "Bring your own Kubernetes manifests to deploy": "Saját Kubernetes-jegyzékek használata az üzembe helyezéshez", + "Use existing manifests for full control": "Meglévő jegyzékfájlok használata teljes vezérléshez", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Többfájlos támogatás (üzemelő példányok, szolgáltatások, bejövő forgalom stb.)", "Preview and basic validation before apply": "Előnézet és alapszintű ellenőrzés alkalmazás előtt", - "Preview Features": "Előzetes funkciók", - "Project '{{name}}' successfully imported": "A(z) {{name}} projekt sikeresen importálva", - "Project Basics": "A Project alapadatai", - "Project Created Successfully!": "Projekt sikeresen létrehozva!", - "Project creation completed successfully!": "Projekt sikeresen létrehozva", - "Project Creation Failed": "A projekt létrehozása nem sikerült", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "A projekt létrehozása 10 perc után túllépte az időkorlátot. Ellenőrizze, hogy létrejött-e a névtér, majd próbálkozzon újra.", - "Project Description": "Projekt leírása", - "Project Name": "Projektnév", - "Project name is available": "A projektnév elérhető", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "A projekt neve csak kisbetűket, számokat és kötőjeleket tartalmazhat (szóközöket nem)", - "Project Status": "Projektállapot", - "Pull requests": "Lekéréses kérelem", + "Select Source": "Forrás kiválasztása", + "Choose a source for your deployment (container image, repo, etc.).": "Válasszon forrást az üzembe helyezéshez (tárolólemezkép, adattár stb.).", + "Deployment source": "Központi telepítés forrása", + "Features": "Funkciók", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Identitás erőforráscsoportja", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Meglévő identitás keresése...", + "Creating managed identity...": "Felügyelt identitás létrehozása...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Érvénytelen YAML: kötelező mező (kind) hiányzik", + "Invalid YAML: List resource must have an array \"items\" field": "Érvénytelen YAML: A listaerőforrásnak egy tömb items mezővel kell rendelkeznie", + "Invalid YAML: List item missing required field (kind)": "Érvénytelen YAML: A listaelemből kötelező mező (kind) hiányzik", + "Invalid YAML: List item missing required field (metadata.name)": "Érvénytelen YAML: A listaelemből kötelező mező (metadata.name) hiányzik", + "Invalid YAML: missing required field (metadata.name)": "Érvénytelen YAML: kötelező mező (metadata.name) hiányzik", + "Invalid YAML": "Érvénytelen YAML", + "Validation failed": "Érvényesítés meghiúsult", + "Failed to apply": "Nem sikerült alkalmazni a módosítást", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} erőforrás alkalmazva, de {{failed}} meghiúsult:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "{{count}} erőforrás sikeresen alkalmazva.", + "Applied {{count}} resource(s) successfully._other": "{{count}} erőforrás sikeresen alkalmazva.", + "Failed to apply resources.": "Nem sikerült alkalmazni az erőforrásokat.", + "unnamed": "névtelen", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Tartalom", "Push agent config files": "Leküldéses ügynök konfigurációs fájljai", - "Re-deploy": "Újbóli üzembe helyezés", - "Read only root filesystem": "Írásvédett gyökérszintű fájlrendszer", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Írásvédett hozzáférés a névtér legtöbb objektumához. Nem tekintheti meg a szerepköröket, szerepkörkötéseket és titkos kódokat.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Olvasási/írási hozzáférés a névtér legtöbb objektumához. Nem tekinti meg és nem módosíthatja a szerepköröket és a szerepkörkötéseket. Hozzáférhet a titkos kódokhoz és podokat futtathat a névtér bármely ServiceAccount-jaként.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Olvasási/írási hozzáférés a névtér legtöbb erőforrásához. Létrehozhat szerepköröket és szerepkörkötéseket a névtérben. Nem írhat az erőforráskvótára vagy magára a névtérre.", - "Readiness path": "Készültségi útvonal", - "Ready": "Kész", - "Refresh": "Frissítés", - "Refreshing": "Frissítés", - "Register AKS Cluster": "AKS-fürt regisztrálása", - "Register Cluster": "Fürt regisztrálása", - "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview funkció regisztrálása", - "Registering": "Regisztrálás folyamatban", - "Registering cluster": "Fürt regisztrálása", - "Regular": "Normál", - "Regular Kubernetes namespace": "Normál Kubernetes-névtér", - "remove": "eltávolítja", - "Remove assignee": "Felelős eltávolítása", - "Reopen install page": "Telepítési lap újranyitása", - "Replica Bounds": "Replika határai", - "Replicas": "Replikák", - "Request & error rate": "Kérések és hibák gyakorisága", - "Request Rate": "Kérelmek gyakorisága", - "Requests": "Kérések", - "Required Permissions": "Szükséges engedélyek", - "Resource Group": "Erőforráscsoport", - "Resource group where the managed identity will be created": "Az az erőforráscsoport, ahol a felügyelt identitás létrejön", - "Resource Limits": "Erőforráskorlátok", - "Resource Usage": "Erőforrás-használat", - "Resources to be deployed ({{count}} object)_one": "Üzembe helyezendő erőforrások ({{count}} objektum)", - "Resources to be deployed ({{count}} object)_other": "Üzembe helyezendő erőforrások ({{count}} objektum)", - "Response Time": "Válaszidő", - "Restarts": "Újraindítások", - "Retry": "Újrapróbálkozás", - "Review": "Felülvizsgálat", - "Review & Deploy": "Áttekintés és üzembe helyezés", - "Review & Merge": "Áttekintés és egyesítés", - "Review and merge the setup PR to enable the Copilot agent.": "Tekintse át és egyesítse a beállítási lekéréses kérelmet a Copilot-ügynök engedélyezéséhez.", - "Review on GitHub": "Áttekintés a GitHubon", - "Review Project Configuration": "Projektkonfiguráció áttekintése", - "Role": "Szerepkör", - "Role Assignment": "Szerepkör-hozzárendelés", - "Run as non root user": "Futtatás nem gyökérszintű felhasználóként", + "Workflows": "Munkafolyamatok", + "Create setup workflow in .github/workflows/": "Beállítási munkafolyamat létrehozása a .github/workflows/ webhelyen", + "Pull requests": "Lekéréses kérelem", + "Create deployment PRs": "Üzembe helyezési lekéréses kérelmek létrehozása", + "Issues": "Problémák", + "Track agent progress": "Ügynök állapotának nyomon követése", "Run deployment workflows": "Üzembe helyezési munkafolyamatok futtatása", - "Save": "Mentés", - "Scaled down": "Vertikálisan leskálázva", - "Scaling": "Skálázás", - "Scaling Chart Unavailable": "A skálázási diagram nem érhető el", - "Scaling History (Last 24 Hours)": "Skálázási előzmények (elmúlt 24 óra)", - "Scaling Mode": "Skálázási mód", - "Scaling Overview": "Skálázás áttekintése", - "Search clusters": "Fürtök keresése", - "Search subscriptions": "Előfizetések keresése", - "Select a cluster": "Fürt kiválasztása", - "Select a deployment to view metrics": "Válasszon ki egy üzemelő példányt a metrikák megtekintéséhez", - "Select a deployment to view scaling metrics": "Válasszon ki egy üzemelő példányt a skálázási metrikák megtekintéséhez", - "Select a subscription": "Válasszon ki egy előfizetést", - "Select All": "Az összes kijelölése", - "Select an AKS cluster": "AKS-fürt kiválasztása", - "Select an Azure subscription": "Válasszon ki egy Azure-előfizetést", - "Select an option": "Válasszon egy lehetőséget", - "Select Deployment": "Üzemelő példány kiválasztása", - "Select Namespaces to Import": "Válassza ki az importálandó névtereket", + "Connect to GitHub": "Csatlakozás a GitHubhoz", + "Connected to '{{username}}'.": "Csatlakozva a következőhöz: {{username}}.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Engedélyezze az AKS asztal számára, hogy üzembe helyezési folyamatokat hozzon létre az adattárban.", + "Required Permissions": "Szükséges engedélyek", + "Complete authorization on your browser screen": "Engedélyezés végrehajtása a böngésző képernyőjén", + "Connect": "Csatlakozás", "Select repository": "Adattár kiválasztása", - "Select Source": "Forrás kiválasztása", - "Selected Cluster Details": "Kijelölt fürt részletei", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "A kiválasztott fürt hiányzik a kubeconfig állományból. A folytatás előtt regisztrálja.", - "Service port": "Szolgáltatásport", - "Service type": "Szolgáltatástípus", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Állítsa be a CPU- és memóriakérelmeket (garantált erőforrások) és korlátokat (maximális erőforrások) az erőforrás-kiosztás szabályozása és a tárolók túlzott fürterőforrás-felhasználásának megakadályozása érdekében.", - "Set quota limits to prevent overuse and maintain cluster stability": "Állítson be kvótakorlátokat a túlzott használat megelőzése és a fürt stabilitásának fenntartása érdekében", - "Set security, communication and access rules for incoming and outgoing traffic": "Biztonsági, kommunikációs és hozzáférési szabályok beállítása a bejövő és kimenő forgalomhoz", - "Set the desired number of pod replicas for this deployment": "Állítsa be az üzemelő példány pod-replikáinak kívánt számát", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "CI/CD-folyamat beállítása az üzembe helyezések automatizálásához és a munkafolyamat egyszerűsítéséhez", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Új projekt beállítása és konfigurálása az Azure Kubernetes Service (AKS) szolgáltatásban", - "Set up Copilot Agent": "Copilot-ügynök beállítása", - "Set up your pipeline": "A folyamat beállítása", - "Setting up Copilot agent...": "A Copilot-ügynök beállítása...", - "Setup PR Created": "Telepítési lekéréses kérelem létrehozva", - "Setup PR reviewed and merged": "A beállítási lekéréses kérelem áttekintve és egyesítve", - "Sign in": "Bejelentkezés", - "Sign in to GitHub": "Bejelentkezés a GitHubba", - "Sign in to GitHub to view pipeline runs.": "A folyamatfuttatások megtekintéséhez jelentkezzen be a GitHubra.", - "Sign in with Azure": "Bejelentkezés az Azure-ral", - "Sign in with your Azure account to manage AKS clusters and resources": "Jelentkezzen be Azure-fiókjával az AKS-fürtök és -erőforrások kezeléséhez", - "Source": "Forrás", - "Starting project creation": "Projektlétrehozás indítása", - "Startup path": "Rendszerindítási útvonal", - "Status": "Állapot", - "Subscription": "Előfizetés", - "Successfully merged {{count}} cluster(s)_one": "{{count}} fürt sikeresen egyesítve", - "Successfully merged {{count}} cluster(s)_other": "{{count}} fürt sikeresen egyesítve", - "successThreshold": "successThreshold", - "Target CPU utilization": "Célzott CPU-kihasználtság", - "Target CPU Utilization (%)": "Célzott CPU-kihasználtság (%)", - "Target port": "Célport", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Az ügynök létrehozta az üzembe helyezési lekéréses kérelmet. Tekintse át a létrehozott fájlokat, majd egyesítéssel indítsa el az üzembe helyezési folyamatot.", - "The agent is creating the setup PR to enable the Copilot agent.": "Az ügynök létrehozza a beállítási lekéréses kérelmet a Copilot-ügynök engedélyezéséhez.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Végezze el a telepítést a böngészőben. Ez automatikusan frissül, amint az alkalmazás telepítve lesz a(z) {{repoName}} adattárban.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "A folytatáshoz telepíteni kell az AKS asztali GitHub-alkalmazást ide: {{repoName}}.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Felügyelt névterek létrehozásához aks-preview bővítmény szükséges. A folytatáshoz telepítse.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "A Copilot kódolási ügynök elemzi az adattárat, és létrehoz egy üzembe helyezési lekéréses kérelmet Dockerfile-lal, Kubernetes-jegyzékekkel és egy GitHub Actions-munkafolyamattal.", - "The following addons can be enabled on this cluster:": "A következő bővítmények engedélyezhetők ezen a fürtön:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "A következő Azure-erőforrások lesznek létrehozva, hogy lehetővé tegyék a GitHub Actions-folyamat hitelesítését az AKS-fürttel:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "A következő névterek AKS Desktop-projektekké lesznek konvertálva a következő címkék hozzáadásával:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Az üzemelés ellenőrzéséhez használt HTTP-elérési út (pl. /healthz). Az állapotteszt HTTP GET kérést hajt végre erre az elérési útra.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "A készültség ellenőrzéséhez használt HTTP-elérési út (pl. /ready). Az állapotteszt HTTP GET kérést hajt végre erre az elérési útra.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "A rendszerindítás ellenőrzéséhez használt HTTP-elérési út (pl. /startup). Az állapotteszt HTTP GET kérést hajt végre erre az elérési útra.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Felügyelt névterek létrehozásához regisztrálni kell a ManagedNamespacePreview funkciót.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "A tároló által használható maximális CPU-mennyiség. Ha túllépi, a tároló le lesz szabályozva.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "A tároló által használható maximális memóriamennyiség. Ha túllépi, a tároló leáll (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Azoknak a podreplikáknak a maximális száma, amelyeket a HPA vertikális felskálázhat, ha a processzorhasználat magas.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "A tároló számára garantált minimális CPU. A Kubernetes a podot egy olyan csomóponton fogja ütemezni, amelyen legalább ennyi CPU áll rendelkezésre.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "A tároló számára garantált minimális memóriamennyiség. A Kubernetes a podot egy olyan csomóponton fogja ütemezni, amelyen legalább ennyi memória áll rendelkezésre.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "A HPA által még alacsony CPU-használat mellett is fenntartott podreplikák minimális száma.", - "The namespace will be created on the selected cluster and set up as a project": "A névtér létrejön a kiválasztott fürtön, és projektként lesz beállítva", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "A futtatandó podreplikák száma. Több replika jobb rendelkezésre állást és terheléselosztást biztosít.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Előfordulhat, hogy a művelet továbbra is fut a GitHubon. A legutóbbi állapotot a fenti hivatkozáson ellenőrizheti.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "A Kubernetes szolgáltatás által elérhetővé tett portszám. Az erre a portra irányuló forgalom a célportra lesz továbbítva.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "A tároló által figyelt portszám. Ez az a port a tárolóban, ahol az alkalmazása fut.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "A cél átlagos CPU-kihasználtsága az összes podon. A HPA vertikálisan felskáláz, ha a CPU-használat meghaladja ezt az értéket, és leskáláz, ha alatta van.", - "There are no deployments in this project namespace yet.": "Ebben a projektnévtérben még nincsenek üzemelő példányok.", + "Reopen install page": "Telepítési lap újranyitása", + "Install GitHub App": "GitHub-alkalmazás telepítése", + "Checking...": "Ellenőrzés...", + "Connecting to GitHub...": "Csatlakozás a GitHubhoz...", + "Connect GitHub": "A GitHub csatlakoztatása", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Csatlakozva", + "Sign in to GitHub": "Bejelentkezés a GitHubba", + "Failed to load repositories": "Nem sikerült betölteni az adattárakat", + "Filter repositories": "Adattárak szűrése", + "No repositories match your filter": "Egyetlen adattár sem felel meg a szűrőnek", + "No repositories found": "Nem találhatók adattárak", + "less than a minute": "egy percnél kevesebb", + "{{count}} min_one": "{{count}} perc", + "{{count}} min_other": "{{count}} perc", + "Up next": "Következő", + "PR {{number}}": "Lekéréses kérelem {{number}}", + "Checking merge status...": "Egyesítés állapotának ellenőrzése...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "A folyamat a vártnál több időt vesz igénybe. Ellenőrizze a lekéréses kérelmet a GitHubon a legfrissebb állapotért.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Ez engedélyekkel kapcsolatos probléma lehet. Ellenőrizze a GitHub-alkalmazás engedélyeit, majd próbálkozzon újra.", "This PR was closed without merging. You may need to restart the process.": "Ez a lekéréses kérelem egyesítés nélkül lett lezárva. Előfordulhat, hogy újra kell indítania a folyamatot.", + "Review on GitHub": "Áttekintés a GitHubon", + "Agent is working": "Az ügynök működik", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "A Copilot kódolási ügynök elemzi az adattárat, és létrehoz egy üzembe helyezési lekéréses kérelmet Dockerfile-lal, Kubernetes-jegyzékekkel és egy GitHub Actions-munkafolyamattal.", + "Issue {{number}}": "Probléma {{number}}", + "Waiting for agent workflow to start...": "Várakozás az ügynök munkafolyamatának indítására...", "This typically takes 10–25 minutes.": "Általában 10-25 percet vesz igénybe.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Podok összesen", - "Track agent progress": "Ügynök állapotának nyomon követése", - "Trigger": "Trigger", - "Trigger Copilot Agent": "Copilot-ügynök aktiválása", - "Triggering...": "Aktiválás...", + "Pipeline configured": "Folyamat konfigurálva", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "A(z) {{repoFullName}} CI/CD-folyamata készen áll. Központi telepítések aktiválása az Üzembe helyezés lapról.", + "Setup PR reviewed and merged": "A beállítási lekéréses kérelem áttekintve és egyesítve", + "Copilot agent reviewed your repo and generated deployment PR": "A Copilot-ügynök áttekintette az adattárat, és létrehozta az üzembe helyezési lekéréses kérelmet", + "Deployment PR reviewed and merged": "Az üzembe helyezési lekéréses kérelem áttekintve és egyesítve", + "View deployment": "Üzemelő példány megtekintése", + "You can collapse this panel. Progress is saved and will resume when you return.": "Összecsukhatja ezt a panelt. Az állapot mentve van, és a visszatérésekor folytatódik.", + "Creating setup PR...": "Beállítási lekéréses kérelem létrehozása...", + "The agent is creating the setup PR to enable the Copilot agent.": "Az ügynök létrehozza a beállítási lekéréses kérelmet a Copilot-ügynök engedélyezéséhez.", + "Setup PR Created": "Telepítési lekéréses kérelem létrehozva", + "Review and merge the setup PR to enable the Copilot agent.": "Tekintse át és egyesítse a beállítási lekéréses kérelmet a Copilot-ügynök engedélyezéséhez.", + "Setting up Copilot agent...": "A Copilot-ügynök beállítása...", + "Creating the trigger issue for the Copilot coding agent.": "A Copilot kódolási ügynök kiváltó eseményének létrehozása.", + "Deployment PR Ready": "Üzembe helyezési lekéréses kérelem kész", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Az ügynök létrehozta az üzembe helyezési lekéréses kérelmet. Tekintse át a létrehozott fájlokat, majd egyesítéssel indítsa el az üzembe helyezési folyamatot.", + "Copilot agent": "Copilot-ügynök", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Az egyesítés után az Copilot ügynök elemzi az adattárat, és létrehoz egy üzembe helyezési lekéréses kérelmet", + "Deployment PR": "Üzembe helyezési lekéréses kérelem", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Az ügynök létrehozott egy üzembe helyezési lekéréses kérelmet. Tekintse át a létrehozott fájlokat, majd egyesítéssel indítsa el az üzembe helyezési folyamatot", + "Connect Source": "Forrás csatlakoztatása", + "Set up Copilot Agent": "Copilot-ügynök beállítása", + "Review & Merge": "Áttekintés és egyesítés", + "Collapse panel": "Panel összecsukása", + "Keep Going": "Folytatás", + "Discard": "Elvetés", + "Canceling will discard your pipeline progress. Are you sure?": "A megszakítás elveti a folyamat előrehaladását. Biztosan folytatja?", + "Ensuring resource group exists...": "Az erőforráscsoport meglétének ellenőrzése...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Összevont hitelesítő adatok konfigurálása...", + "Workload identity configured": "Tevékenységprofil-identitás konfigurálva", + "Configure Workload Identity": "Számítási feladat identitásának konfigurálása", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "A következő Azure-erőforrások lesznek létrehozva, hogy lehetővé tegyék a GitHub Actions-folyamat hitelesítését az AKS-fürttel:", + "Managed Identity": "Felügyelt identitás", + "in resource group": "az erőforráscsoportban", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Összevont hitelesítő adatok", + "OIDC trust for": "OIDC bizalmi kapcsolat a következőhöz:", + "branch": "ág", + "Resource group where the managed identity will be created": "Az az erőforráscsoport, ahol a felügyelt identitás létrejön", + "Workload identity configured successfully.": "A számítási feladat identitása sikeresen konfigurálva.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Ez engedélyekkel kapcsolatos probléma lehet. Ellenőrizze a GitHub-alkalmazás engedélyeit, majd próbálkozzon újra.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Előfordulhat, hogy a művelet továbbra is fut a GitHubon. A legutóbbi állapotot a fenti hivatkozáson ellenőrizheti.", "Try again, or check GitHub for details.": "Próbálkozzon újra, vagy tekintse meg a GitHubot a részletekért.", - "Type": "Típus", + "Initializing...": "Inicializálás...", + "Checking repository readiness...": "Az adattár készültségének ellenőrzése...", + "Loading configuration...": "Konfiguráció betöltése...", "Unknown error": "Ismeretlen hiba", - "unnamed": "névtelen", - "Up next": "Következő", - "Update": "Frissítés", - "Updating": "Frissítés folyamatban", - "Updating local settings": "Helyi beállítások frissítése", - "Upload files": "Fájlok feltöltése", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Használja a ClusterIP-t. Olyan szolgáltatásokhoz ideális, amelyek csak a fürtön belül érhetők el.", - "Use custom service port": "Egyéni szolgáltatásport használata", - "Use existing manifests for full control": "Meglévő jegyzékfájlok használata teljes vezérléshez", - "User assignment completed with errors": "A felhasználó-hozzárendelés hibákkal fejeződött be", - "Validation failed": "Érvényesítés meghiúsult", - "Value": "Érték", - "View deployment": "Üzemelő példány megtekintése", - "View on GitHub": "Megtekintés a GitHubon", - "View run on GitHub": "Futtatás megtekintése a GitHubon", - "View workflow run": "Munkafolyamat futtatásának megtekintése", - "VPA (Vertical Pod Autoscaler)": "VPA (automatikus vertikális podméretező)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Várakozás az ügynök munkafolyamatának indítására...", - "Waiting for browser authorization...": "Várakozás a böngésző engedélyezésére...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Várakozás a bejelentkezés befejezésére... ({{minutes}} perc van hátra)", - "Waiting for namespace to be created": "Várakozás a névtér létrehozására", - "Waiting for namespace to propagate": "Várakozás a névtér propagálására", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Figyelem: Ez a művelet nem vonható vissza. A névterekben lévő összes erőforrás véglegesen törlődik.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Ha az állapotteszt sikertelen, a Kubernetes ennyi alkalommal próbálkozik, mielőtt feladná és újraindítaná a tárolót.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Ha egy állapotteszt sikertelen, a Kubernetes ennyi alkalommal próbálkozik, mielőtt feladná. Rendszerindítási állapottesztek esetén ez határozza meg, hogy mennyi ideig kell várni az újraindítás előtt.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Ha egy állapotteszt sikertelen, a Kubernetes ennyi alkalommal próbálkozik, mielőtt a podot nem készként jelöli meg.", + "Trigger Copilot Agent": "Copilot-ügynök aktiválása", + "Create Setup PR": "Beállítási lekéréses kérelem létrehozása", + "Failed to fetch deployment status": "Nem sikerült beolvasni az üzembe helyezés állapotát", + "Failed to fetch pod status": "Nem sikerült beolvasni a pod állapotát", + "Failed to fetch service status": "Nem sikerült beolvasni a szolgáltatás állapotát", + "Failed to monitor deployment health": "Nem sikerült nyomon követni az üzembe helyezés állapotát", + "Convert Namespaces to AKS Projects": "Névterek konvertálása AKS-projektekké", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "A következő névterek AKS Desktop-projektekké lesznek konvertálva a következő címkék hozzáadásával:", + "managed namespaces only": "csak felügyelt névterek", + "Namespaces to convert:": "Konvertálandó névterek:", + "Already AKS projects (will import directly):": "Már AKS-projektek (közvetlenül importálhatók):", + "Converting": "Konvertálás", + "Confirm & Import": "Megerősítés és importálás", + "Please select at least one namespace to import": "Válasszon ki legalább egy importálandó névteret", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "A(z) {{clusterName}} fürtöt regisztrálni kell a normál névterek importálása előtt. Először importáljon egy felügyelt névteret ebből a fürtből.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "{{clusterName}} fürt ({{count}} névtér) egyesítése", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "{{clusterName}} fürt ({{count}} névtér) egyesítése", + "Failed to merge cluster: {{message}}": "Nem sikerült a fürt egyesítése: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} konvertálása AKS-projektté (ez eltarthat egy kis ideig)...", + "Failed to convert namespace: {{message}}": "Nem sikerült konvertálni a névteret: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}}/{{total}} importálása: {{name}} innen: {{clusterName}}", + "Project '{{name}}' successfully imported": "A(z) {{name}} projekt sikeresen importálva", + "Namespace '{{name}}' converted and imported as project": "A(z) {{name}} névtér konvertálva és projektként importálva lett", + "Successfully merged {{count}} cluster(s)_one": "{{count}} fürt sikeresen egyesítve", + "Successfully merged {{count}} cluster(s)_other": "{{count}} fürt sikeresen egyesítve", "with {{count}} project(s)_one": "{{count}} projekttel", "with {{count}} project(s)_other": "{{count}} projekttel", - "with the following parameters:": "a következő paraméterekkel:", - "Wizard steps": "Varázsló lépései", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "A munkafolyamat elküldése sikeresen aktiválva. Ellenőrizze a GitHub Actions előrehaladását.", - "workflow on": "munkafolyamat itt:", - "Workflows": "Munkafolyamatok", - "Workload identity configured": "Tevékenységprofil-identitás konfigurálva", - "Workload identity configured successfully.": "A számítási feladat identitása sikeresen konfigurálva.", - "Workloads": "Alkalmazások és szolgáltatások", + "{{count}} failed._one": "{{count}} sikertelen.", + "{{count}} failed._other": "{{count}} sikertelen.", + "Failed to import any projects. See details below.": "Nem sikerült importálni projektet. A részleteket lásd alább.", + "Import AKS Projects": "AKS-projektek importálása", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importáljon meglévő felügyelt névtereket és normál névtereket projektekként. Azok a névterek, amelyek még nem AKS Desktop-projektek, a szükséges projektcímke hozzáadásával konvertálva lesznek.", + "Select Namespaces to Import": "Válassza ki az importálandó névtereket", + "{{count}} selected_one": "{{count}} kiválasztva", + "{{count}} selected_other": "{{count}} kiválasztva", + "Select All": "Az összes kijelölése", + "Deselect All": "Összes kijelölés törlése", + "AKS Managed": "AKS által felügyelt", + "Regular": "Normál", + "AKS Project?": "AKS-projekt?", "Yes": "Igen", - "You can collapse this panel. Progress is saved and will resume when you return.": "Összecsukhatja ezt a panelt. Az állapot mentve van, és a visszatérésekor folytatódik.", - "You need to be logged in to Azure to register AKS clusters.": "Az AKS-fürtök regisztrálásához be kell jelentkeznie az Azure-ba.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "A(z) {{projectName}} AKS-projekt létrejött, és használatra kész.", - "Your project \"{{projectName}}\" is ready to use.": "A(z) {{projectName}} projekt használatra kész." + "No": "Nem", + "Importing": "Importálás folyamatban", + "Import Selected Projects": "Kijelölt projektek importálása", + "Failed to fetch managed namespaces": "Nem sikerült beolvasni a felügyelt névteret", + "Failed to fetch managed namespace details": "Nem sikerült beolvasni a felügyelt névtér részleteit", + "Failed to update managed namespace": "A felügyelt névtér frissítése nem sikerült", + "Updating": "Frissítés folyamatban", + "Update": "Frissítés", + "AKS desktop logo": "AKS asztal embléma", + "No Deployments Found": "Nem található üzemelő példány", + "There are no deployments in this project namespace yet.": "Ebben a projektnévtérben még nincsenek üzemelő példányok.", + "Deploy an application to view logs.": "Helyezzen üzembe egy alkalmazást a naplók megtekintéséhez.", + "Metrics": "metrikák", + "CPU Usage": "CPU-használat", + "Memory Usage": "Memóriahasználat", + "Request Rate": "Kérelmek gyakorisága", + "Error Rate": "Hibaarány", + "Metrics refreshed every 30 seconds": "A metrikák 30 másodpercenként frissülnek", + "Select a deployment to view metrics": "Válasszon ki egy üzemelő példányt a metrikák megtekintéséhez", + "Metrics Unavailable": "A metrikák nem érhetők el", + "Application Metrics": "Alkalmazásmetrikák", + "Request & error rate": "Kérések és hibák gyakorisága", + "No data available": "Nincs elérhető adat", + "Response Time": "Válaszidő", + "Memory utilization": "Memóriakihasználtság", + "Network I/O": "Hálózati I/O", + "Deploy an application to start viewing metrics.": "A metrikák megtekintésének megkezdéséhez helyezzen üzembe egy alkalmazást.", + "Please select a deployment to view metrics": "Válasszon ki egy üzemelő példányt a metrikák megtekintéséhez", + "Project Status": "Projektállapot", + "Total Pods": "Podok összesen", + "Application Health": "Alkalmazás állapota", + "Loading metrics": "Metrikák betöltése", + "Resource Usage": "Erőforrás-használat", + "Avg Response Time": "Átlagos válaszidő", + "No response time data available": "Nem állnak rendelkezésre válaszidő-adatok", + "Absolute usage": "Abszolút használat", + "Network In": "Bejövő hálózati forgalom", + "Network Out": "Kimenő hálózati forgalom", + "Pod Details": "Pod részletei", + "Pod Name": "Pod neve", + "Restarts": "Újraindítások", + "No pods found for deployment \"{{name}}\"": "Nem találhatók podok a(z) {{name}} üzemelő példányhoz", + "Preview Features": "Előzetes funkciók", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "A még fejlesztés alatt álló funkciók engedélyezése vagy letiltása. Az előzetes funkciók a későbbi kiadásokban módosulhatnak vagy eltávolításra kerülhetnek.", + "GitHub Pipelines": "GitHub-folyamatok", + "Enable GitHub-based deployment pipelines for AKS projects.": "Engedélyezze a GitHub-alapú üzembe helyezési folyamatokat AKS-projektekhez.", + "Loading scaling metrics from Prometheus": "Skálázási metrikák betöltése a Prometheusból", + "Scaling Chart Unavailable": "A skálázási diagram nem érhető el", + "No scaling data available": "Nem állnak rendelkezésre skálázási adatok", + "Edit HPA Configuration": "HPA-konfiguráció szerkesztése", + "Edit Manual Scaling Configuration": "Manuális skálázási konfiguráció szerkesztése", + "Minimum Replicas": "Replikák minimális száma", + "Maximum Replicas": "Replikák maximális száma", + "Target CPU Utilization (%)": "Célzott CPU-kihasználtság (%)", + "Number of Replicas": "Replikák száma", + "Set the desired number of pod replicas for this deployment": "Állítsa be az üzemelő példány pod-replikáinak kívánt számát", + "Save": "Mentés", + "Scaling Mode": "Skálázási mód", + "Current Replicas": "Aktuális replikák", + "Desired Replicas": "Kívánt replikák", + "Configured Replicas": "Replikák konfigurálva", + "Replica Bounds": "Replika határai", + "Available Replicas": "Rendelkezésre álló replikák", + "CPU Usage / Target": "CPU-használat/cél", + "Scaling": "Skálázás", + "Select a deployment to view scaling metrics": "Válasszon ki egy üzemelő példányt a skálázási metrikák megtekintéséhez", + "Scaling Overview": "Skálázás áttekintése", + "Edit Configuration": "Konfiguráció szerkesztése", + "Scaling History (Last 24 Hours)": "Skálázási előzmények (elmúlt 24 óra)", + "Copied!": "Másolva!", + "Copy": "Másolás", + "Copy to clipboard": "Másolás a vágólapra", + "No deployments found": "Nem található üzemelő példány", + "Select Deployment": "Üzemelő példány kiválasztása", + "Loading deployments": "Üzemelő példányok betöltése", + "No cluster is associated with this project.": "Ehhez a projekthez nincs fürt társítva.", + "Please sign in to Azure to continue.": "A folytatáshoz jelentkezzen be az Azure-ba.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Hiányzik a szükséges Azure-környezet. Győződjön meg arról, hogy be van jelentkezve, és a fürt egy érvényes előfizetéshez, erőforráscsoporthoz és bérlőhöz van társítva.", + "Failed to load Azure context": "Nem sikerült betölteni az Azure-környezetet", + "just now": "éppen most", + "{{seconds}}s ago": "{{seconds}} másodperce", + "{{minutes}} min ago": "{{minutes}} perce", + "{{hours}}h ago": "{{hours}} órája", + "{{days}}d ago": "{{days}} napja", + "{{weeks}}w ago": "{{weeks}} hete" } diff --git a/plugins/aks-desktop/locales/id/translation.json b/plugins/aks-desktop/locales/id/translation.json index 33a1b261e..ec5dac187 100644 --- a/plugins/aks-desktop/locales/id/translation.json +++ b/plugins/aks-desktop/locales/id/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"Peran Pengguna Kluster AKS\" dicakup ke grup sumber daya", - "(already enabled)": "(sudah diaktifkan)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} kluster disembunyikan — tidak ada Azure Entra ID", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} kluster disembunyikan — tidak ada Azure Entra ID", - "{{count}} eligible cluster(s) found._one": "{{count}} kluster yang memenuhi syarat ditemukan.", - "{{count}} eligible cluster(s) found._other": "{{count}} kluster yang memenuhi syarat ditemukan.", - "{{count}} failed._one": "{{count}} gagal.", - "{{count}} failed._other": "{{count}} gagal.", - "{{count}} min_one": "{{count}} mnt", - "{{count}} min_other": "{{count}} mnt", - "{{count}} selected_one": "{{count}} dipilih", - "{{count}} selected_other": "{{count}} dipilih", - "{{days}}d ago": "{{days}}h yang lalu", - "{{hours}}h ago": "{{hours}}j yang lalu", - "{{minutes}} min ago": "{{minutes}} menit yang lalu", - "{{seconds}}s ago": "{{seconds}}dtk yang lalu", - "{{weeks}}w ago": "{{weeks}}mgg yang lalu", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Kluster harus dipilih", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Namespace baru akan dibuat di kluster yang menerapkan label proyek. Namespace akan langsung muncul dalam daftar proyek Anda.", - "Absolute usage": "Penggunaan absolut", - "Access": "Akses", - "Access Control ({{count}} assignee)_one": "Kontrol Akses ({{count}} penerima tugas)", - "Access Control ({{count}} assignee)_other": "Kontrol Akses ({{count}} penerima tugas)", - "Actions": "Tindakan", - "Add assignee": "Tambahkan penerima tugas", - "Add Cluster from Azure": "Tambahkan Kluster dari Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Tambahkan satu atau beberapa manifes Kubernetes. Unggah file untuk mengisi editor atau tempel/edit langsung di bawah ini.", - "Add variable": "Tambahkan variabel", - "Advanced": "Lanjutan", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Setelah penggabungan, agen Copilot akan menganalisis repositori Anda dan membuat PR penyebaran", - "Agent is working": "Agen sedang bekerja", + "Failed to load subscriptions": "Gagal memuat langganan", + "Failed to load AKS clusters": "Gagal memuat kluster AKS", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Kluster '{{cluster}}' berhasil digabungkan di kubeconfig", + "Failed to register cluster: {{message}}": "Gagal mendaftarkan kluster: {{message}}", + "Register AKS Cluster": "Daftarkan Kluster AKS", + "Checking authentication status": "Memeriksa status autentikasi", + "You need to be logged in to Azure to register AKS clusters.": "Anda harus masuk ke Azure untuk mendaftarkan kluster AKS.", + "Subscription": "Langganan", + "Select an Azure subscription": "Pilih langganan Azure", + "Loading subscriptions": "Memuat langganan", + "Loading AKS clusters": "Memuat kluster AKS", + "No AKS clusters found in this subscription.": "Tidak ada kluster AKS yang ditemukan dalam langganan ini.", "AKS Cluster": "Kluster AKS", - "AKS desktop logo": "Logo AKS desktop", - "AKS Managed": "Dikelola AKS", - "AKS Preview Extension installed successfully!": "Ekstensi Pratinjau AKS berhasil diinstal!", - "AKS Preview Extension Required": "Ekstensi Pratinjau AKS Diperlukan", - "AKS Project?": "Proyek AKS?", - "All selected addons have been enabled successfully.": "Semua add-on yang dipilih berhasil diaktifkan.", - "All verifications completed successfully!": "Semua verifikasi berhasil diselesaikan!", - "Allow all traffic": "Izinkan semua lalu lintas", - "Allow privilege escalation": "Izinkan eskalasi hak istimewa", - "Allow traffic within same namespace": "Izinkan lalu lintas dalam namespace layanan yang sama", - "Already AKS projects (will import directly):": "Sudah menjadi proyek AKS (akan langsung diimpor):", - "Also delete the namespaces (this will remove all resources within them)": "Hapus juga namespace (ini akan menghapus semua sumber daya di dalamnya)", - "Another project already exists with same name. Please choose a different name.": "Proyek lain sudah ada dengan nama yang sama. Pilih nama lain.", - "Application Health": "Kesehatan Aplikasi", - "Application Metrics": "Metrik Aplikasi", - "Application name": "Nama aplikasi", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Menerapkan {{applied}} sumber daya, tetapi {{failed}} gagal:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Berhasil menerapkan {{count}} sumber daya.", - "Applied {{count}} resource(s) successfully._other": "Berhasil menerapkan {{count}} sumber daya.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Yakin ingin menghapus proyek \"{{projectId}}\"?", - "Assign permissions to users who need access to your namespace": "Tetapkan izin kepada pengguna yang memerlukan akses ke namespace Anda", - "Assignee": "Penerima tugas", - "Assigning AKS Cluster User Role...": "Menetapkan Peran Pengguna Kluster AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Izinkan AKS Desktop membuat alur penyebaran di repositori Anda.", - "Auto-generated Deployment and Service manifests": "Manifes Layanan dan Penyebaran yang dibuat secara otomatis", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Menskalakan secara otomatis jumlah pod berdasarkan penggunaan CPU. HPA akan menambah pod saat penggunaan CPU melebihi target dan menguranginya saat penggunaan kurang dari target.", - "Available Replicas": "Replika yang Tersedia", - "Avg Response Time": "Rata-Rata Waktu Respons", - "Azure Account": "Akun Azure", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "Pilih kluster AKS", + "Selected Cluster Details": "Detail Kluster yang Dipilih", + "Name": "Nama", + "Resource Group": "Grup Sumber Daya", + "Location": "Lokasi", + "Kubernetes Version": "Versi Kubernetes", + "Done": "Selesai", + "Cancel": "Batal", + "Registering": "Mendaftarkan", + "Register Cluster": "Daftarkan Kluster", + "Initiating Azure login": "Memulai proses masuk Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Selesaikan autentikasi di browser Anda. Jendela ini akan otomatis dialihkan setelah proses masuk selesai.", + "Login successful! Redirecting": "Berhasil masuk! Mengalihkan", + "Login timeout. Please try again.": "Waktu masuk habis. Coba lagi.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Menunggu penyelesaian proses masuk... ({{minutes}} menit tersisa)", + "Failed to initiate login: {{message}}": "Gagal memulai proses masuk: {{message}}", "Azure Authentication": "Autentikasi Azure", - "Azure CLI/aks-preview requirements not met": "Persyaratan Azure CLI/aks-preview tidak terpenuhi", - "Azure Monitor Metrics (Managed Prometheus)": "Metrik Azure Monitor (Prometheus Terkelola)", + "Sign in with your Azure account to manage AKS clusters and resources": "Masuk dengan akun Azure Anda untuk mengelola kluster dan sumber daya AKS", + "Sign in with Azure": "Masuk dengan Azure", + "Loading Azure account information": "Memuat informasi akun Azure", "Back": "Kembali", - "Basics": "Dasar", - "branch": "Cabang", - "Bring your own Kubernetes manifests to deploy": "Gunakan manifes Kubernetes Anda sendiri untuk disebarkan", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Secara default, pemeriksaan menggunakan HTTP GET pada jalur akar dengan default yang masuk akal. Aktifkan ini untuk menyesuaikan pengaturan pemeriksaan.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Secara default, port layanan cocok dengan port target. Aktifkan ini untuk menggunakan port lain untuk layanan.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Secara default, tindakan ini akan menghapus namespace dan label proyek terkelola Azure dari namespace berikut:", - "Cancel": "Batal", - "Canceling will discard your pipeline progress. Are you sure?": "Membatalkan akan membuang kemajuan alur Anda. Yakin?", - "Cancelled deletion of project {{ projectId }}.": "Penghapusan proyek {{ projectId }} dibatalkan.", - "Checking authentication status": "Memeriksa status autentikasi", - "Checking for existing identity...": "Memeriksa identitas yang ada...", - "Checking if another project exists with same name": "Memeriksa apakah ada proyek lain dengan nama yang sama", - "Checking merge status...": "Memeriksa status penggabungan...", - "Checking repository readiness...": "Memeriksa kesiapan repositori...", - "Checking...": "Memeriksa...", - "Choose a source for your deployment (container image, repo, etc.).": "Pilih sumber untuk penyebaran Anda (citra kontainer, repo, dll.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Alur CI/CD untuk {{repoFullName}} sudah siap. Penyebaran pemicu dari tab Sebarkan.", - "Clear editor": "Bersihkan editor", - "Close": "Tutup", - "Cluster": "Kluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Kluster '{{cluster}}' berhasil digabungkan di kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Kluster {{clusterName}} harus didaftarkan sebelum mengimpor namespace reguler. Impor namespace terkelola dari kluster ini terlebih dahulu.", - "Cluster Configuration": "Konfigurasi Kluster", - "Cluster is being deleted. Cannot deploy to this cluster.": "Kluster sedang dihapus. Tidak dapat menyebarkan ke kluster ini.", + "Azure Account": "Akun Azure", + "Logged in as": "Masuk sebagai", + "Add Cluster from Azure": "Tambahkan Kluster dari Azure", + "Logging out": "Keluar", + "Log out": "Keluar", + "Azure CLI/aks-preview requirements not met": "Persyaratan Azure CLI/aks-preview tidak terpenuhi", + "Dismiss": "Tutup", + "Configure Pipeline": "Konfigurasikan Alur", + "Loading Azure context...": "Memuat konteks Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Akses baca saja ke sebagian besar objek dalam namespace. Tidak dapat melihat peran, pengikatan peran, atau Rahasia.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Akses baca/tulis ke sebagian besar objek dalam namespace. Tidak dapat melihat atau mengubah peran atau ikatan peran. Dapat mengakses Rahasia dan menjalankan Pod sebagai ServiceAccount apa pun di namespace.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Akses baca/tulis ke sebagian besar sumber daya dalam namespace. Dapat membuat peran dan ikatan peran dalam namespace. Tidak dapat menulis ke kuota sumber daya atau namespace itu sendiri.", + "Access": "Akses", + "Assign permissions to users who need access to your namespace": "Tetapkan izin kepada pengguna yang memerlukan akses ke namespace Anda", + "Assignee": "Penerima tugas", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Peran", + "Remove assignee": "Hapus penerima tugas", + "Add assignee": "Tambahkan penerima tugas", + "Only clusters with Azure Entra ID authentication are shown.": "Hanya kluster dengan autentikasi Azure Entra ID yang ditampilkan.", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} kluster disembunyikan — tidak ada Azure Entra ID", + "No eligible clusters found in this subscription.": "Tidak ditemukan kluster yang memenuhi syarat dalam langganan ini.", + "{{count}} eligible cluster(s) found._other": "{{count}} kluster yang memenuhi syarat ditemukan.", "Cluster is currently updating. Deployment may fail.": "Kluster sedang diperbarui. Penyebaran mungkin gagal.", - "Cluster is deallocated. Please start the cluster before deploying.": "Kluster dibatalkan alokasinya. Mulai kluster sebelum menyebarkan.", - "Cluster is in a failed state. Please check Azure portal.": "Kluster dalam status gagal. Periksa portal Azure.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Kluster sedang dihapus. Tidak dapat menyebarkan ke kluster ini.", "Cluster is still being created. Please wait until creation completes.": "Kluster masih sedang dibuat. Harap tunggu hingga pembuatan selesai.", + "Cluster is in a failed state. Please check Azure portal.": "Kluster dalam status gagal. Periksa portal Azure.", "Cluster is stopped. Please start the cluster before deploying.": "Kluster dihentikan. Mulai kluster sebelum menyebarkan.", + "Cluster is deallocated. Please start the cluster before deploying.": "Kluster dibatalkan alokasinya. Mulai kluster sebelum menyebarkan.", + "AKS Preview Extension Required": "Ekstensi Pratinjau AKS Diperlukan", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Ekstensi aks-preview diperlukan untuk membuat namespace terkelola. Instal untuk melanjutkan.", + "Installing": "Menginstal", + "Install Extension": "Instal Ekstensi", + "AKS Preview Extension installed successfully!": "Ekstensi Pratinjau AKS berhasil diinstal!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Fitur ManagedNamespacePreview harus terdaftar untuk membuat namespace terkelola.", + "Current state": "Status saat ini", + "Please register it to continue.": "Daftarkan untuk melanjutkan.", + "Register ManagedNamespacePreview Feature": "Daftarkan Fitur ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "Fitur ManagedNamespacePreview berhasil didaftarkan!", + "Project Name": "Nama Proyek", + "Checking if another project exists with same name": "Memeriksa apakah ada proyek lain dengan nama yang sama", + "Another project already exists with same name. Please choose a different name.": "Proyek lain sudah ada dengan nama yang sama. Pilih nama lain.", + "Project name is available": "Nama proyek tersedia", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Nama proyek hanya boleh berisi huruf kecil, angka, dan tanda hubung (tanpa spasi)", + "Project Description": "Deskripsi Proyek", + "Enter project description": "Masukkan deskripsi proyek", + "Select a subscription": "Pilih langganan", + "Search subscriptions": "Cari langganan", + "No subscriptions found": "Tidak menemukan langganan", + "Retry": "Coba lagi", + "Cluster": "Kluster", + "Please select a subscription first": "Pilih langganan terlebih dahulu", + "Loading clusters": "Memuat kluster", + "Select a cluster": "Pilih kluster", + "Search clusters": "Cari kluster", + "No clusters with Azure Entra ID authentication found for this subscription": "Tidak ada kluster dengan autentikasi Azure Entra ID yang ditemukan untuk langganan ini", "Cluster Not Ready": "Kluster Belum Siap", - "Collapse panel": "Ciutkan panel", - "Complete authorization on your browser screen": "Selesaikan otorisasi di layar browser Anda", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Selesaikan penginstalan di browser Anda. Aplikasi akan diperbarui secara otomatis setelah terinstal di {{repoName}}.", - "Compute Quota": "Kuota Komputasi", - "Configuration Complete": "Konfigurasi Selesai", - "Configuration Error": "Kesalahan Konfigurasi", + "Refreshing": "Melakukan refresh", + "Refresh": "Refresh", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Kluster yang dipilih hilang dari kubeconfig. Daftarkan sebelum melanjutkan.", + "Registering cluster": "Mendaftarkan kluster", + "Wizard steps": "Langkah wizard", + "Azure Monitor Metrics (Managed Prometheus)": "Metrik Azure Monitor (Prometheus Terkelola)", + "KEDA (Event-Driven Autoscaling)": "KEDA (Penskalaan Berbasis Kejadian)", + "VPA (Vertical Pod Autoscaler)": "VPA (Vertical Pod Autoscaler)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Konfigurasi memerlukan waktu lebih lama dari yang diharapkan. Periksa portal Azure untuk mengetahui status kluster Anda saat ini.", - "Configure": "Konfigurasi", - "Configure Cluster": "Konfigurasikan Kluster", - "Configure Container Deployment": "Konfigurasikan Penyebaran Kontainer", - "Configure container health probes.": "Konfigurasikan pemeriksaan kesehatan kontainer.", - "Configure Pipeline": "Konfigurasikan Alur", - "Configure security context settings for the container.": "Konfigurasikan pengaturan konteks keamanan untuk kontainer.", - "Configure Workload Identity": "Konfigurasikan Identitas Beban Kerja", - "Configured Replicas": "Replika yang Dikonfigurasi", + "Failed to enable addons": "Gagal mengaktifkan add-on", + "Failed to enable addon: {{error}}": "Gagal mengaktifkan addon: {{error}}", + "Cluster Configuration": "Konfigurasi Kluster", + "(already enabled)": "(sudah diaktifkan)", + "The following addons can be enabled on this cluster:": "Add-on berikut dapat diaktifkan di kluster ini:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Mesin kebijakan jaringan tidak dapat diubah setelah pembuatan kluster. Buat kluster baru dengan", + "for full network policy support.": "untuk dukungan kebijakan jaringan penuh.", + "Enabling these addons may incur additional Azure costs.": "Mengaktifkan add-on ini dapat dikenai biaya Azure tambahan.", + "Configuration Error": "Kesalahan Konfigurasi", + "Configuration Complete": "Konfigurasi Selesai", + "All selected addons have been enabled successfully.": "Semua add-on yang dipilih berhasil diaktifkan.", "Configuring cluster... This may take a few minutes.": "Mengonfigurasi kluster... Proses ini memerlukan waktu beberapa menit.", - "Configuring federated credential...": "Mengonfigurasi kredensial gabungan...", + "Enabling Addons...": "Mengaktifkan Add-on...", "Configuring...": "Mengonfigurasi...", - "Confirm & Import": "Konfirmasi dan Impor", - "Connect": "Sambungkan", - "Connect GitHub": "Sambungkan GitHub", - "Connect Source": "Sambungkan Sumber", - "Connect to GitHub": "Sambungkan ke GitHub", - "Connected": "Terhubung", - "Connected to '{{username}}'.": "Tersambung ke '{{username}}'.", - "Connecting to GitHub...": "Menyambungkan ke GitHub...", - "Connecting...": "Menyambungkan...", - "Container image": "Citra kontainer", - "Container Image": "Citra Kontainer", - "Contents": "Konten", - "Continue": "Lanjutkan", - "Controls whether a process can gain more privileges than its parent process.": "Mengontrol apakah proses dapat memperoleh lebih banyak hak istimewa daripada proses induknya.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Mengontrol apakah proses dapat memperoleh lebih banyak hak istimewa daripada proses induknya. Menonaktifkan opsi ini (disarankan) akan mencegah serangan eskalasi hak istimewa.", - "Convert Namespaces to AKS Projects": "Konversi Namespace ke Proyek AKS", - "Converting": "Mengonversi", - "Converting {{name}} to AKS project (this may take a moment)...": "Mengonversi {{name}} menjadi proyek AKS (proses ini mungkin perlu waktu beberapa saat)...", - "Copied!": "Disalin!", - "Copilot agent": "Agen Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "Agen Copilot meninjau repositori Anda dan membuat PR penyebaran", - "Copy": "Salin", - "Copy to clipboard": "Salin ke clipboard", - "CPU": "CPU", - "CPU limit": "Batas CPU", - "CPU Limits": "Batas CPU", - "CPU request": "Permintaan CPU", - "CPU Requests": "Permintaan CPU", + "Configure Cluster": "Konfigurasikan Kluster", + "Compute Quota": "Kuota Komputasi", + "Set quota limits to prevent overuse and maintain cluster stability": "Atur batas kuota untuk mencegah penggunaan berlebih dan menjaga stabilitas kluster", "CPU Resources": "Sumber Daya CPU", - "CPU Usage": "Penggunaan CPU", - "CPU Usage / Target": "Target/Penggunaan CPU", - "Create a new namespace on an existing cluster and set it up as a project": "Buat namespace baru di kluster yang sudah ada dan siapkan sebagai proyek", - "Create Application": "Buat Aplikasi", - "Create deployment PRs": "Buat PR penyebaran", - "Create Namespace": "Buat Namespace", - "Create New Namespace": "Buat Namespace Baru", - "Create Project": "Buat Proyek", - "Create Setup PR": "Buat PR Penyiapan", - "Create setup workflow in .github/workflows/": "Buat alur kerja penyiapan di .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Membuat LoadBalancer untuk mengekspos aplikasi ke internet.", - "Creating managed identity...": "Membuat identitas terkelola...", - "Creating namespace": "Membuat namespace", - "Creating Namespace": "Membuat Namespace", - "Creating Project": "Membuat Proyek", - "Creating setup PR...": "Membuat permintaan pull penyiapan...", - "Creating the trigger issue for the Copilot coding agent.": "Membuat masalah pemicu untuk agen pengkodean Copilot.", - "Current Replicas": "Replika Saat Ini", - "Current state": "Status saat ini", - "Degraded": "Diturunkan", + "CPU Requests": "Permintaan CPU", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Jaminan CPU minimum (1000m = 1 inti CPU)", + "CPU Limits": "Batas CPU", + "Maximum CPU allowed (1000m = 1 CPU core)": "CPU maksimum yang diizinkan (1000m = 1 inti CPU)", + "Memory Resources": "Sumber Daya Memori", + "Memory Requests": "Permintaan Memori", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memori minimum dijamin (1024 MiB = 1 GiB)", + "Memory Limits": "Batas Memori", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Memori maksimum yang diizinkan (1024 MiB = 1 GiB)", + "Basics": "Dasar", + "Networking Policies": "Kebijakan Jaringan", + "Review": "Tinjauan", + "New Project": "Proyek Baru", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Menyiapkan dan mengonfigurasi proyek baru di Azure Kubernetes Service (AKS)", + "Creating Project": "Membuat Proyek", + "Create Project": "Buat Proyek", + "Loading": "Memuat", + "Next": "Berikutnya", + "Project Created Successfully!": "Proyek Berhasil Dibuat!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Proyek AKS Anda \"{{projectName}}\" telah dibuat dan siap digunakan.", + "Application name": "Nama aplikasi", + "Enter application name": "Masukkan nama aplikasi", + "Enter a name for your first application to get started with deployment.": "Masukkan nama untuk aplikasi pertama Anda untuk memulai penyebaran.", + "Create Application": "Buat Aplikasi", + "Project Creation Failed": "Pembuatan Proyek Gagal", + "Set security, communication and access rules for incoming and outgoing traffic": "Atur aturan keamanan, komunikasi, dan akses untuk lalu lintas masuk dan keluar", + "Allow traffic within same namespace": "Izinkan lalu lintas dalam namespace layanan yang sama", + "Allow all traffic": "Izinkan semua lalu lintas", + "Deny all traffic": "Tolak semua lalu lintas", + "Review Project Configuration": "Tinjau Konfigurasi Proyek", + "Please review all the settings before creating your AKS project": "Harap tinjau semua pengaturan sebelum membuat proyek AKS Anda", + "Project Basics": "Dasar Proyek", + "Description": "Deskripsi", + "No description provided": "Tidak ada deskripsi yang diberikan", + "Ingress Policy": "Kebijakan Ingress", + "Egress Policy": "Kebijakan Egress", + "CPU": "CPU", + "Requests": "Permintaan", + "Limits": "Batas", + "Memory": "Memori", + "Access Control ({{count}} assignee)_other": "Kontrol Akses ({{count}} penerima tugas)", + "Not specified": "Tidak ditentukan", + "Select an option": "Pilih salah satu opsi", + "No options": "Tidak ada opsi", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Memulai pembuatan proyek", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Waktu pembuatan proyek habis setelah 10 menit. Periksa apakah namespace dibuat dan coba lagi.", + "Initiating managed namespace creation": "Memulai pembuatan namespace terkelola", + "Namespace creation failed: {{message}}": "Pembuatan namespace gagal: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Pembuatan namespace dimulai! Memantau status pembuatan", + "Waiting for namespace to propagate": "Menunggu namespace disebarkan", + "Namespace status check failed: {{message}}": "Pemeriksaan status namespace gagal: {{message}}", + "Waiting for namespace to be created": "Menunggu namespace dibuat", + "Namespace status verification failed: {{message}}": "Verifikasi status namespace gagal: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "API pembuatan namespace berhasil, melanjutkan penetapan pengguna", + "Namespace creation completed successfully! Adding user access": "Pembuatan namespace berhasil diselesaikan! Menambahkan akses pengguna", + "User assignment completed with errors": "Penetapan pengguna selesai dengan kesalahan", + "Project creation completed successfully!": "Pembuatan proyek berhasil diselesaikan!", + "Performing final status verification": "Melakukan verifikasi status akhir", + "Final status check failed: {{message}}": "Pemeriksaan status akhir gagal: {{message}}", + "Final status verification failed: {{message}}": "Verifikasi status akhir gagal: {{message}}", + "All verifications completed successfully!": "Semua verifikasi berhasil diselesaikan!", + "Failed to create project": "Gagal membuat proyek", + "A cluster must be selected": "Kluster harus dipilih", + "Namespace name is required": "Nama namespace wajib diisi", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Nama namespace hanya boleh berisi huruf kecil, angka, dan tanda hubung, serta harus diawali dan diakhiri dengan karakter alfanumerik", + "Namespace name must be 63 characters or fewer": "Nama namespace harus berisi 63 karakter atau kurang", + "Creating namespace": "Membuat namespace", + "Updating local settings": "Memperbarui pengaturan lokal", + "Namespace created successfully!": "Namespace berhasil dibuat!", + "Failed to create namespace": "Gagal membuat namespace", + "No clusters found. Register a cluster first.": "Tidak ditemukan kluster. Daftarkan kluster terlebih dahulu.", + "Namespace Name": "Nama namespace", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Hanya boleh berisi huruf kecil, angka, dan tanda hubung, serta harus diawali dan diakhiri dengan karakter alfanumerik", + "The namespace will be created on the selected cluster and set up as a project": "Namespace akan dibuat pada kluster yang dipilih dan disiapkan sebagai proyek", + "Type": "Jenis", + "Regular Kubernetes namespace": "Namespace Kubernetes reguler", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Namespace baru akan dibuat di kluster yang menerapkan label proyek. Namespace akan langsung muncul dalam daftar proyek Anda.", + "Create New Namespace": "Buat Namespace Baru", + "Create a new namespace on an existing cluster and set it up as a project": "Buat namespace baru di kluster yang sudah ada dan siapkan sebagai proyek", + "Creating Namespace": "Membuat Namespace", + "Namespace Creation Failed": "Pembuatan Namespace Gagal", + "Namespace Created Successfully!": "Namespace Berhasil Dibuat!", + "Your project \"{{projectName}}\" is ready to use.": "Proyek \"{{projectName}}\" Anda siap digunakan.", + "Go To Projects": "Buka Proyek", + "Create Namespace": "Buat Namespace", "Delete project": "Hapus proyek", "Delete Project": "Hapus Proyek", + "Are you sure you want to delete project \"{{projectId}}\"?": "Yakin ingin menghapus proyek \"{{projectId}}\"?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Secara default, tindakan ini akan menghapus namespace dan label proyek terkelola Azure dari namespace berikut:", + "Also delete the namespaces (this will remove all resources within them)": "Hapus juga namespace (ini akan menghapus semua sumber daya di dalamnya)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Peringatan: Tindakan ini tidak dapat dibatalkan. Semua sumber daya dalam namespace ini akan dihapus secara permanen.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Catatan: Untuk namespace terkelola AKS, manajemen Azure ARM akan dihapus secara otomatis.", "Delete Project & Namespaces": "Hapus Project dan Namespace", - "Deleted project {{ projectId }}.": "Proyek {{ projectId }} dihapus.", "Deleting project {{ projectId }}…": "Menghapus proyek {{ projectId }}…", - "Deny all traffic": "Tolak semua lalu lintas", - "Deploy": "Sebarkan", - "Deploy {{repo}}": "Sebarkan {{repo}}", - "Deploy an application to start viewing metrics.": "Sebarkan aplikasi untuk mulai melihat metrik.", - "Deploy an application to view logs.": "Sebarkan aplikasi untuk melihat log.", + "Cancelled deletion of project {{ projectId }}.": "Penghapusan proyek {{ projectId }} dibatalkan.", + "Deleted project {{ projectId }}.": "Proyek {{ projectId }} dihapus.", + "Error deleting project {{ projectId }}.": "Terjadi kesalahan saat menghapus proyek {{ projectId }}.", "Deploy Application": "Sebarkan Aplikasi", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Sebarkan dari Azure Container Registry, Docker Hub, atau GHCR", + "Failed to load pipeline runs": "Gagal memuat eksekusi alur", + "Pipeline": "Alur", + "Set up your pipeline": "Siapkan alur Anda", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Siapkan alur CI/CD untuk mengotomatiskan penyebaran dan menyederhanakan alur kerja Anda", + "Waiting for browser authorization...": "Menunggu otorisasi browser...", + "Sign in to GitHub to view pipeline runs.": "Masuk ke GitHub untuk melihat eksekusi alur.", + "Connecting...": "Menyambungkan...", + "No pipeline runs yet.": "Belum ada eksekusi alur.", + "View on GitHub": "Tampilkan di GitHub", + "View run on GitHub": "Lihat eksekusi di GitHub", + "Healthy": "Sehat", + "Scaled down": "Skala telah diturunkan", + "Degraded": "Diturunkan", + "VS Code": "Visual Studio Code", + "Manual": "Manual", + "Manual Deploy": "Sebarkan Manual", + "Deploy {{repo}}": "Sebarkan {{repo}}", "Deploy via Pipeline": "Sebarkan melalui Alur", - "Deploying": "Menyebarkan", + "No deployments found in this namespace.": "Tidak ditemukan penyebaran di namespace ini.", "Deployment": "Penyebaran", - "Deployment PR": "PR Penyebaran", - "Deployment PR Ready": "Permintaan Pull Penyebaran Siap", - "Deployment PR reviewed and merged": "PR Penyebaran ditinjau dan digabungkan", - "Deployment source": "Sumber penyebaran", - "Description": "Deskripsi", - "Deselect All": "Batalkan Semua Pilihan", - "Desired Replicas": "Replika yang Diinginkan", - "Discard": "Buang", - "Dismiss": "Tutup", - "Distributes pods evenly across nodes to improve workload distribution.": "Mendistribusikan pod secara merata di seluruh node untuk meningkatkan distribusi beban kerja.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Mendistribusikan pod secara merata ke seluruh node, zona, atau domain topologi lainnya untuk meningkatkan distribusi dan ketersediaan beban kerja.", - "Done": "Selesai", - "Edit Configuration": "Edit Konfigurasi", + "Source": "Sumber", + "Replicas": "Replika", + "Ready": "Siap", + "Status": "Status", + "Actions": "Tindakan", "Edit deployment": "Edit penyebaran", - "Edit HPA Configuration": "Edit Konfigurasi HPA", - "Edit Manual Scaling Configuration": "Edit Konfigurasi Penskalaan Manual", - "Egress Policy": "Kebijakan Egress", + "View workflow run": "Tampilkan eksekusi alur kerja", + "Re-deploy": "Sebarkan ulang", + "Failed to trigger deployment": "Gagal memicu penyebaran", + "Trigger": "Pemicu", + "workflow on": "alur kerja aktif", + "with the following parameters:": "dengan parameter berikut:", + "Namespace": "Namespace", + "Sign in": "Masuk", + "GitHub authentication required to trigger deployment.": "Autentikasi GitHub diperlukan untuk memicu penyebaran.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Pengiriman alur kerja berhasil dipicu. Periksa kemajuan di GitHub Actions.", + "Close": "Tutup", + "Triggering...": "Memicu...", + "Deploy": "Sebarkan", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Aktifkan Alur GitHub di Pengaturan → Fitur Pratinjau untuk menggunakan penyebaran alur.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Aktifkan alur penyebaran berbasis GitHub untuk proyek AKS.", - "Enable Horizontal Pod Autoscaler": "Aktifkan Horizontal Pod Autoscaler", - "Enable liveness probe": "Aktifkan pemeriksaan keaktifan", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Aktifkan atau nonaktifkan fitur yang masih dalam tahap pengembangan. Fitur pratinjau mungkin berubah atau dihapus dalam rilis mendatang.", - "Enable pod anti-affinity": "Aktifkan anti-afinitas pod", - "Enable public access": "Aktifkan akses publik", - "Enable readiness probe": "Aktifkan pemeriksaan kesiapan", - "Enable resource requests and limits": "Aktifkan permintaan dan batas sumber daya", - "Enable startup probe": "Aktifkan pemeriksaan pengaktifan", - "Enable topology spread constraints": "Aktifkan batasan penyebaran topologi", - "Enabling Addons...": "Mengaktifkan Add-on...", - "Enabling these addons may incur additional Azure costs.": "Mengaktifkan add-on ini dapat dikenai biaya Azure tambahan.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Pastikan min ≤ replika maksimum dan CPU target antara 10% dan 95%.", + "Workloads": "Beban kerja", + "No clusters in this project.": "Tidak ada kluster dalam proyek ini.", + "Failed to fetch deployments": "Gagal mengambil penyebaran", + "Failed to fetch cluster status": "Gagal mengambil status kluster", + "Configure security context settings for the container.": "Konfigurasikan pengaturan konteks keamanan untuk kontainer.", + "Run as non root user": "Jalankan sebagai pengguna non-akar", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Memastikan kontainer berjalan sebagai pengguna non-akar (UID != 0) untuk keamanan yang lebih baik. Hal ini mencegah serangan eskalasi hak istimewa.", "Ensures the container runs as a non-root user for better security.": "Memastikan kontainer berjalan sebagai pengguna non-akar untuk keamanan yang lebih baik.", - "Ensuring resource group exists...": "Memastikan grup sumber daya sudah ada...", - "Enter a name for your first application to get started with deployment.": "Masukkan nama untuk aplikasi pertama Anda untuk memulai penyebaran.", - "Enter application name": "Masukkan nama aplikasi", - "Enter project description": "Masukkan deskripsi proyek", - "Environment Variables": "Variabel Lingkungan", - "Error deleting project {{ projectId }}.": "Terjadi kesalahan saat menghapus proyek {{ projectId }}.", - "Error Rate": "Tingkat Kesalahan", - "Failed to apply": "Gagal menerapkan", - "Failed to apply resources.": "Gagal menerapkan sumber daya.", - "Failed to convert namespace: {{message}}": "Gagal mengonversi namespace: {{message}}", - "Failed to create namespace": "Gagal membuat namespace", - "Failed to create project": "Gagal membuat proyek", - "Failed to enable addon: {{error}}": "Gagal mengaktifkan addon: {{error}}", - "Failed to enable addons": "Gagal mengaktifkan add-on", - "Failed to fetch cluster status": "Gagal mengambil status kluster", - "Failed to fetch deployment status": "Gagal mengambil status penyebaran", - "Failed to fetch deployments": "Gagal mengambil penyebaran", - "Failed to fetch managed namespace details": "Gagal mengambil detail namespace terkelola", - "Failed to fetch managed namespaces": "Gagal mengambil namespace terkelola", - "Failed to fetch pod status": "Gagal mengambil status pod", - "Failed to fetch service status": "Gagal mengambil status layanan", - "Failed to import any projects. See details below.": "Gagal mengimpor proyek apa pun. Lihat detail di bawah ini.", - "Failed to initiate login: {{message}}": "Gagal memulai proses masuk: {{message}}", - "Failed to load AKS clusters": "Gagal memuat kluster AKS", - "Failed to load Azure context": "Gagal memuat konteks Azure", - "Failed to load pipeline runs": "Gagal memuat eksekusi alur", - "Failed to load repositories": "Gagal memuat repositori", - "Failed to load subscriptions": "Gagal memuat langganan", - "Failed to merge cluster: {{message}}": "Gagal menggabungkan kluster: {{message}}", - "Failed to monitor deployment health": "Gagal memantau kesehatan penyebaran", - "Failed to register cluster: {{message}}": "Gagal mendaftarkan kluster: {{message}}", - "Failed to trigger deployment": "Gagal memicu penyebaran", - "Failed to update managed namespace": "Gagal memperbarui namespace terkelola", - "failureThreshold": "failureThreshold", - "Features": "Fitur", - "Federated Credential": "Kredensial Gabungan", - "Filter repositories": "Filter repositori", - "Final status check failed: {{message}}": "Pemeriksaan status akhir gagal: {{message}}", - "Final status verification failed: {{message}}": "Verifikasi status akhir gagal: {{message}}", - "for full network policy support.": "untuk dukungan kebijakan jaringan penuh.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifes Kubernetes yang dihasilkan (namespace: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Autentikasi GitHub diperlukan untuk memicu penyebaran.", - "GitHub Pipelines": "Alur GitHub", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Buka Proyek", - "Guided configuration for ports, replicas, env, and resources": "Konfigurasi terpandu untuk port, replika, lingkungan, dan sumber daya", + "Read only root filesystem": "Sistem file akar baca saja", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Memasang sistem file akar kontainer sebagai baca-saja untuk mencegah operasi tulis. Tindakan ini meningkatkan keamanan dengan tidak mengizinkan kode berbahaya mengubah file sistem.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Memasang sistem file akar kontainer sebagai baca-saja untuk mencegah operasi tulis.", + "Allow privilege escalation": "Izinkan eskalasi hak istimewa", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Mengontrol apakah proses dapat memperoleh lebih banyak hak istimewa daripada proses induknya. Menonaktifkan opsi ini (disarankan) akan mencegah serangan eskalasi hak istimewa.", + "Controls whether a process can gain more privileges than its parent process.": "Mengontrol apakah proses dapat memperoleh lebih banyak hak istimewa daripada proses induknya.", + "Enable pod anti-affinity": "Aktifkan anti-afinitas pod", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Pilih penjadwalan pod pada node yang berbeda untuk meningkatkan ketersediaan dan toleransi kesalahan. Hal ini membantu memastikan pod didistribusikan ke seluruh kluster.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Pilih penjadwalan pod pada node yang berbeda untuk meningkatkan ketersediaan dan toleransi kesalahan.", + "Enable topology spread constraints": "Aktifkan batasan penyebaran topologi", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Mendistribusikan pod secara merata ke seluruh node, zona, atau domain topologi lainnya untuk meningkatkan distribusi dan ketersediaan beban kerja.", + "Distributes pods evenly across nodes to improve workload distribution.": "Mendistribusikan pod secara merata di seluruh node untuk meningkatkan distribusi beban kerja.", + "Container image": "Citra kontainer", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Jumlah replika pod yang akan dijalankan. Makin banyak replika, makin tinggi ketersediaan dan distribusi muatannya.", + "Continue": "Lanjutkan", + "Configure Container Deployment": "Konfigurasikan Penyebaran Kontainer", + "Networking": "Jejaring", "Healthchecks": "Pemeriksaan kesehatan", - "Healthy": "Sehat", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Seberapa sering (dalam detik) untuk melakukan pemeriksaan keaktifan. Nilai default 10 detik.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Seberapa sering (dalam detik) untuk melakukan pemeriksaan kesiapan. Nilai default 10 detik.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Seberapa sering (dalam detik) untuk melakukan pemeriksaan pengaktifan. Nilai default 10 detik.", - "HPA scales pods based on CPU utilization.": "HPA menskalakan pod berdasarkan penggunaan CPU.", - "Identity Resource Group": "Grup Sumber Daya Identitas", - "Import AKS Projects": "Impor Proyek AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Impor namespace terkelola dan namespace reguler yang ada sebagai proyek. Namespace yang belum menjadi proyek AKS Desktop akan dikonversi dengan menambahkan label proyek yang diperlukan.", - "Import Selected Projects": "Impor Proyek yang Dipilih", - "Importing": "Mengimpor", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Mengimpor {{current}} dari {{total}}: {{name}} dari {{clusterName}}", - "in resource group": "di grup sumber daya", + "Resource Limits": "Batas Sumber Daya", + "Environment Variables": "Variabel Lingkungan", + "Workload Identity": "", + "Advanced": "Lanjutan", "Information about {{label}}": "Informasi tentang {{label}}", - "Information about CPU limit": "Informasi tentang batas CPU", - "Information about CPU request": "Informasi tentang permintaan CPU", - "Information about memory limit": "Informasi tentang batas memori", - "Information about memory request": "Informasi tentang permintaan memori", - "Information about target CPU utilization": "Informasi tentang penggunaan CPU target", - "Ingress Policy": "Kebijakan Ingress", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Memulai...", - "Initiating Azure login": "Memulai proses masuk Azure", - "Initiating managed namespace creation": "Memulai pembuatan namespace terkelola", - "Install Extension": "Instal Ekstensi", - "Install GitHub App": "Instal Aplikasi GitHub", - "Installing": "Menginstal", - "Internal only": "Hanya internal", - "Invalid YAML": "YAML yang Tidak Valid", - "Invalid YAML: List item missing required field (kind)": "YAML tidak valid: Item daftar tidak memiliki bidang yang diperlukan (jenis)", - "Invalid YAML: List item missing required field (metadata.name)": "YAML tidak valid: Item daftar tidak memiliki bidang yang diperlukan (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "YAML tidak valid: Sumber daya daftar harus memiliki bidang array \"items\"", - "Invalid YAML: missing required field (kind)": "YAML tidak valid: tidak memiliki bidang yang diperlukan (jenis)", - "Invalid YAML: missing required field (metadata.name)": "YAML yang Tidak Valid: bidang yang diperlukan tidak ada (metadata.name)", - "Issue {{number}}": "Masalah {{number}}", - "Issues": "Masalah", - "just now": "baru saja", - "KEDA (Event-Driven Autoscaling)": "KEDA (Penskalaan Berbasis Kejadian)", - "Keep Going": "Lanjutkan", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Tambahkan satu atau beberapa manifes Kubernetes. Unggah file untuk mengisi editor atau tempel/edit langsung di bawah ini.", + "Upload files": "Unggah file", + "Clear editor": "Bersihkan editor", + "Review & Deploy": "Tinjau dan Sebarkan", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifes Kubernetes yang dihasilkan (namespace: {{namespace}})", + "Resources to be deployed ({{count}} object)_other": "Sumber daya yang akan disebarkan ({{count}} objek)", + "namespace: {{namespace}}": "namespace: {{namespace}}", + "Configure": "Konfigurasi", + "Deploying": "Menyebarkan", "Key": "Kunci", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes memulai ulang kontainer jika pemeriksaan ini gagal berulang kali.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Nilai", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "hapus", + "Add variable": "Tambahkan variabel", + "Configure container health probes.": "Konfigurasikan pemeriksaan kesehatan kontainer.", + "Manually configure settings": "Konfigurasi pengaturan secara manual", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Secara default, pemeriksaan menggunakan HTTP GET pada jalur akar dengan default yang masuk akal. Aktifkan ini untuk menyesuaikan pengaturan pemeriksaan.", + "Enable liveness probe": "Aktifkan pemeriksaan keaktifan", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes memulai ulang kontainer jika pemeriksaan ini gagal berulang kali. Digunakan untuk mendeteksi dan memulihkan dari kendala atau kontainer yang tidak responsif.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes untuk sementara menonaktifkan keaktifan/kesiapan hingga proses mulai berhasil.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes untuk sementara menonaktifkan keaktifan/kesiapan hingga proses mulai berhasil. Berguna untuk kontainer yang memerlukan waktu lama untuk memulai.", - "Kubernetes Version": "Versi Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes tidak akan mengirim lalu lintas ke pod sampai pemeriksaan ini berhasil.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes tidak akan mengirim lalu lintas ke pod sampai pemeriksaan ini berhasil. Digunakan untuk menunjukkan kapan kontainer siap menerima lalu lintas.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "kurang dari satu menit", - "Limits": "Batas", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes memulai ulang kontainer jika pemeriksaan ini gagal berulang kali.", "Liveness path": "Jalur keaktifan", - "Loading": "Memuat", - "Loading AKS clusters": "Memuat kluster AKS", - "Loading Azure account information": "Memuat informasi akun Azure", - "Loading Azure context...": "Memuat konteks Azure...", - "Loading clusters": "Memuat kluster", - "Loading configuration...": "Memuat konfigurasi...", - "Loading deployments": "Memuat penyebaran", - "Loading metrics": "Memuat metrik", - "Loading scaling metrics from Prometheus": "Memuat metrik penskalaan dari Prometheus", - "Loading subscriptions": "Memuat langganan", - "Loading...": "Memuat...", - "Location": "Lokasi", - "Log out": "Keluar", - "Logged in as": "Masuk sebagai", - "Logging out": "Keluar", - "Login successful! Redirecting": "Berhasil masuk! Mengalihkan", - "Login timeout. Please try again.": "Waktu masuk habis. Coba lagi.", - "Managed Identity": "Identitas Terkelola", - "managed namespaces only": "namespace terkelola saja", - "ManagedNamespacePreview feature registered successfully!": "Fitur ManagedNamespacePreview berhasil didaftarkan!", - "Manual": "Manual", - "Manual Deploy": "Sebarkan Manual", - "Manually configure settings": "Konfigurasi pengaturan secara manual", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Jalur HTTP untuk memeriksa keaktifan (misalnya, /healthz). Pemeriksaan melakukan permintaan HTTP GET ke jalur ini.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Jumlah detik setelah kontainer dimulai sebelum probe keaktifan dimulai.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Seberapa sering (dalam detik) untuk melakukan pemeriksaan keaktifan. Nilai default 10 detik.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Jumlah detik setelah waktu pemeriksaan berakhir. Nilai default 1 detik.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Saat pemeriksaan gagal, Kubernetes akan mencoba lagi berulang kali sebelum berhenti dan memulai ulang kontainer.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Keberhasilan minimum berturut-turut untuk pemeriksaan yang dianggap berhasil setelah gagal. Nilai default 1.", + "Enable readiness probe": "Aktifkan pemeriksaan kesiapan", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes tidak akan mengirim lalu lintas ke pod sampai pemeriksaan ini berhasil. Digunakan untuk menunjukkan kapan kontainer siap menerima lalu lintas.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes tidak akan mengirim lalu lintas ke pod sampai pemeriksaan ini berhasil.", + "Readiness path": "Jalur kesiapan", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Jalur HTTP untuk memeriksa kesiapan (misalnya, /ready). Pemeriksaan melakukan permintaan HTTP GET ke jalur ini.", + "Number of seconds after the container has started before readiness probes are initiated.": "Jumlah detik setelah kontainer dimulai sebelum pemeriksaan kesiapan dimulai.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Seberapa sering (dalam detik) untuk melakukan pemeriksaan kesiapan. Nilai default 10 detik.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Saat pemeriksaan gagal, Kubernetes akan mencoba lagi berulang kali sebelum menandai pod sebagai tidak siap.", + "Enable startup probe": "Aktifkan pemeriksaan pengaktifan", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes untuk sementara menonaktifkan keaktifan/kesiapan hingga proses mulai berhasil. Berguna untuk kontainer yang memerlukan waktu lama untuk memulai.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes untuk sementara menonaktifkan keaktifan/kesiapan hingga proses mulai berhasil.", + "Startup path": "Jalur pengaktifan", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Jalur HTTP untuk memeriksa pengaktifan (misalnya, /startup). Pemeriksaan melakukan permintaan HTTP GET ke jalur ini.", + "Number of seconds after the container has started before startup probes are initiated.": "Jumlah detik setelah kontainer dimulai sebelum pemeriksaan pengaktifan dimulai.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Seberapa sering (dalam detik) untuk melakukan pemeriksaan pengaktifan. Nilai default 10 detik.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Saat pemeriksaan gagal, Kubernetes akan mencoba lagi berulang kali sebelum berhenti. Untuk pemeriksaan pengaktifan, tindakan ini menentukan periode tunggu sebelum memulai ulang.", + "Enable Horizontal Pod Autoscaler": "Aktifkan Horizontal Pod Autoscaler", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Menskalakan secara otomatis jumlah pod berdasarkan penggunaan CPU. HPA akan menambah pod saat penggunaan CPU melebihi target dan menguranginya saat penggunaan kurang dari target.", + "HPA scales pods based on CPU utilization.": "HPA menskalakan pod berdasarkan penggunaan CPU.", + "Min replicas": "Replika minimum", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Jumlah replika pod minimum yang akan dikelola HPA, bahkan ketika penggunaan CPU rendah.", "Max replicas": "Replika maksimum", - "Maximum CPU allowed (1000m = 1 CPU core)": "CPU maksimum yang diizinkan (1000m = 1 inti CPU)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Memori maksimum yang diizinkan (1024 MiB = 1 GiB)", - "Maximum Replicas": "Replika Maksimum", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Jumlah maksimum replika pod yang dapat diskalakan HPA saat penggunaan CPU tinggi.", + "Target CPU utilization": "Pemanfaatan CPU target", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Persentase pemanfaatan CPU rata-rata target di semua pod. HPA akan meningkatkan kapasitas ketika penggunaan CPU melebihi nilai ini dan menurunkan kapasitas ketika berada di bawah nilai ini.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Pastikan min ≤ replika maksimum dan CPU target antara 10% dan 95%.", + "Target port": "Port target", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Nomor port yang didengarkan kontainer Anda. Ini port di dalam kontainer tempat aplikasi Anda berjalan.", + "Service port": "Port layanan", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Nomor port yang diperlihatkan oleh layanan Kubernetes. Lalu lintas ke port ini diteruskan ke port target.", + "Use custom service port": "Gunakan port layanan kustom", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Secara default, port layanan cocok dengan port target. Aktifkan ini untuk menggunakan port lain untuk layanan.", + "Service type": "Tipe layanan", + "Internal only": "Hanya internal", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Gunakan ClusterIP. Terbaik untuk layanan yang hanya dapat dijangkau dalam kluster.", + "Enable public access": "Aktifkan akses publik", + "Creates a LoadBalancer to expose the application to the internet.": "Membuat LoadBalancer untuk mengekspos aplikasi ke internet.", + "Enable resource requests and limits": "Aktifkan permintaan dan batas sumber daya", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Atur permintaan CPU dan memori (sumber daya terjamin) dan batasan (sumber daya maksimum) untuk mengontrol alokasi sumber daya dan mencegah kontainer mengonsumsi sumber daya kluster secara berlebihan.", + "CPU request": "Permintaan CPU", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Jumlah minimum CPU yang dijamin untuk kontainer. Kubernetes akan menjadwalkan pod pada node yang memiliki setidaknya jumlah CPU yang tersedia.", + "millicores": "millicores", + "CPU limit": "Batas CPU", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Jumlah maksimum CPU yang dapat digunakan kontainer. Jika terlampaui, kontainer akan dibatasi.", + "Memory request": "Permintaan memori", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Jumlah minimum memori yang dijamin untuk kontainer. Kubernetes akan menjadwalkan pod pada node yang memiliki setidaknya jumlah memori ini.", "mebibytes": "mebibytes", - "Memory": "Memori", "Memory limit": "Batas memori", - "Memory Limits": "Batas Memori", - "Memory request": "Permintaan memori", - "Memory Requests": "Permintaan Memori", - "Memory Resources": "Sumber Daya Memori", - "Memory Usage": "Pemakaian Memori", - "Memory utilization": "Pemanfaatan memori", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Menggabungkan kluster {{clusterName}} ({{count}} namespace)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Menggabungkan kluster {{clusterName}} ({{count}} namespace)", - "Metrics": "Metrik", - "Metrics refreshed every 30 seconds": "Metrik di-refresh setiap 30 detik", - "Metrics Unavailable": "Metrik Tidak Tersedia", - "millicores": "millicores", - "Min replicas": "Replika minimum", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Keberhasilan minimum berturut-turut untuk pemeriksaan yang dianggap berhasil setelah gagal. Nilai default 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Jaminan CPU minimum (1000m = 1 inti CPU)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memori minimum dijamin (1024 MiB = 1 GiB)", - "Minimum Replicas": "Replika Minimum", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Konteks Azure yang diperlukan tidak ada. Pastikan Anda masuk dan kluster terkait dengan langganan, grup sumber daya, dan penyewa yang valid.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Memasang sistem file akar kontainer sebagai baca-saja untuk mencegah operasi tulis.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Memasang sistem file akar kontainer sebagai baca-saja untuk mencegah operasi tulis. Tindakan ini meningkatkan keamanan dengan tidak mengizinkan kode berbahaya mengubah file sistem.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Dukungan multi-file (Penyebaran, Layanan, Ingress, dll.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Hanya boleh berisi huruf kecil, angka, dan tanda hubung, serta harus diawali dan diakhiri dengan karakter alfanumerik", - "Name": "Nama", - "Namespace": "Namespace", - "Namespace '{{name}}' converted and imported as project": "Namespace '{{name}}' dikonversi dan diimpor sebagai proyek", - "Namespace created successfully!": "Namespace berhasil dibuat!", - "Namespace Created Successfully!": "Namespace Berhasil Dibuat!", - "Namespace creation API succeeded, proceeding with user assignments": "API pembuatan namespace berhasil, melanjutkan penetapan pengguna", - "Namespace creation completed successfully! Adding user access": "Pembuatan namespace berhasil diselesaikan! Menambahkan akses pengguna", - "Namespace Creation Failed": "Pembuatan Namespace Gagal", - "Namespace creation failed: {{message}}": "Pembuatan namespace gagal: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Pembuatan namespace dimulai! Memantau status pembuatan", - "Namespace Name": "Nama namespace", - "Namespace name is required": "Nama namespace wajib diisi", - "Namespace name must be 63 characters or fewer": "Nama namespace harus berisi 63 karakter atau kurang", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Nama namespace hanya boleh berisi huruf kecil, angka, dan tanda hubung, serta harus diawali dan diakhiri dengan karakter alfanumerik", - "Namespace status check failed: {{message}}": "Pemeriksaan status namespace gagal: {{message}}", - "Namespace status verification failed: {{message}}": "Verifikasi status namespace gagal: {{message}}", - "namespace: {{namespace}}": "namespace: {{namespace}}", - "Namespaces to convert:": "Namespace yang akan dikonversi:", - "Network I/O": "I/O Jaringan", - "Network In": "Jaringan Masuk", - "Network Out": "Jaringan Keluar", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Mesin kebijakan jaringan tidak dapat diubah setelah pembuatan kluster. Buat kluster baru dengan", - "Networking": "Jejaring", - "Networking Policies": "Kebijakan Jaringan", - "New Project": "Proyek Baru", - "Next": "Berikutnya", - "No": "Tidak", - "No AKS clusters found in this subscription.": "Tidak ada kluster AKS yang ditemukan dalam langganan ini.", - "No cluster is associated with this project.": "Tidak ada kluster yang terkait dengan proyek ini.", - "No clusters found. Register a cluster first.": "Tidak ditemukan kluster. Daftarkan kluster terlebih dahulu.", - "No clusters in this project.": "Tidak ada kluster dalam proyek ini.", - "No clusters with Azure Entra ID authentication found for this subscription": "Tidak ada kluster dengan autentikasi Azure Entra ID yang ditemukan untuk langganan ini", - "No data available": "Tidak ada data yang tersedia", - "No deployments found": "Tidak ditemukan penyebaran", - "No Deployments Found": "Tidak Ada Penyebaran yang Ditemukan", - "No deployments found in this namespace.": "Tidak ditemukan penyebaran di namespace ini.", - "No description provided": "Tidak ada deskripsi yang diberikan", - "No eligible clusters found in this subscription.": "Tidak ditemukan kluster yang memenuhi syarat dalam langganan ini.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Jumlah maksimum memori yang dapat digunakan kontainer. Jika terlampaui, kontainer akan dihentikan (OOMKilled).", + "Container Image": "Citra Kontainer", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Sebarkan dari Azure Container Registry, Docker Hub, atau GHCR", + "Auto-generated Deployment and Service manifests": "Manifes Layanan dan Penyebaran yang dibuat secara otomatis", + "Guided configuration for ports, replicas, env, and resources": "Konfigurasi terpandu untuk port, replika, lingkungan, dan sumber daya", "No Kubernetes expertise required to get started": "Tidak diperlukan keahlian Kubernetes untuk memulai", - "No options": "Tidak ada opsi", - "No pipeline runs yet.": "Belum ada eksekusi alur.", - "No pods found for deployment \"{{name}}\"": "Tidak ditemukan pod untuk penyebaran \"{{name}}\"", - "No repositories found": "Tidak ditemukan repositori", + "Bring your own Kubernetes manifests to deploy": "Gunakan manifes Kubernetes Anda sendiri untuk disebarkan", + "Use existing manifests for full control": "Gunakan manifes yang ada untuk kontrol penuh", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Dukungan multi-file (Penyebaran, Layanan, Ingress, dll.)", + "Preview and basic validation before apply": "Pratinjau dan validasi dasar sebelum diterapkan", + "Select Source": "Pilih Sumber", + "Choose a source for your deployment (container image, repo, etc.).": "Pilih sumber untuk penyebaran Anda (citra kontainer, repo, dll.).", + "Deployment source": "Sumber penyebaran", + "Features": "Fitur", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Grup Sumber Daya Identitas", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Memeriksa identitas yang ada...", + "Creating managed identity...": "Membuat identitas terkelola...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "YAML tidak valid: tidak memiliki bidang yang diperlukan (jenis)", + "Invalid YAML: List resource must have an array \"items\" field": "YAML tidak valid: Sumber daya daftar harus memiliki bidang array \"items\"", + "Invalid YAML: List item missing required field (kind)": "YAML tidak valid: Item daftar tidak memiliki bidang yang diperlukan (jenis)", + "Invalid YAML: List item missing required field (metadata.name)": "YAML tidak valid: Item daftar tidak memiliki bidang yang diperlukan (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "YAML yang Tidak Valid: bidang yang diperlukan tidak ada (metadata.name)", + "Invalid YAML": "YAML yang Tidak Valid", + "Validation failed": "Validasi gagal", + "Failed to apply": "Gagal menerapkan", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Menerapkan {{applied}} sumber daya, tetapi {{failed}} gagal:\n{{errors}}", + "Applied {{count}} resource(s) successfully._other": "Berhasil menerapkan {{count}} sumber daya.", + "Failed to apply resources.": "Gagal menerapkan sumber daya.", + "unnamed": "tanpa nama", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Konten", + "Push agent config files": "Kirim file konfigurasi agen", + "Workflows": "Alur kerja", + "Create setup workflow in .github/workflows/": "Buat alur kerja penyiapan di .github/workflows/", + "Pull requests": "Permintaan pull", + "Create deployment PRs": "Buat PR penyebaran", + "Issues": "Masalah", + "Track agent progress": "Lacak kemajuan agen", + "Run deployment workflows": "Jalankan alur kerja penyebaran", + "Connect to GitHub": "Sambungkan ke GitHub", + "Connected to '{{username}}'.": "Tersambung ke '{{username}}'.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Izinkan AKS Desktop membuat alur penyebaran di repositori Anda.", + "Required Permissions": "Izin yang Diperlukan", + "Complete authorization on your browser screen": "Selesaikan otorisasi di layar browser Anda", + "Connect": "Sambungkan", + "Select repository": "Pilih repositori", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Selesaikan penginstalan di browser Anda. Aplikasi akan diperbarui secara otomatis setelah terinstal di {{repoName}}.", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Aplikasi GitHub Desktop AKS harus diinstal {{repoName}} untuk melanjutkan.", + "Reopen install page": "Buka kembali halaman penginstalan", + "Install GitHub App": "Instal Aplikasi GitHub", + "Checking...": "Memeriksa...", + "Connecting to GitHub...": "Menyambungkan ke GitHub...", + "Connect GitHub": "Sambungkan GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Terhubung", + "Sign in to GitHub": "Masuk ke GitHub", + "Failed to load repositories": "Gagal memuat repositori", + "Filter repositories": "Filter repositori", "No repositories match your filter": "Tidak ada repositori yang sesuai dengan filter Anda", - "No response time data available": "Tidak ada data waktu respons yang tersedia", - "No scaling data available": "Tidak ada data penskalan yang tersedia", - "No subscriptions found": "Tidak menemukan langganan", - "Not specified": "Tidak ditentukan", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Catatan: Untuk namespace terkelola AKS, manajemen Azure ARM akan dihapus secara otomatis.", - "Number of Replicas": "Jumlah Replika", - "Number of seconds after the container has started before liveness probes are initiated.": "Jumlah detik setelah kontainer dimulai sebelum probe keaktifan dimulai.", - "Number of seconds after the container has started before readiness probes are initiated.": "Jumlah detik setelah kontainer dimulai sebelum pemeriksaan kesiapan dimulai.", - "Number of seconds after the container has started before startup probes are initiated.": "Jumlah detik setelah kontainer dimulai sebelum pemeriksaan pengaktifan dimulai.", - "Number of seconds after which the probe times out. Default is 1 second.": "Jumlah detik setelah waktu pemeriksaan berakhir. Nilai default 1 detik.", - "OIDC trust for": "Kepercayaan OIDC untuk", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Setelah agen membuat PR penyebaran, tinjau file yang dihasilkan dan gabungkan untuk memulai alur penyebaran", - "Only clusters with Azure Entra ID authentication are shown.": "Hanya kluster dengan autentikasi Azure Entra ID yang ditampilkan.", - "Performing final status verification": "Melakukan verifikasi status akhir", - "periodSeconds": "periodSeconds", - "Pipeline": "Alur", + "No repositories found": "Tidak ditemukan repositori", + "less than a minute": "kurang dari satu menit", + "{{count}} min_other": "{{count}} mnt", + "Up next": "Berikutnya", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "Memeriksa status penggabungan...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Ini memerlukan waktu lebih lama dari yang diharapkan. Periksa PR di GitHub untuk status terbaru.", + "This PR was closed without merging. You may need to restart the process.": "Permintaan pull ini ditutup tanpa penggabungan. Anda mungkin perlu memulai ulang proses.", + "Review on GitHub": "Tinjau di GitHub", + "Agent is working": "Agen sedang bekerja", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Agen pengkodean Copilot menganalisis repositori Anda dan membuat PR penyebaran dengan Dockerfile, manifes Kubernetes, dan alur kerja GitHub Actions.", + "Issue {{number}}": "Masalah {{number}}", + "Waiting for agent workflow to start...": "Menunggu alur kerja agen dimulai...", + "This typically takes 10–25 minutes.": "Proses ini biasanya memakan waktu 10–25 menit.", "Pipeline configured": "Alur dikonfigurasi", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Selesaikan autentikasi di browser Anda. Jendela ini akan otomatis dialihkan setelah proses masuk selesai.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Daftarkan untuk melanjutkan.", - "Please review all the settings before creating your AKS project": "Harap tinjau semua pengaturan sebelum membuat proyek AKS Anda", - "Please select a deployment to view metrics": "Pilih penyebaran untuk melihat metrik", - "Please select a subscription first": "Pilih langganan terlebih dahulu", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Alur CI/CD untuk {{repoFullName}} sudah siap. Penyebaran pemicu dari tab Sebarkan.", + "Setup PR reviewed and merged": "PR Penyiapan ditinjau dan digabungkan", + "Copilot agent reviewed your repo and generated deployment PR": "Agen Copilot meninjau repositori Anda dan membuat PR penyebaran", + "Deployment PR reviewed and merged": "PR Penyebaran ditinjau dan digabungkan", + "View deployment": "Tampilkan penyebaran", + "You can collapse this panel. Progress is saved and will resume when you return.": "Anda dapat menciutkan panel ini. Kemajuan disimpan dan akan dilanjutkan saat Anda kembali.", + "Creating setup PR...": "Membuat permintaan pull penyiapan...", + "The agent is creating the setup PR to enable the Copilot agent.": "Agen sedang membuat PR penyiapan untuk mengaktifkan agen Copilot.", + "Setup PR Created": "Permintaan Pull Penyiapan Dibuat", + "Review and merge the setup PR to enable the Copilot agent.": "Tinjau dan gabungkan PR penyiapan untuk mengaktifkan agen Copilot.", + "Setting up Copilot agent...": "Menyiapkan agen Copilot...", + "Creating the trigger issue for the Copilot coding agent.": "Membuat masalah pemicu untuk agen pengkodean Copilot.", + "Deployment PR Ready": "Permintaan Pull Penyebaran Siap", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agen telah membuat PR penyebaran. Tinjau file yang dihasilkan dan gabungkan untuk memulai alur penyebaran.", + "Copilot agent": "Agen Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Setelah penggabungan, agen Copilot akan menganalisis repositori Anda dan membuat PR penyebaran", + "Deployment PR": "PR Penyebaran", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Setelah agen membuat PR penyebaran, tinjau file yang dihasilkan dan gabungkan untuk memulai alur penyebaran", + "Connect Source": "Sambungkan Sumber", + "Set up Copilot Agent": "Siapkan Agen Copilot", + "Review & Merge": "Tinjau dan Gabungkan", + "Collapse panel": "Ciutkan panel", + "Keep Going": "Lanjutkan", + "Discard": "Buang", + "Canceling will discard your pipeline progress. Are you sure?": "Membatalkan akan membuang kemajuan alur Anda. Yakin?", + "Ensuring resource group exists...": "Memastikan grup sumber daya sudah ada...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Mengonfigurasi kredensial gabungan...", + "Workload identity configured": "Identitas beban kerja dikonfigurasi", + "Configure Workload Identity": "Konfigurasikan Identitas Beban Kerja", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Sumber daya Azure berikut akan dibuat untuk mengaktifkan alur GitHub Actions Anda untuk diautentikasi dengan kluster AKS:", + "Managed Identity": "Identitas Terkelola", + "in resource group": "di grup sumber daya", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Kredensial Gabungan", + "OIDC trust for": "Kepercayaan OIDC untuk", + "branch": "Cabang", + "Resource group where the managed identity will be created": "Grup sumber daya tempat identitas terkelola akan dibuat", + "Workload identity configured successfully.": "Identitas beban kerja berhasil dikonfigurasi.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Masalah ini mungkin merupakan masalah izin. Periksa izin Aplikasi GitHub Anda, lalu coba lagi.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Operasi mungkin masih berjalan di GitHub. Periksa tautan di atas untuk mengetahui status terbaru.", + "Try again, or check GitHub for details.": "Coba lagi, atau periksa GitHub untuk detailnya.", + "Initializing...": "Memulai...", + "Checking repository readiness...": "Memeriksa kesiapan repositori...", + "Loading configuration...": "Memuat konfigurasi...", + "Unknown error": "Kesalahan tidak diketahui", + "Trigger Copilot Agent": "Agen Copilot Pemicu", + "Create Setup PR": "Buat PR Penyiapan", + "Failed to fetch deployment status": "Gagal mengambil status penyebaran", + "Failed to fetch pod status": "Gagal mengambil status pod", + "Failed to fetch service status": "Gagal mengambil status layanan", + "Failed to monitor deployment health": "Gagal memantau kesehatan penyebaran", + "Convert Namespaces to AKS Projects": "Konversi Namespace ke Proyek AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Namespace berikut akan dikonversi menjadi proyek AKS Desktop dengan menambahkan label ini:", + "managed namespaces only": "namespace terkelola saja", + "Namespaces to convert:": "Namespace yang akan dikonversi:", + "Already AKS projects (will import directly):": "Sudah menjadi proyek AKS (akan langsung diimpor):", + "Converting": "Mengonversi", + "Confirm & Import": "Konfirmasi dan Impor", "Please select at least one namespace to import": "Pilih setidaknya satu namespace untuk diimpor", - "Please sign in to Azure to continue.": "Masuk ke Azure untuk melanjutkan.", - "Pod Details": "Detail Pod", - "Pod Name": "Nama Pod", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Pilih penjadwalan pod pada node yang berbeda untuk meningkatkan ketersediaan dan toleransi kesalahan.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Pilih penjadwalan pod pada node yang berbeda untuk meningkatkan ketersediaan dan toleransi kesalahan. Hal ini membantu memastikan pod didistribusikan ke seluruh kluster.", - "Preview and basic validation before apply": "Pratinjau dan validasi dasar sebelum diterapkan", - "Preview Features": "Fitur Pratinjau", - "Project '{{name}}' successfully imported": "Proyek '{{name}}' berhasil diimpor", - "Project Basics": "Dasar Proyek", - "Project Created Successfully!": "Proyek Berhasil Dibuat!", - "Project creation completed successfully!": "Pembuatan proyek berhasil diselesaikan!", - "Project Creation Failed": "Pembuatan Proyek Gagal", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Waktu pembuatan proyek habis setelah 10 menit. Periksa apakah namespace dibuat dan coba lagi.", - "Project Description": "Deskripsi Proyek", - "Project Name": "Nama Proyek", - "Project name is available": "Nama proyek tersedia", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Nama proyek hanya boleh berisi huruf kecil, angka, dan tanda hubung (tanpa spasi)", - "Project Status": "Status Proyek", - "Pull requests": "Permintaan pull", - "Push agent config files": "Kirim file konfigurasi agen", - "Re-deploy": "Sebarkan ulang", - "Read only root filesystem": "Sistem file akar baca saja", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Akses baca saja ke sebagian besar objek dalam namespace. Tidak dapat melihat peran, pengikatan peran, atau Rahasia.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Akses baca/tulis ke sebagian besar objek dalam namespace. Tidak dapat melihat atau mengubah peran atau ikatan peran. Dapat mengakses Rahasia dan menjalankan Pod sebagai ServiceAccount apa pun di namespace.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Akses baca/tulis ke sebagian besar sumber daya dalam namespace. Dapat membuat peran dan ikatan peran dalam namespace. Tidak dapat menulis ke kuota sumber daya atau namespace itu sendiri.", - "Readiness path": "Jalur kesiapan", - "Ready": "Siap", - "Refresh": "Refresh", - "Refreshing": "Melakukan refresh", - "Register AKS Cluster": "Daftarkan Kluster AKS", - "Register Cluster": "Daftarkan Kluster", - "Register ManagedNamespacePreview Feature": "Daftarkan Fitur ManagedNamespacePreview", - "Registering": "Mendaftarkan", - "Registering cluster": "Mendaftarkan kluster", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Kluster {{clusterName}} harus didaftarkan sebelum mengimpor namespace reguler. Impor namespace terkelola dari kluster ini terlebih dahulu.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Menggabungkan kluster {{clusterName}} ({{count}} namespace)", + "Failed to merge cluster: {{message}}": "Gagal menggabungkan kluster: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Mengonversi {{name}} menjadi proyek AKS (proses ini mungkin perlu waktu beberapa saat)...", + "Failed to convert namespace: {{message}}": "Gagal mengonversi namespace: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Mengimpor {{current}} dari {{total}}: {{name}} dari {{clusterName}}", + "Project '{{name}}' successfully imported": "Proyek '{{name}}' berhasil diimpor", + "Namespace '{{name}}' converted and imported as project": "Namespace '{{name}}' dikonversi dan diimpor sebagai proyek", + "Successfully merged {{count}} cluster(s)_other": "Berhasil menggabungkan {{count}} kluster", + "with {{count}} project(s)_other": "dengan {{count}} proyek", + "{{count}} failed._other": "{{count}} gagal.", + "Failed to import any projects. See details below.": "Gagal mengimpor proyek apa pun. Lihat detail di bawah ini.", + "Import AKS Projects": "Impor Proyek AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Impor namespace terkelola dan namespace reguler yang ada sebagai proyek. Namespace yang belum menjadi proyek AKS Desktop akan dikonversi dengan menambahkan label proyek yang diperlukan.", + "Select Namespaces to Import": "Pilih Namespace untuk Diimpor", + "{{count}} selected_other": "{{count}} dipilih", + "Select All": "Pilih Semua", + "Deselect All": "Batalkan Semua Pilihan", + "AKS Managed": "Dikelola AKS", "Regular": "Reguler", - "Regular Kubernetes namespace": "Namespace Kubernetes reguler", - "remove": "hapus", - "Remove assignee": "Hapus penerima tugas", - "Reopen install page": "Buka kembali halaman penginstalan", - "Replica Bounds": "Batas Replika", - "Replicas": "Replika", - "Request & error rate": "Tingkat kesalahan dan permintaan", + "AKS Project?": "Proyek AKS?", + "Yes": "Ya", + "No": "Tidak", + "Importing": "Mengimpor", + "Import Selected Projects": "Impor Proyek yang Dipilih", + "Failed to fetch managed namespaces": "Gagal mengambil namespace terkelola", + "Failed to fetch managed namespace details": "Gagal mengambil detail namespace terkelola", + "Failed to update managed namespace": "Gagal memperbarui namespace terkelola", + "Updating": "Memperbarui", + "Update": "Perbarui", + "AKS desktop logo": "Logo AKS desktop", + "No Deployments Found": "Tidak Ada Penyebaran yang Ditemukan", + "There are no deployments in this project namespace yet.": "Belum ada penyebaran dalam namespace proyek ini.", + "Deploy an application to view logs.": "Sebarkan aplikasi untuk melihat log.", + "Metrics": "Metrik", + "CPU Usage": "Penggunaan CPU", + "Memory Usage": "Pemakaian Memori", "Request Rate": "Tingkat Permintaan", - "Requests": "Permintaan", - "Required Permissions": "Izin yang Diperlukan", - "Resource Group": "Grup Sumber Daya", - "Resource group where the managed identity will be created": "Grup sumber daya tempat identitas terkelola akan dibuat", - "Resource Limits": "Batas Sumber Daya", - "Resource Usage": "Penggunaan Sumber Daya", - "Resources to be deployed ({{count}} object)_one": "Sumber daya yang akan disebarkan ({{count}} objek)", - "Resources to be deployed ({{count}} object)_other": "Sumber daya yang akan disebarkan ({{count}} objek)", + "Error Rate": "Tingkat Kesalahan", + "Metrics refreshed every 30 seconds": "Metrik di-refresh setiap 30 detik", + "Select a deployment to view metrics": "Pilih penyebaran untuk melihat metrik", + "Metrics Unavailable": "Metrik Tidak Tersedia", + "Application Metrics": "Metrik Aplikasi", + "Request & error rate": "Tingkat kesalahan dan permintaan", + "No data available": "Tidak ada data yang tersedia", "Response Time": "Waktu Respons", + "Memory utilization": "Pemanfaatan memori", + "Network I/O": "I/O Jaringan", + "Deploy an application to start viewing metrics.": "Sebarkan aplikasi untuk mulai melihat metrik.", + "Please select a deployment to view metrics": "Pilih penyebaran untuk melihat metrik", + "Project Status": "Status Proyek", + "Total Pods": "Total Pod", + "Application Health": "Kesehatan Aplikasi", + "Loading metrics": "Memuat metrik", + "Resource Usage": "Penggunaan Sumber Daya", + "Avg Response Time": "Rata-Rata Waktu Respons", + "No response time data available": "Tidak ada data waktu respons yang tersedia", + "Absolute usage": "Penggunaan absolut", + "Network In": "Jaringan Masuk", + "Network Out": "Jaringan Keluar", + "Pod Details": "Detail Pod", + "Pod Name": "Nama Pod", "Restarts": "Mulaia Ulang", - "Retry": "Coba lagi", - "Review": "Tinjauan", - "Review & Deploy": "Tinjau dan Sebarkan", - "Review & Merge": "Tinjau dan Gabungkan", - "Review and merge the setup PR to enable the Copilot agent.": "Tinjau dan gabungkan PR penyiapan untuk mengaktifkan agen Copilot.", - "Review on GitHub": "Tinjau di GitHub", - "Review Project Configuration": "Tinjau Konfigurasi Proyek", - "Role": "Peran", - "Role Assignment": "Penetapan Peran", - "Run as non root user": "Jalankan sebagai pengguna non-akar", - "Run deployment workflows": "Jalankan alur kerja penyebaran", - "Save": "Simpan", - "Scaled down": "Skala telah diturunkan", - "Scaling": "Penskalaan", + "No pods found for deployment \"{{name}}\"": "Tidak ditemukan pod untuk penyebaran \"{{name}}\"", + "Preview Features": "Fitur Pratinjau", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Aktifkan atau nonaktifkan fitur yang masih dalam tahap pengembangan. Fitur pratinjau mungkin berubah atau dihapus dalam rilis mendatang.", + "GitHub Pipelines": "Alur GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Aktifkan alur penyebaran berbasis GitHub untuk proyek AKS.", + "Loading scaling metrics from Prometheus": "Memuat metrik penskalaan dari Prometheus", "Scaling Chart Unavailable": "Bagan Penskalakan Tidak Tersedia", - "Scaling History (Last 24 Hours)": "Riwayat Penskalaan (24 Jam Terakhir)", + "No scaling data available": "Tidak ada data penskalan yang tersedia", + "Edit HPA Configuration": "Edit Konfigurasi HPA", + "Edit Manual Scaling Configuration": "Edit Konfigurasi Penskalaan Manual", + "Minimum Replicas": "Replika Minimum", + "Maximum Replicas": "Replika Maksimum", + "Target CPU Utilization (%)": "Pemanfaatan CPU Target (%)", + "Number of Replicas": "Jumlah Replika", + "Set the desired number of pod replicas for this deployment": "Atur jumlah replika pod yang diinginkan untuk penyebaran ini", + "Save": "Simpan", "Scaling Mode": "Mode Penskalaan", - "Scaling Overview": "Gambaran Umum Penskalaan", - "Search clusters": "Cari kluster", - "Search subscriptions": "Cari langganan", - "Select a cluster": "Pilih kluster", - "Select a deployment to view metrics": "Pilih penyebaran untuk melihat metrik", + "Current Replicas": "Replika Saat Ini", + "Desired Replicas": "Replika yang Diinginkan", + "Configured Replicas": "Replika yang Dikonfigurasi", + "Replica Bounds": "Batas Replika", + "Available Replicas": "Replika yang Tersedia", + "CPU Usage / Target": "Target/Penggunaan CPU", + "Scaling": "Penskalaan", "Select a deployment to view scaling metrics": "Pilih penyebaran untuk melihat metrik penskalaan", - "Select a subscription": "Pilih langganan", - "Select All": "Pilih Semua", - "Select an AKS cluster": "Pilih kluster AKS", - "Select an Azure subscription": "Pilih langganan Azure", - "Select an option": "Pilih salah satu opsi", + "Scaling Overview": "Gambaran Umum Penskalaan", + "Edit Configuration": "Edit Konfigurasi", + "Scaling History (Last 24 Hours)": "Riwayat Penskalaan (24 Jam Terakhir)", + "Copied!": "Disalin!", + "Copy": "Salin", + "Copy to clipboard": "Salin ke clipboard", + "No deployments found": "Tidak ditemukan penyebaran", "Select Deployment": "Pilih Penyebaran", - "Select Namespaces to Import": "Pilih Namespace untuk Diimpor", - "Select repository": "Pilih repositori", - "Select Source": "Pilih Sumber", - "Selected Cluster Details": "Detail Kluster yang Dipilih", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Kluster yang dipilih hilang dari kubeconfig. Daftarkan sebelum melanjutkan.", - "Service port": "Port layanan", - "Service type": "Tipe layanan", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Atur permintaan CPU dan memori (sumber daya terjamin) dan batasan (sumber daya maksimum) untuk mengontrol alokasi sumber daya dan mencegah kontainer mengonsumsi sumber daya kluster secara berlebihan.", - "Set quota limits to prevent overuse and maintain cluster stability": "Atur batas kuota untuk mencegah penggunaan berlebih dan menjaga stabilitas kluster", - "Set security, communication and access rules for incoming and outgoing traffic": "Atur aturan keamanan, komunikasi, dan akses untuk lalu lintas masuk dan keluar", - "Set the desired number of pod replicas for this deployment": "Atur jumlah replika pod yang diinginkan untuk penyebaran ini", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Siapkan alur CI/CD untuk mengotomatiskan penyebaran dan menyederhanakan alur kerja Anda", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Menyiapkan dan mengonfigurasi proyek baru di Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Siapkan Agen Copilot", - "Set up your pipeline": "Siapkan alur Anda", - "Setting up Copilot agent...": "Menyiapkan agen Copilot...", - "Setup PR Created": "Permintaan Pull Penyiapan Dibuat", - "Setup PR reviewed and merged": "PR Penyiapan ditinjau dan digabungkan", - "Sign in": "Masuk", - "Sign in to GitHub": "Masuk ke GitHub", - "Sign in to GitHub to view pipeline runs.": "Masuk ke GitHub untuk melihat eksekusi alur.", - "Sign in with Azure": "Masuk dengan Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Masuk dengan akun Azure Anda untuk mengelola kluster dan sumber daya AKS", - "Source": "Sumber", - "Starting project creation": "Memulai pembuatan proyek", - "Startup path": "Jalur pengaktifan", - "Status": "Status", - "Subscription": "Langganan", + "Loading deployments": "Memuat penyebaran", + "No cluster is associated with this project.": "Tidak ada kluster yang terkait dengan proyek ini.", + "Please sign in to Azure to continue.": "Masuk ke Azure untuk melanjutkan.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Konteks Azure yang diperlukan tidak ada. Pastikan Anda masuk dan kluster terkait dengan langganan, grup sumber daya, dan penyewa yang valid.", + "Failed to load Azure context": "Gagal memuat konteks Azure", + "just now": "baru saja", + "{{seconds}}s ago": "{{seconds}}dtk yang lalu", + "{{minutes}} min ago": "{{minutes}} menit yang lalu", + "{{hours}}h ago": "{{hours}}j yang lalu", + "{{days}}d ago": "{{days}}h yang lalu", + "{{weeks}}w ago": "{{weeks}}mgg yang lalu", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} kluster disembunyikan — tidak ada Azure Entra ID", + "{{count}} eligible cluster(s) found._one": "{{count}} kluster yang memenuhi syarat ditemukan.", + "{{count}} failed._one": "{{count}} gagal.", + "{{count}} min_one": "{{count}} mnt", + "{{count}} selected_one": "{{count}} dipilih", + "Access Control ({{count}} assignee)_one": "Kontrol Akses ({{count}} penerima tugas)", + "Applied {{count}} resource(s) successfully._one": "Berhasil menerapkan {{count}} sumber daya.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Menggabungkan kluster {{clusterName}} ({{count}} namespace)", + "Resources to be deployed ({{count}} object)_one": "Sumber daya yang akan disebarkan ({{count}} objek)", "Successfully merged {{count}} cluster(s)_one": "Berhasil menggabungkan {{count}} kluster", - "Successfully merged {{count}} cluster(s)_other": "Berhasil menggabungkan {{count}} kluster", - "successThreshold": "successThreshold", - "Target CPU utilization": "Pemanfaatan CPU target", - "Target CPU Utilization (%)": "Pemanfaatan CPU Target (%)", - "Target port": "Port target", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agen telah membuat PR penyebaran. Tinjau file yang dihasilkan dan gabungkan untuk memulai alur penyebaran.", - "The agent is creating the setup PR to enable the Copilot agent.": "Agen sedang membuat PR penyiapan untuk mengaktifkan agen Copilot.", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Aplikasi GitHub Desktop AKS harus diinstal {{repoName}} untuk melanjutkan.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Ekstensi aks-preview diperlukan untuk membuat namespace terkelola. Instal untuk melanjutkan.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Agen pengkodean Copilot menganalisis repositori Anda dan membuat PR penyebaran dengan Dockerfile, manifes Kubernetes, dan alur kerja GitHub Actions.", - "The following addons can be enabled on this cluster:": "Add-on berikut dapat diaktifkan di kluster ini:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Sumber daya Azure berikut akan dibuat untuk mengaktifkan alur GitHub Actions Anda untuk diautentikasi dengan kluster AKS:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Namespace berikut akan dikonversi menjadi proyek AKS Desktop dengan menambahkan label ini:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Jalur HTTP untuk memeriksa keaktifan (misalnya, /healthz). Pemeriksaan melakukan permintaan HTTP GET ke jalur ini.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Jalur HTTP untuk memeriksa kesiapan (misalnya, /ready). Pemeriksaan melakukan permintaan HTTP GET ke jalur ini.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Jalur HTTP untuk memeriksa pengaktifan (misalnya, /startup). Pemeriksaan melakukan permintaan HTTP GET ke jalur ini.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Fitur ManagedNamespacePreview harus terdaftar untuk membuat namespace terkelola.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Jumlah maksimum CPU yang dapat digunakan kontainer. Jika terlampaui, kontainer akan dibatasi.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Jumlah maksimum memori yang dapat digunakan kontainer. Jika terlampaui, kontainer akan dihentikan (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Jumlah maksimum replika pod yang dapat diskalakan HPA saat penggunaan CPU tinggi.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Jumlah minimum CPU yang dijamin untuk kontainer. Kubernetes akan menjadwalkan pod pada node yang memiliki setidaknya jumlah CPU yang tersedia.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Jumlah minimum memori yang dijamin untuk kontainer. Kubernetes akan menjadwalkan pod pada node yang memiliki setidaknya jumlah memori ini.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Jumlah replika pod minimum yang akan dikelola HPA, bahkan ketika penggunaan CPU rendah.", - "The namespace will be created on the selected cluster and set up as a project": "Namespace akan dibuat pada kluster yang dipilih dan disiapkan sebagai proyek", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Jumlah replika pod yang akan dijalankan. Makin banyak replika, makin tinggi ketersediaan dan distribusi muatannya.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Operasi mungkin masih berjalan di GitHub. Periksa tautan di atas untuk mengetahui status terbaru.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Nomor port yang diperlihatkan oleh layanan Kubernetes. Lalu lintas ke port ini diteruskan ke port target.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Nomor port yang didengarkan kontainer Anda. Ini port di dalam kontainer tempat aplikasi Anda berjalan.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Persentase pemanfaatan CPU rata-rata target di semua pod. HPA akan meningkatkan kapasitas ketika penggunaan CPU melebihi nilai ini dan menurunkan kapasitas ketika berada di bawah nilai ini.", - "There are no deployments in this project namespace yet.": "Belum ada penyebaran dalam namespace proyek ini.", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Ini memerlukan waktu lebih lama dari yang diharapkan. Periksa PR di GitHub untuk status terbaru.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Masalah ini mungkin merupakan masalah izin. Periksa izin Aplikasi GitHub Anda, lalu coba lagi.", - "This PR was closed without merging. You may need to restart the process.": "Permintaan pull ini ditutup tanpa penggabungan. Anda mungkin perlu memulai ulang proses.", - "This typically takes 10–25 minutes.": "Proses ini biasanya memakan waktu 10–25 menit.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Total Pod", - "Track agent progress": "Lacak kemajuan agen", - "Trigger": "Pemicu", - "Trigger Copilot Agent": "Agen Copilot Pemicu", - "Triggering...": "Memicu...", - "Try again, or check GitHub for details.": "Coba lagi, atau periksa GitHub untuk detailnya.", - "Type": "Jenis", - "Unknown error": "Kesalahan tidak diketahui", - "unnamed": "tanpa nama", - "Up next": "Berikutnya", - "Update": "Perbarui", - "Updating": "Memperbarui", - "Updating local settings": "Memperbarui pengaturan lokal", - "Upload files": "Unggah file", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Gunakan ClusterIP. Terbaik untuk layanan yang hanya dapat dijangkau dalam kluster.", - "Use custom service port": "Gunakan port layanan kustom", - "Use existing manifests for full control": "Gunakan manifes yang ada untuk kontrol penuh", - "User assignment completed with errors": "Penetapan pengguna selesai dengan kesalahan", - "Validation failed": "Validasi gagal", - "Value": "Nilai", - "View deployment": "Tampilkan penyebaran", - "View on GitHub": "Tampilkan di GitHub", - "View run on GitHub": "Lihat eksekusi di GitHub", - "View workflow run": "Tampilkan eksekusi alur kerja", - "VPA (Vertical Pod Autoscaler)": "VPA (Vertical Pod Autoscaler)", - "VS Code": "Visual Studio Code", - "Waiting for agent workflow to start...": "Menunggu alur kerja agen dimulai...", - "Waiting for browser authorization...": "Menunggu otorisasi browser...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Menunggu penyelesaian proses masuk... ({{minutes}} menit tersisa)", - "Waiting for namespace to be created": "Menunggu namespace dibuat", - "Waiting for namespace to propagate": "Menunggu namespace disebarkan", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Peringatan: Tindakan ini tidak dapat dibatalkan. Semua sumber daya dalam namespace ini akan dihapus secara permanen.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Saat pemeriksaan gagal, Kubernetes akan mencoba lagi berulang kali sebelum berhenti dan memulai ulang kontainer.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Saat pemeriksaan gagal, Kubernetes akan mencoba lagi berulang kali sebelum berhenti. Untuk pemeriksaan pengaktifan, tindakan ini menentukan periode tunggu sebelum memulai ulang.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Saat pemeriksaan gagal, Kubernetes akan mencoba lagi berulang kali sebelum menandai pod sebagai tidak siap.", - "with {{count}} project(s)_one": "dengan {{count}} proyek", - "with {{count}} project(s)_other": "dengan {{count}} proyek", - "with the following parameters:": "dengan parameter berikut:", - "Wizard steps": "Langkah wizard", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Pengiriman alur kerja berhasil dipicu. Periksa kemajuan di GitHub Actions.", - "workflow on": "alur kerja aktif", - "Workflows": "Alur kerja", - "Workload identity configured": "Identitas beban kerja dikonfigurasi", - "Workload identity configured successfully.": "Identitas beban kerja berhasil dikonfigurasi.", - "Workloads": "Beban kerja", - "Yes": "Ya", - "You can collapse this panel. Progress is saved and will resume when you return.": "Anda dapat menciutkan panel ini. Kemajuan disimpan dan akan dilanjutkan saat Anda kembali.", - "You need to be logged in to Azure to register AKS clusters.": "Anda harus masuk ke Azure untuk mendaftarkan kluster AKS.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Proyek AKS Anda \"{{projectName}}\" telah dibuat dan siap digunakan.", - "Your project \"{{projectName}}\" is ready to use.": "Proyek \"{{projectName}}\" Anda siap digunakan." + "with {{count}} project(s)_one": "dengan {{count}} proyek" } diff --git a/plugins/aks-desktop/locales/it/translation.json b/plugins/aks-desktop/locales/it/translation.json index 25070df71..d83345077 100644 --- a/plugins/aks-desktop/locales/it/translation.json +++ b/plugins/aks-desktop/locales/it/translation.json @@ -1,629 +1,682 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"Ruolo utente cluster servizio Azure Kubernetes\" con ambito per il gruppo di risorse", - "(already enabled)": "(già abilitato)", + "Failed to load subscriptions": "Non è stato possibile caricare le sottoscrizioni", + "Failed to load AKS clusters": "Non è possibile caricare i cluster del servizio Azure Kubernetes", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Il cluster '{{cluster}}' è stato unito in kubeconfig", + "Failed to register cluster: {{message}}": "Non è possibile registrare il cluster: {{message}}", + "Register AKS Cluster": "Registra cluster del servizio Azure Kubernetes", + "Checking authentication status": "Controllo dello stato di autenticazione", + "You need to be logged in to Azure to register AKS clusters.": "È necessario accedere ad Azure per registrare i cluster del servizio Azure Kubernetes.", + "Subscription": "Sottoscrizione", + "Select an Azure subscription": "Consente di selezionare una sottoscrizione di Azure", + "Loading subscriptions": "Caricamento delle sottoscrizioni", + "Loading AKS clusters": "Caricamento dei cluster del servizio Azure Kubernetes", + "No AKS clusters found in this subscription.": "Non sono stati trovati cluster del servizio Azure Kubernetes in questa sottoscrizione.", + "AKS Cluster": "Cluster del servizio Azure Kubernetes", + "Select an AKS cluster": "Selezionare un cluster del servizio Azure Kubernetes", + "Selected Cluster Details": "Dettagli cluster selezionato", + "Name": "Nome", + "Resource Group": "Gruppo di risorse", + "Location": "Posizione", + "Kubernetes Version": "Versione Kubernetes", + "Done": "Fine", + "Cancel": "Annulla", + "Registering": "Registrazione", + "Register Cluster": "Registra cluster", + "Initiating Azure login": "Avvio dell'accesso ad Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Completare l'autenticazione nel browser. Questa finestra verrà reindirizzata automaticamente una volta completato l'accesso.", + "Login successful! Redirecting": "Accesso riuscito. Reindirizzamento", + "Login timeout. Please try again.": "Timeout di accesso. Riprovare.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "In attesa del completamento dell'accesso... ({{minutes}} minuti rimanenti)", + "Failed to initiate login: {{message}}": "Non è possibile avviare l'accesso: {{message}}", + "Azure Authentication": "Autenticazione di Azure", + "Sign in with your Azure account to manage AKS clusters and resources": "Accedere con l'account Azure per gestire i cluster e le risorse del servizio Azure Kubernetes", + "Sign in with Azure": "Accedi con Azure", + "Loading Azure account information": "Caricamento delle informazioni sull'account Azure", + "Back": "Indietro", + "Azure Account": "Account Azure", + "Logged in as": "Accesso eseguito come", + "Add Cluster from Azure": "Aggiungi cluster da Azure", + "Logging out": "Disconnessione", + "Log out": "Disconnetti", + "Azure CLI/aks-preview requirements not met": "Requisiti dell'interfaccia della riga di comando di Azure/aks-preview non soddisfatti", + "Dismiss": "Chiudi", + "Configure Pipeline": "Configura pipeline", + "Loading Azure context...": "Caricamento del contesto di Azure in corso...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Accesso in sola lettura alla maggior parte degli oggetti in uno spazio dei nomi. Non è possibile visualizzare ruoli, associazioni di ruoli o segreti.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Accesso in lettura/scrittura alla maggior parte degli oggetti in uno spazio dei nomi. Non è possibile visualizzare o modificare ruoli o associazioni di ruolo. Può accedere ai segreti ed eseguire pod come qualsiasi ServiceAccount nello spazio dei nomi.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Accesso in lettura/scrittura alla maggior parte delle risorse in uno spazio dei nomi. Può creare ruoli e associazioni di ruoli all'interno dello spazio dei nomi. Non è possibile scrivere nella quota di risorse o nello spazio dei nomi stesso.", + "Access": "Accesso", + "Assign permissions to users who need access to your namespace": "Assegnare le autorizzazioni agli utenti che devono accedere allo spazio dei nomi", + "Assignee": "Assegnatario", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Ruolo", + "Remove assignee": "Rimuovi assegnatario", + "Add assignee": "Aggiungi assegnatario", + "Only clusters with Azure Entra ID authentication are shown.": "Vengono visualizzati solo i cluster con l'autenticazione con Entra ID di Azure.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "Cluster nascosti: {{count}}. Nessun Entra ID di Azure", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "Cluster nascosti: {{count}}. Nessun Entra ID di Azure", + "No eligible clusters found in this subscription.": "Non sono stati trovati cluster idonei in questa sottoscrizione.", "{{count}} eligible cluster(s) found._one": "Cluster idonei trovati: {{count}}.", + "{{count}} eligible cluster(s) found._many": "", "{{count}} eligible cluster(s) found._other": "Cluster idonei trovati: {{count}}.", - "{{count}} failed._one": "{{count}} operazione non riuscita.", - "{{count}} failed._other": "{{count}} operazioni non riuscite.", - "{{count}} min_one": "{{count}} min", - "{{count}} min_other": "{{count}} min", - "{{count}} selected_one": "Elementi selezionati: {{count}}", - "{{count}} selected_other": "Elementi selezionati: {{count}}", - "{{days}}d ago": "{{days}} giorno/i fa", - "{{hours}}h ago": "{{hours}} ora/e fa", - "{{minutes}} min ago": "{{minutes}} minuto/i fa", - "{{seconds}}s ago": "{{seconds}} secondo/i fa", - "{{weeks}}w ago": "{{weeks}} settimana/e fa", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "È necessario selezionare un cluster", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Verrà creato un nuovo spazio dei nomi nel cluster con le etichette di progetto applicate. Verrà visualizzato immediatamente nell'elenco di progetti.", - "Absolute usage": "Utilizzo assoluto", - "Access": "Accesso", - "Access Control ({{count}} assignee)_one": "Controllo di accesso ({{count}} assegnatario)", - "Access Control ({{count}} assignee)_other": "Controllo di accesso ({{count}} assegnatari)", - "Actions": "Azioni", - "Add assignee": "Aggiungi assegnatario", - "Add Cluster from Azure": "Aggiungi cluster da Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Aggiungere uno o più manifesti Kubernetes. Caricare i file per popolare l'editor o incollare/modificare direttamente di seguito.", - "Add variable": "Aggiungi variabile", - "Advanced": "Avanzate", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Dopo l'unione, l'agente Copilot analizzerà il repository e creerà una richiesta pull di distribuzione", - "Agent is working": "L'agente è attivo", - "AKS Cluster": "Cluster del servizio Azure Kubernetes", - "AKS desktop logo": "Logo del desktop del servizio Azure Kubernetes", - "AKS Managed": "Gestito dal servizio Azure Kubernetes", - "AKS Preview Extension installed successfully!": "L'estensione di anteprima del servizio Azure Kubernetes è stata installata.", - "AKS Preview Extension Required": "Estensione di anteprima del servizio Azure Kubernetes obbligatoria", - "AKS Project?": "Progetto del servizio Azure Kubernetes?", - "All selected addons have been enabled successfully.": "Tutti i componenti aggiuntivi selezionati sono stati abilitati.", - "All verifications completed successfully!": "Tutte le verifiche sono state completate.", - "Allow all traffic": "Consenti tutto il traffico", - "Allow privilege escalation": "Consenti escalation privilegi", - "Allow traffic within same namespace": "Consenti traffico all'interno dello stesso spazio dei nomi", - "Already AKS projects (will import directly):": "Già progetti del servizio Azure Kubernetes (verranno importati direttamente):", - "Also delete the namespaces (this will remove all resources within them)": "Eliminare anche gli spazi dei nomi (verranno rimosse tutte le risorse al loro interno)", - "Another project already exists with same name. Please choose a different name.": "Esiste già un altro progetto con lo stesso nome. Scegliere un nome diverso.", - "Application Health": "Integrità applicazione", - "Application Metrics": "Metriche dell'applicazione", - "Application name": "Nome applicazione", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "L'applicazione di {{applied}} risorsa/e è stata completata ma si è verificato un errore per {{failed}}:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Applicazione di {{count}} risorsa/e completata.", - "Applied {{count}} resource(s) successfully._other": "Applicazione di {{count}} risorsa/e completata.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Eliminare il progetto \"{{projectId}}\"?", - "Assign permissions to users who need access to your namespace": "Assegnare le autorizzazioni agli utenti che devono accedere allo spazio dei nomi", - "Assignee": "Assegnatario", - "Assigning AKS Cluster User Role...": "Assegnazione del ruolo utente del cluster del servizio Azure Kubernetes in corso...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorizzare Il desktop del servizio Azure Kubernetes a creare pipeline di distribuzione nel repository.", - "Auto-generated Deployment and Service manifests": "Manifesti di distribuzione e servizio generati automaticamente", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Ridimensiona automaticamente il numero di pod in base all'utilizzo della CPU. HPA aumenterà i pod quando l'utilizzo della CPU supera l'impostazione target e diminuirà quando è inferiore.", - "Available Replicas": "Repliche disponibili", - "Avg Response Time": "Tempo medio di risposta", - "Azure Account": "Account Azure", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Autenticazione di Azure", - "Azure CLI/aks-preview requirements not met": "Requisiti dell'interfaccia della riga di comando di Azure/aks-preview non soddisfatti", - "Azure Monitor Metrics (Managed Prometheus)": "Metriche di Monitoraggio di Azure (Prometheus gestito)", - "Back": "Indietro", - "Basics": "Informazioni di base", - "branch": "ramo", - "Bring your own Kubernetes manifests to deploy": "Distribuire manifesti Kubernetes personali", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Per impostazione predefinita, i probe usano HTTP GET nel percorso radice con valori predefiniti ragionevoli. Abilitare questa opzione per personalizzare le impostazioni del probe.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Per impostazione predefinita, la porta del servizio corrisponde alla porta di destinazione. Abilitare questa opzione per usare una porta diversa per il servizio.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Per impostazione predefinita, verranno rimosse le etichette dello spazio dei nomi gestito di Azure e del progetto dagli spazi dei nomi seguenti:", - "Cancel": "Annulla", - "Canceling will discard your pipeline progress. Are you sure?": "L'annullamento eliminerà lo stato della pipeline. Continuare?", - "Cancelled deletion of project {{ projectId }}.": "L'eliminazione del progetto {{ projectId }} è stata annullata.", - "Checking authentication status": "Controllo dello stato di autenticazione", - "Checking for existing identity...": "Verifica dell'identità esistente in corso...", - "Checking if another project exists with same name": "Controllo dell'esistenza di un altro progetto con lo stesso nome", - "Checking merge status...": "Controllo dello stato di unione in corso...", - "Checking repository readiness...": "Verifica dell'idoneità del repository in corso...", - "Checking...": "Controllo in corso...", - "Choose a source for your deployment (container image, repo, etc.).": "Scegliere un'origine per la distribuzione (immagine del contenitore, repository e così via).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "La pipeline CI/CD per {{repoFullName}} è pronta. Attivare le distribuzioni dalla scheda Distribuisci.", - "Clear editor": "Cancella editor", - "Close": "Chiudi", - "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Il cluster '{{cluster}}' è stato unito in kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "È necessario registrare il cluster {{clusterName}} prima di importare gli spazi dei nomi normali. Importare prima uno spazio dei nomi gestito da questo cluster.", - "Cluster Configuration": "Configurazione del cluster", - "Cluster is being deleted. Cannot deploy to this cluster.": "Eliminazione del cluster in corso. Non è possibile eseguire la distribuzione in questo cluster.", "Cluster is currently updating. Deployment may fail.": "Aggiornamento del cluster in corso. La distribuzione potrebbe non riuscire.", - "Cluster is deallocated. Please start the cluster before deploying.": "Il cluster è deallocato. Avviare il cluster prima della distribuzione.", - "Cluster is in a failed state. Please check Azure portal.": "Il cluster si trova in uno stato di errore. Controllare nel portale di Azure.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Eliminazione del cluster in corso. Non è possibile eseguire la distribuzione in questo cluster.", "Cluster is still being created. Please wait until creation completes.": "Il cluster è ancora in fase di creazione. Attendere il completamento della creazione.", + "Cluster is in a failed state. Please check Azure portal.": "Il cluster si trova in uno stato di errore. Controllare nel portale di Azure.", "Cluster is stopped. Please start the cluster before deploying.": "Cluster arrestato. Avviare il cluster prima della distribuzione.", + "Cluster is deallocated. Please start the cluster before deploying.": "Il cluster è deallocato. Avviare il cluster prima della distribuzione.", + "AKS Preview Extension Required": "Estensione di anteprima del servizio Azure Kubernetes obbligatoria", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "L'estensione aks-preview è necessaria per creare spazi dei nomi gestiti. Installarla per continuare.", + "Installing": "Installazione", + "Install Extension": "Installa estensione", + "AKS Preview Extension installed successfully!": "L'estensione di anteprima del servizio Azure Kubernetes è stata installata.", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "La funzionalità ManagedNamespacePreview deve essere registrata per creare spazi dei nomi gestiti.", + "Current state": "Stato corrente", + "Please register it to continue.": "Registralo per continuare.", + "Register ManagedNamespacePreview Feature": "Registra funzionalità ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "La funzionalità ManagedNamespacePreview è stata registrata.", + "Project Name": "Nome progetto", + "Checking if another project exists with same name": "Controllo dell'esistenza di un altro progetto con lo stesso nome", + "Another project already exists with same name. Please choose a different name.": "Esiste già un altro progetto con lo stesso nome. Scegliere un nome diverso.", + "Project name is available": "Il nome del progetto è disponibile", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Il nome del progetto deve contenere solo lettere minuscole, numeri e trattini (senza spazi)", + "Project Description": "Descrizione del progetto", + "Enter project description": "Immettere la descrizione del progetto", + "Select a subscription": "Selezionare una sottoscrizione", + "Search subscriptions": "Cerca sottoscrizioni", + "No subscriptions found": "Nessuna sottoscrizione trovata", + "Retry": "Riprova", + "Cluster": "Cluster", + "Please select a subscription first": "Selezionare prima una sottoscrizione", + "Loading clusters": "Caricamento dei cluster", + "Select a cluster": "Seleziona un cluster", + "Search clusters": "Cerca cluster", + "No clusters with Azure Entra ID authentication found for this subscription": "Non sono stati trovati cluster con l'autenticazione Entra ID di Azure per questa sottoscrizione", "Cluster Not Ready": "Cluster non pronto", - "Collapse panel": "Comprimi pannello", - "Complete authorization on your browser screen": "Completare l'autorizzazione nella schermata del browser", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Completare l'installazione nel browser. L'aggiornamento verrà eseguito automaticamente dopo l'installazione dell'app in {{repoName}}.", - "Compute Quota": "Quota di calcolo", - "Configuration Complete": "Configurazione completa", - "Configuration Error": "Errore di configurazione", + "Refreshing": "Aggiornamento", + "Refresh": "Aggiorna", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Cluster selezionato mancante da kubeconfig. Registrarlo prima di procedere.", + "Registering cluster": "Registrazione del cluster", + "Wizard steps": "Passaggi della procedura guidata", + "Azure Monitor Metrics (Managed Prometheus)": "Metriche di Monitoraggio di Azure (Prometheus gestito)", + "KEDA (Event-Driven Autoscaling)": "KEDA (ridimensionamento automatico guidato dagli eventi)", + "VPA (Vertical Pod Autoscaler)": "VPA (componente di ridimensionamento automatico dei pod verticale)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "La configurazione richiede più tempo del previsto. Verificare lo stato corrente del cluster nel portale di Azure.", - "Configure": "Configura", - "Configure Cluster": "Configura cluster", - "Configure Container Deployment": "Configura distribuzione contenitore", - "Configure container health probes.": "Configurare i probe di integrità del contenitore.", - "Configure Pipeline": "Configura pipeline", - "Configure security context settings for the container.": "Configurare le impostazioni del contesto di sicurezza per il contenitore.", - "Configure Workload Identity": "Configura identità del carico di lavoro", - "Configured Replicas": "Repliche configurate", + "Failed to enable addons": "Non è possibile abilitare i componenti aggiuntivi", + "Failed to enable addon: {{error}}": "Non è possibile abilitare il componente aggiuntivo: {{error}}", + "Cluster Configuration": "Configurazione del cluster", + "(already enabled)": "(già abilitato)", + "The following addons can be enabled on this cluster:": "In questo cluster è possibile abilitare i componenti aggiuntivi seguenti:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Non è possibile modificare il motore dei criteri di rete dopo la creazione del cluster. Crea un nuovo cluster con", + "for full network policy support.": "per il supporto completo dei criteri di rete.", + "Enabling these addons may incur additional Azure costs.": "L'abilitazione di questi componenti aggiuntivi può comportare costi aggiuntivi di Azure.", + "Configuration Error": "Errore di configurazione", + "Configuration Complete": "Configurazione completa", + "All selected addons have been enabled successfully.": "Tutti i componenti aggiuntivi selezionati sono stati abilitati.", "Configuring cluster... This may take a few minutes.": "Configurazione del cluster in corso... L'operazione potrebbe richiedere alcuni minuti.", - "Configuring federated credential...": "Configurazione delle credenziali federate in corso...", + "Enabling Addons...": "Abilitazione dei componenti aggiuntivi in corso...", "Configuring...": "Configurazione in corso...", - "Confirm & Import": "Conferma e importa", - "Connect": "Connetti", - "Connect GitHub": "Connessione GitHub", - "Connect Source": "Connetti origine", - "Connect to GitHub": "Connetti a GitHub", - "Connected": "Connesso", - "Connected to '{{username}}'.": "Connesso a \"{{username}}\".", - "Connecting to GitHub...": "Connessione a GitHub in corso...", - "Connecting...": "Connessione in corso...", - "Container image": "Immagine contenitore", - "Container Image": "Immagine del contenitore", - "Contents": "Contenuti", - "Continue": "Continua", - "Controls whether a process can gain more privileges than its parent process.": "Controlla se un processo può ottenere più privilegi rispetto al processo padre.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controlla se un processo può ottenere più privilegi rispetto al processo padre. La disabilitazione di questa opzione (scelta consigliata) impedisce gli attacchi di escalation dei privilegi.", - "Convert Namespaces to AKS Projects": "Convertire gli spazi dei nomi in progetti del servizio Azure Kubernetes", - "Converting": "Conversione", - "Converting {{name}} to AKS project (this may take a moment)...": "È in corso la conversione di {{name}} in progetto del servizio Azure Kubernetes (l'operazione potrebbe richiedere qualche minuto)...", - "Copied!": "Copia completata.", - "Copilot agent": "Agente Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "L'agente Copilot ha esaminato il repository e ha generato la richiesta pull di distribuzione", - "Copy": "Copia", - "Copy to clipboard": "Copia negli Appunti", - "CPU": "CPU", - "CPU limit": "Limite CPU", - "CPU Limits": "Limiti CPU", - "CPU request": "Richiesta CPU", - "CPU Requests": "Richieste CPU", + "Configure Cluster": "Configura cluster", + "Compute Quota": "Quota di calcolo", + "Set quota limits to prevent overuse and maintain cluster stability": "Impostare i limiti di quota per evitare l'utilizzo eccessivo e mantenere la stabilità del cluster", "CPU Resources": "Risorse CPU", - "CPU Usage": "Utilizzo CPU", - "CPU Usage / Target": "Utilizzo CPU / Destinazione", - "Create a new namespace on an existing cluster and set it up as a project": "Creare un nuovo spazio dei nomi in un cluster esistente e configurarlo come progetto", - "Create Application": "Crea applicazione", - "Create deployment PRs": "Crea richieste pull di distribuzione", - "Create Namespace": "Crea spazio dei nomi", - "Create New Namespace": "Crea nuovo spazio dei nomi", - "Create Project": "Crea progetto", - "Create Setup PR": "Crea richiesta pull di configurazione", - "Create setup workflow in .github/workflows/": "Creare il flusso di lavoro di configurazione in .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Crea un LoadBalancer per esporre l'applicazione a Internet.", - "Creating managed identity...": "Creazione dell'identità gestita in corso...", - "Creating namespace": "Creazione dello spazio dei nomi", - "Creating Namespace": "Creazione dello spazio dei nomi", - "Creating Project": "Creazione del progetto", - "Creating setup PR...": "Creazione della richiesta pull di configurazione in corso...", - "Creating the trigger issue for the Copilot coding agent.": "Creazione del problema del trigger per l'agente di codifica Copilot.", - "Current Replicas": "Repliche correnti", - "Current state": "Stato corrente", - "Degraded": "Ridotto", - "Delete project": "Elimina progetto", + "CPU Requests": "Richieste CPU", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU minima garantita (1000 m = 1 core CPU)", + "CPU Limits": "Limiti CPU", + "Maximum CPU allowed (1000m = 1 CPU core)": "CPU massima consentita (1000 m = 1 core CPU)", + "Memory Resources": "Risorse di memoria", + "Memory Requests": "Richieste memoria", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memoria minima garantita (1024 MiB = 1 GiB)", + "Memory Limits": "Limiti memoria", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Memoria massima consentita (1024 MiB = 1 GiB)", + "Basics": "Informazioni di base", + "Networking Policies": "Criteri di rete", + "Review": "Verifica", + "New Project": "Nuovo progetto", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Impostare e configurare un nuovo progetto nel servizio Azure Kubernetes", + "Creating Project": "Creazione del progetto", + "Create Project": "Crea progetto", + "Loading": "Caricamento in corso", + "Next": "Avanti", + "Project Created Successfully!": "Il progetto è stato creato correttamente.", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Il progetto del servizio Azure Kubernetes \"{{projectName}}\" è stato creato ed è pronto per l'uso.", + "Application name": "Nome applicazione", + "Enter application name": "Immettere il nome dell'applicazione", + "Enter a name for your first application to get started with deployment.": "Immettere un nome per la prima applicazione per iniziare a usare la distribuzione.", + "Create Application": "Crea applicazione", + "Project Creation Failed": "Creazione del progetto non riuscita", + "Set security, communication and access rules for incoming and outgoing traffic": "Impostare le regole di sicurezza, comunicazione e accesso per il traffico in ingresso e in uscita", + "Allow traffic within same namespace": "Consenti traffico all'interno dello stesso spazio dei nomi", + "Allow all traffic": "Consenti tutto il traffico", + "Deny all traffic": "Nega tutto il traffico", + "Review Project Configuration": "Esamina configurazione progetto", + "Please review all the settings before creating your AKS project": "Esaminare tutte le impostazioni prima di creare il progetto del servizio Azure Kubernetes", + "Project Basics": "Dati principali del progetto", + "Description": "Descrizione", + "No description provided": "Nessuna descrizione specificata", + "Ingress Policy": "Criteri di ingresso", + "Egress Policy": "Criteri di uscita", + "CPU": "CPU", + "Requests": "Richieste", + "Limits": "Limiti", + "Memory": "Memoria", + "Access Control ({{count}} assignee)_one": "Controllo di accesso ({{count}} assegnatario)", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Controllo di accesso ({{count}} assegnatari)", + "Not specified": "Non specificato", + "Select an option": "Selezionare un'opzione", + "No options": "Nessuna opzione", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Avvio della creazione del progetto", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Timeout della creazione del progetto dopo 10 minuti. Verificare se lo spazio dei nomi è stato creato e riprovare.", + "Initiating managed namespace creation": "Avvio della creazione dello spazio dei nomi gestito", + "Namespace creation failed: {{message}}": "Creazione dello spazio dei nomi non riuscita: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Creazione dello spazio dei nomi avviata. Monitoraggio dello stato di creazione", + "Waiting for namespace to propagate": "In attesa della propagazione dello spazio dei nomi", + "Namespace status check failed: {{message}}": "Controllo dello stato dello spazio dei nomi non riuscito: {{message}}", + "Waiting for namespace to be created": "In attesa della creazione dello spazio dei nomi", + "Namespace status verification failed: {{message}}": "Verifica dello stato dello spazio dei nomi non riuscita: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "L'API di creazione dello spazio dei nomi è riuscita, si procede con le assegnazioni utente", + "Namespace creation completed successfully! Adding user access": "Creazione dello spazio dei nomi completata. Aggiunta dell'accesso utente", + "User assignment completed with errors": "Assegnazione utente completata con errori", + "Project creation completed successfully!": "Creazione del progetto completata correttamente.", + "Performing final status verification": "Esecuzione della verifica dello stato finale", + "Final status check failed: {{message}}": "Controllo dello stato finale non riuscito: {{message}}", + "Final status verification failed: {{message}}": "Verifica dello stato finale non riuscita: {{message}}", + "All verifications completed successfully!": "Tutte le verifiche sono state completate.", + "Failed to create project": "Non è stato possibile creare il progetto", + "A cluster must be selected": "È necessario selezionare un cluster", + "Namespace name is required": "Il nome dello spazio dei nomi è obbligatorio", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Il nome dello spazio dei nomi deve contenere solo lettere minuscole, numeri e trattini e deve iniziare e terminare con un carattere alfanumerico", + "Namespace name must be 63 characters or fewer": "Il nome dello spazio dei nomi deve contenere al massimo 63 caratteri", + "Creating namespace": "Creazione dello spazio dei nomi", + "Updating local settings": "Aggiornamento delle impostazioni locali", + "Namespace created successfully!": "Lo spazio dei nomi è stato creato.", + "Failed to create namespace": "Non è possibile creare lo spazio dei nomi", + "No clusters found. Register a cluster first.": "Nessun cluster trovato. Registrare prima un cluster.", + "Namespace Name": "Nome spazio dei nomi", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Deve contenere solo lettere minuscole, numeri e trattini, oltre a iniziare e terminare con un carattere alfanumerico", + "The namespace will be created on the selected cluster and set up as a project": "Lo spazio dei nomi verrà creato nel cluster selezionato e configurato come progetto", + "Type": "Tipo", + "Regular Kubernetes namespace": "Spazio dei nomi Kubernetes normale", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Verrà creato un nuovo spazio dei nomi nel cluster con le etichette di progetto applicate. Verrà visualizzato immediatamente nell'elenco di progetti.", + "Create New Namespace": "Crea nuovo spazio dei nomi", + "Create a new namespace on an existing cluster and set it up as a project": "Creare un nuovo spazio dei nomi in un cluster esistente e configurarlo come progetto", + "Creating Namespace": "Creazione dello spazio dei nomi", + "Namespace Creation Failed": "Creazione dello spazio dei nomi non riuscita", + "Namespace Created Successfully!": "Lo spazio dei nomi è stato creato.", + "Your project \"{{projectName}}\" is ready to use.": "Il progetto \"{{projectName}}\" è pronto per l'uso.", + "Go To Projects": "Vai ai progetti", + "Create Namespace": "Crea spazio dei nomi", + "Delete project": "Elimina progetto", "Delete Project": "Elimina progetto", + "Are you sure you want to delete project \"{{projectId}}\"?": "Eliminare il progetto \"{{projectId}}\"?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Per impostazione predefinita, verranno rimosse le etichette dello spazio dei nomi gestito di Azure e del progetto dagli spazi dei nomi seguenti:", + "Also delete the namespaces (this will remove all resources within them)": "Eliminare anche gli spazi dei nomi (verranno rimosse tutte le risorse al loro interno)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Avviso: questa azione non può essere annullata. Tutte le risorse in questi spazi dei nomi verranno eliminate definitivamente.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Nota: per gli spazi dei nomi gestiti dal servizio Azure Kubernetes, la gestione ARM di Azure verrà rimossa automaticamente.", "Delete Project & Namespaces": "Elimina progetto e spazi dei nomi", - "Deleted project {{ projectId }}.": "Progetto eliminato {{ projectId }}.", "Deleting project {{ projectId }}…": "Eliminazione del progetto {{ projectId }} in corso…", - "Deny all traffic": "Nega tutto il traffico", - "Deploy": "Distribuisci", - "Deploy {{repo}}": "Distribuisci {{repo}}", - "Deploy an application to start viewing metrics.": "Distribuire un'applicazione per iniziare a visualizzare le metriche.", - "Deploy an application to view logs.": "Distribuire un'applicazione per visualizzare i log.", + "Cancelled deletion of project {{ projectId }}.": "L'eliminazione del progetto {{ projectId }} è stata annullata.", + "Deleted project {{ projectId }}.": "Progetto eliminato {{ projectId }}.", + "Error deleting project {{ projectId }}.": "Errore durante l'eliminazione del progetto {{ projectId }}.", "Deploy Application": "Distribuisci applicazione", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Eseguire la distribuzione da Registro Azure Container, Docker Hub o GHCR", + "Failed to load pipeline runs": "Non è possibile caricare le esecuzioni della pipeline", + "Pipeline": "Pipeline", + "Set up your pipeline": "Configura la pipeline", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configurare una pipeline CI/CD per automatizzare le distribuzioni e semplificare il flusso di lavoro", + "Waiting for browser authorization...": "In attesa dell'autorizzazione del browser...", + "Sign in to GitHub to view pipeline runs.": "Accedere a GitHub per visualizzare le esecuzioni della pipeline.", + "Connecting...": "Connessione in corso...", + "No pipeline runs yet.": "Non è ancora stata eseguita alcuna pipeline.", + "View on GitHub": "Visualizza in GitHub", + "View run on GitHub": "Visualizza esecuzione in GitHub", + "Healthy": "Integro", + "Scaled down": "Prestazioni ridotte", + "Degraded": "Ridotto", + "VS Code": "VS Code", + "Manual": "Manuale", + "Manual Deploy": "Distribuzione manuale", + "Deploy {{repo}}": "Distribuisci {{repo}}", "Deploy via Pipeline": "Distribuisci tramite pipeline", - "Deploying": "Distribuzione", + "No deployments found in this namespace.": "Nessuna distribuzione trovata in questo spazio dei nomi.", "Deployment": "Distribuzione", - "Deployment PR": "Richiesta pull di distribuzione", - "Deployment PR Ready": "Richiesta pull di distribuzione pronta", - "Deployment PR reviewed and merged": "Richiesta pull di distribuzione esaminata e unita", - "Deployment source": "Origine distribuzione", - "Description": "Descrizione", - "Deselect All": "Deseleziona tutto", - "Desired Replicas": "Repliche desiderate", - "Discard": "Rimuovi", - "Dismiss": "Chiudi", - "Distributes pods evenly across nodes to improve workload distribution.": "Distribuisce i pod in modo uniforme tra i nodi per migliorare la distribuzione del carico di lavoro.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribuisce i pod in modo uniforme tra nodi, zone o altri domini di topologia per migliorare la distribuzione e la disponibilità dei carichi di lavoro.", - "Done": "Fine", - "Edit Configuration": "Modifica configurazione", + "Source": "Origine", + "Replicas": "Repliche", + "Ready": "Pronto", + "Status": "Stato", + "Actions": "Azioni", "Edit deployment": "Modifica distribuzione", - "Edit HPA Configuration": "Modifica configurazione HPA", - "Edit Manual Scaling Configuration": "Modifica configurazione ridimensionamento manuale", - "Egress Policy": "Criteri di uscita", + "View workflow run": "Visualizza esecuzione del flusso di lavoro", + "Re-deploy": "Ripeti distribuzione", + "Failed to trigger deployment": "Non è possibile attivare la distribuzione", + "Trigger": "Trigger", + "workflow on": "flusso di lavoro su", + "with the following parameters:": "con i parametri seguenti:", + "Namespace": "Spazio dei nomi", + "Sign in": "Accedi", + "GitHub authentication required to trigger deployment.": "Autenticazione GitHub necessaria per attivare la distribuzione.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "L'invio del flusso di lavoro è stato attivato. Controllare GitHub Actions per verificare lo stato di avanzamento.", + "Close": "Chiudi", + "Triggering...": "Attivazione in corso...", + "Deploy": "Distribuisci", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Abilitare GitHub Pipelines in Impostazioni → Funzionalità di anteprima per usare le distribuzioni di pipeline.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Abilitare le pipeline di distribuzione basate su GitHub per i progetti del servizio Azure Kubernetes.", - "Enable Horizontal Pod Autoscaler": "Abilita componente di ridimensionamento automatico dei pod orizzontale", - "Enable liveness probe": "Abilita probe di attività", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Abilitare o disabilitare le funzionalità ancora in fase di sviluppo. Le funzionalità di anteprima potrebbero cambiare o essere rimosse nelle versioni future.", - "Enable pod anti-affinity": "Abilita anti-affinità dei pod", - "Enable public access": "Abilita accesso pubblico", - "Enable readiness probe": "Abilita probe di idoneità", - "Enable resource requests and limits": "Abilita richieste e limiti delle risorse", - "Enable startup probe": "Abilita probe di avvio", - "Enable topology spread constraints": "Abilita vincoli di distribuzione della topologia", - "Enabling Addons...": "Abilitazione dei componenti aggiuntivi in corso...", - "Enabling these addons may incur additional Azure costs.": "L'abilitazione di questi componenti aggiuntivi può comportare costi aggiuntivi di Azure.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Assicurarsi che il numero minimo ≤ massimo di repliche e la CPU di destinazione siano compresi tra il 10% e il 95%.", + "Workloads": "Carichi di lavoro", + "No clusters in this project.": "Nessun cluster nel progetto.", + "Failed to fetch deployments": "Non è stato possibile recuperare le distribuzioni", + "Failed to fetch cluster status": "Non è possibile recuperare lo stato del cluster", + "Configure security context settings for the container.": "Configurare le impostazioni del contesto di sicurezza per il contenitore.", + "Run as non root user": "Esegui come utente non radice", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Assicura che il contenitore venga eseguito come utente non radice (UID != 0) per una maggiore sicurezza. In questo modo si evitano gli attacchi di escalation dei privilegi.", "Ensures the container runs as a non-root user for better security.": "Assicura che il contenitore venga eseguito come utente non radice per una maggiore sicurezza.", - "Ensuring resource group exists...": "Verifica dell'esistenza del gruppo di risorse in corso...", - "Enter a name for your first application to get started with deployment.": "Immettere un nome per la prima applicazione per iniziare a usare la distribuzione.", - "Enter application name": "Immettere il nome dell'applicazione", - "Enter project description": "Immettere la descrizione del progetto", - "Environment Variables": "Variabili di ambiente", - "Error deleting project {{ projectId }}.": "Errore durante l'eliminazione del progetto {{ projectId }}.", - "Error Rate": "Percentuale di errore", - "Failed to apply": "Applicazione non riuscita", - "Failed to apply resources.": "Non è possibile applicare le risorse.", - "Failed to convert namespace: {{message}}": "Non è possibile convertire lo spazio dei nomi: {{message}}", - "Failed to create namespace": "Non è possibile creare lo spazio dei nomi", - "Failed to create project": "Non è stato possibile creare il progetto", - "Failed to enable addon: {{error}}": "Non è possibile abilitare il componente aggiuntivo: {{error}}", - "Failed to enable addons": "Non è possibile abilitare i componenti aggiuntivi", - "Failed to fetch cluster status": "Non è possibile recuperare lo stato del cluster", - "Failed to fetch deployment status": "Non è possibile recuperare lo stato della distribuzione", - "Failed to fetch deployments": "Non è stato possibile recuperare le distribuzioni", - "Failed to fetch managed namespace details": "Non è possibile recuperare i dettagli dello spazio dei nomi gestito", - "Failed to fetch managed namespaces": "Non è possibile recuperare gli spazi dei nomi gestiti", - "Failed to fetch pod status": "Non è possibile recuperare lo stato del pod", - "Failed to fetch service status": "Non è possibile recuperare lo stato del servizio", - "Failed to import any projects. See details below.": "Non è possibile importare alcun progetto. Vedere i dettagli di seguito.", - "Failed to initiate login: {{message}}": "Non è possibile avviare l'accesso: {{message}}", - "Failed to load AKS clusters": "Non è possibile caricare i cluster del servizio Azure Kubernetes", - "Failed to load Azure context": "Non è possibile caricare il contesto di Azure", - "Failed to load pipeline runs": "Non è possibile caricare le esecuzioni della pipeline", - "Failed to load repositories": "Non è possibile caricare i repository", - "Failed to load subscriptions": "Non è stato possibile caricare le sottoscrizioni", - "Failed to merge cluster: {{message}}": "Non è possibile unire il cluster: {{message}}", - "Failed to monitor deployment health": "Non è possibile monitorare l'integrità della distribuzione", - "Failed to register cluster: {{message}}": "Non è possibile registrare il cluster: {{message}}", - "Failed to trigger deployment": "Non è possibile attivare la distribuzione", - "Failed to update managed namespace": "Non è possibile aggiornare lo spazio dei nomi gestito", - "failureThreshold": "failureThreshold", - "Features": "Funzionalità", - "Federated Credential": "Credenziali federate", - "Filter repositories": "Filtra repository", - "Final status check failed: {{message}}": "Controllo dello stato finale non riuscito: {{message}}", - "Final status verification failed: {{message}}": "Verifica dello stato finale non riuscita: {{message}}", - "for full network policy support.": "per il supporto completo dei criteri di rete.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifesti Kubernetes generati (spazio dei nomi: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Autenticazione GitHub necessaria per attivare la distribuzione.", - "GitHub Pipelines": "Pipeline GitHub", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Vai ai progetti", - "Guided configuration for ports, replicas, env, and resources": "Configurazione guidata per porte, repliche, ambiente e risorse", + "Read only root filesystem": "File system radice di sola lettura", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta il file system radice del contenitore come di sola lettura per impedire operazioni di scrittura. Ciò migliora la sicurezza impedendo la modifica dei file di sistema tramite codice dannoso.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta il file system radice del contenitore come di sola lettura per impedire operazioni di scrittura.", + "Allow privilege escalation": "Consenti escalation privilegi", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controlla se un processo può ottenere più privilegi rispetto al processo padre. La disabilitazione di questa opzione (scelta consigliata) impedisce gli attacchi di escalation dei privilegi.", + "Controls whether a process can gain more privileges than its parent process.": "Controlla se un processo può ottenere più privilegi rispetto al processo padre.", + "Enable pod anti-affinity": "Abilita anti-affinità dei pod", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "È preferibile pianificare i pod in nodi diversi per migliorare la disponibilità e la tolleranza di errore. In questo modo è possibile garantire che i pod vengano distribuiti nel cluster.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "È preferibile pianificare i pod in nodi diversi per migliorare la disponibilità e la tolleranza di errore.", + "Enable topology spread constraints": "Abilita vincoli di distribuzione della topologia", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribuisce i pod in modo uniforme tra nodi, zone o altri domini di topologia per migliorare la distribuzione e la disponibilità dei carichi di lavoro.", + "Distributes pods evenly across nodes to improve workload distribution.": "Distribuisce i pod in modo uniforme tra i nodi per migliorare la distribuzione del carico di lavoro.", + "Container image": "Immagine contenitore", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Numero di repliche dei pod da eseguire. Più repliche offrono disponibilità e distribuzione del carico migliori.", + "Continue": "Continua", + "Configure Container Deployment": "Configura distribuzione contenitore", + "Networking": "Rete", "Healthchecks": "Controlli di integrità", - "Healthy": "Integro", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Frequenza (in secondi) per eseguire il probe di attività. L'impostazione predefinita è 10 secondi.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Frequenza (in secondi) per eseguire il probe di idoneità. L'impostazione predefinita è 10 secondi.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Frequenza (in secondi) di esecuzione del probe di avvio. L'impostazione predefinita è 10 secondi.", - "HPA scales pods based on CPU utilization.": "HPA ridimensiona i pod in base all'utilizzo della CPU.", - "Identity Resource Group": "Gruppo di risorse dell'identità", - "Import AKS Projects": "Importa progetti servizio Azure Kubernetes", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importare spazi dei nomi gestiti esistenti e spazi dei nomi regolari come progetti. Gli spazi dei nomi che non sono ancora progetti desktop del servizio Azure Kubernetes verranno convertiti aggiungendo l'etichetta di progetto necessaria.", - "Import Selected Projects": "Importa progetti selezionati", - "Importing": "Importazione", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importazione di {{current}} di {{total}}: {{name}} da {{clusterName}}", - "in resource group": "nel gruppo di risorse", + "Resource Limits": "Limiti delle risorse", + "Environment Variables": "Variabili di ambiente", + "Workload Identity": "", + "Advanced": "Avanzate", "Information about {{label}}": "Informazioni su {{label}}", - "Information about CPU limit": "Informazioni sul limite di CPU", - "Information about CPU request": "Informazioni sulla richiesta di CPU", - "Information about memory limit": "Informazioni sul limite di memoria", - "Information about memory request": "Informazioni sulla richiesta di memoria", - "Information about target CPU utilization": "Informazioni sull'utilizzo della CPU di destinazione", - "Ingress Policy": "Criteri di ingresso", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Inizializzazione in corso...", - "Initiating Azure login": "Avvio dell'accesso ad Azure", - "Initiating managed namespace creation": "Avvio della creazione dello spazio dei nomi gestito", - "Install Extension": "Installa estensione", - "Install GitHub App": "Installa app GitHub", - "Installing": "Installazione", - "Internal only": "Solo interno", - "Invalid YAML": "YAML non valido", - "Invalid YAML: List item missing required field (kind)": "YAML non valido: campo obbligatorio mancante per l'elemento elenco (kind)", - "Invalid YAML: List item missing required field (metadata.name)": "YAML non valido: campo obbligatorio mancante per l'elemento elenco (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "YAML non valido: la risorsa elenco deve avere un campo \"items\" della matrice", - "Invalid YAML: missing required field (kind)": "YAML non valido: campo obbligatorio mancante (kind)", - "Invalid YAML: missing required field (metadata.name)": "YAML non valido: campo obbligatorio mancante (metadata.name)", - "Issue {{number}}": "Problema {{number}}", - "Issues": "Problemi", - "just now": "adesso", - "KEDA (Event-Driven Autoscaling)": "KEDA (ridimensionamento automatico guidato dagli eventi)", - "Keep Going": "Continua", + "Kubernetes YAML": "YAML Kubernetes", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Aggiungere uno o più manifesti Kubernetes. Caricare i file per popolare l'editor o incollare/modificare direttamente di seguito.", + "Upload files": "Carica file", + "Clear editor": "Cancella editor", + "Review & Deploy": "Rivedi e distribuisci", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifesti Kubernetes generati (spazio dei nomi: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Risorse da distribuire ({{count}} oggetto)", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Risorse da distribuire ({{count}} oggetto)", + "namespace: {{namespace}}": "spazio dei nomi: {{namespace}}", + "Configure": "Configura", + "Deploying": "Distribuzione", "Key": "Chiave", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes riavvia il contenitore se il controllo ha esito negativo ripetutamente.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Valore", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "rimuovere", + "Add variable": "Aggiungi variabile", + "Configure container health probes.": "Configurare i probe di integrità del contenitore.", + "Manually configure settings": "Configura manualmente le impostazioni", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Per impostazione predefinita, i probe usano HTTP GET nel percorso radice con valori predefiniti ragionevoli. Abilitare questa opzione per personalizzare le impostazioni del probe.", + "Enable liveness probe": "Abilita probe di attività", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes riavvia il contenitore se il controllo ha esito negativo ripetutamente. Usato per rilevare e ripristinare i deadlock o i contenitori che non rispondono.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes disabilita temporaneamente l'attività e l'idoneità fino al completamento dell'avvio.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes disabilita temporaneamente l'attività e l'idoneità fino al completamento dell'avvio. Utile per i contenitori che richiedono molto tempo per l'avvio.", - "Kubernetes Version": "Versione Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes non invierà traffico al pod fino al completamento di questo controllo.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes non invierà traffico al pod fino al completamento di questo controllo. Usato per indicare quando un contenitore è pronto per accettare il traffico.", - "Kubernetes YAML": "YAML Kubernetes", - "less than a minute": "meno di un minuto", - "Limits": "Limiti", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes riavvia il contenitore se il controllo ha esito negativo ripetutamente.", "Liveness path": "Percorso di attività", - "Loading": "Caricamento in corso", - "Loading AKS clusters": "Caricamento dei cluster del servizio Azure Kubernetes", - "Loading Azure account information": "Caricamento delle informazioni sull'account Azure", - "Loading Azure context...": "Caricamento del contesto di Azure in corso...", - "Loading clusters": "Caricamento dei cluster", - "Loading configuration...": "Caricamento della configurazione in corso...", - "Loading deployments": "Caricamento delle distribuzioni", - "Loading metrics": "Caricamento delle metriche", - "Loading scaling metrics from Prometheus": "Caricamento delle metriche di ridimensionamento da Prometheus", - "Loading subscriptions": "Caricamento delle sottoscrizioni", - "Loading...": "Caricamento in corso...", - "Location": "Posizione", - "Log out": "Disconnetti", - "Logged in as": "Accesso eseguito come", - "Logging out": "Disconnessione", - "Login successful! Redirecting": "Accesso riuscito. Reindirizzamento", - "Login timeout. Please try again.": "Timeout di accesso. Riprovare.", - "Managed Identity": "Identità gestita", - "managed namespaces only": "solo spazi dei nomi gestiti", - "ManagedNamespacePreview feature registered successfully!": "La funzionalità ManagedNamespacePreview è stata registrata.", - "Manual": "Manuale", - "Manual Deploy": "Distribuzione manuale", - "Manually configure settings": "Configura manualmente le impostazioni", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Percorso HTTP per verificare l'attività (ad esempio,/healthz). Il probe esegue una richiesta HTTP GET su questo percorso.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Numero di secondi dopo l'avvio del contenitore prima dell'avvio dei probe di attività.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Frequenza (in secondi) per eseguire il probe di attività. L'impostazione predefinita è 10 secondi.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Numero di secondi prima del timeout del probe. Il valore predefinito è 1 secondo.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Quando un probe ha esito negativo, Kubernetes proverà questa operazione molte volte prima di rinunciare e riavviare il contenitore.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Numero minimo di operazioni riuscite consecutive affinché il probe venga considerato riuscito dopo un errore. L'impostazione predefinita è 1.", + "Enable readiness probe": "Abilita probe di idoneità", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes non invierà traffico al pod fino al completamento di questo controllo. Usato per indicare quando un contenitore è pronto per accettare il traffico.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes non invierà traffico al pod fino al completamento di questo controllo.", + "Readiness path": "Percorso di conformità", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Percorso HTTP per verificare l'idoneità (ad esempio, /ready). Il probe esegue una richiesta HTTP GET su questo percorso.", + "Number of seconds after the container has started before readiness probes are initiated.": "Numero di secondi dopo l'avvio del contenitore prima dell'avvio dei probe di idoneità.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Frequenza (in secondi) per eseguire il probe di idoneità. L'impostazione predefinita è 10 secondi.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Quando un probe ha esito negativo, Kubernetes proverà questa operazione molte volte prima di contrassegnare il pod come non pronto.", + "Enable startup probe": "Abilita probe di avvio", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes disabilita temporaneamente l'attività e l'idoneità fino al completamento dell'avvio. Utile per i contenitori che richiedono molto tempo per l'avvio.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes disabilita temporaneamente l'attività e l'idoneità fino al completamento dell'avvio.", + "Startup path": "Percorso di avvio", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Percorso HTTP da controllare per l'avvio (ad esempio, /startup). Il probe esegue una richiesta HTTP GET su questo percorso.", + "Number of seconds after the container has started before startup probes are initiated.": "Numero di secondi dopo l'avvio del contenitore prima dell'inizializzazione dei probe di avvio.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Frequenza (in secondi) di esecuzione del probe di avvio. L'impostazione predefinita è 10 secondi.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Quando un probe ha esito negativo, Kubernetes proverà a eseguire questa operazione molte volte prima di rinunciare. Per i probe di avvio, questo determina il tempo di attesa prima del riavvio.", + "Enable Horizontal Pod Autoscaler": "Abilita componente di ridimensionamento automatico dei pod orizzontale", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Ridimensiona automaticamente il numero di pod in base all'utilizzo della CPU. HPA aumenterà i pod quando l'utilizzo della CPU supera l'impostazione target e diminuirà quando è inferiore.", + "HPA scales pods based on CPU utilization.": "HPA ridimensiona i pod in base all'utilizzo della CPU.", + "Min replicas": "Numero minimo di repliche", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Numero minimo di repliche di pod che verranno mantenute dall'HPA, anche quando l'utilizzo della CPU è basso.", "Max replicas": "Numero massimo di repliche", - "Maximum CPU allowed (1000m = 1 CPU core)": "CPU massima consentita (1000 m = 1 core CPU)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Memoria massima consentita (1024 MiB = 1 GiB)", - "Maximum Replicas": "Numero massimo di repliche", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Numero massimo di repliche dei pod a cui l'HPA può arrivare quando l'utilizzo della CPU è elevato.", + "Target CPU utilization": "Utilizzo della CPU di destinazione", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Percentuale media di utilizzo della CPU di destinazione in tutti i pod. L'HPA aumenterà quando l'utilizzo della CPU supera questo valore e diminuirà quando è inferiore.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Assicurarsi che il numero minimo ≤ massimo di repliche e la CPU di destinazione siano compresi tra il 10% e il 95%.", + "Target port": "Porta di destinazione", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Numero di porta su cui è in ascolto il contenitore. Si tratta della porta all'interno del contenitore in cui viene eseguita l'applicazione.", + "Service port": "Porta del servizio", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Numero di porta esposto dal servizio Kubernetes. Il traffico verso questa porta viene inoltrato alla porta di destinazione.", + "Use custom service port": "Usa porta del servizio personalizzata", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Per impostazione predefinita, la porta del servizio corrisponde alla porta di destinazione. Abilitare questa opzione per usare una porta diversa per il servizio.", + "Service type": "Tipo di servizio", + "Internal only": "Solo interno", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Usare ClusterIP. Ideale per i servizi raggiungibili solo all'interno del cluster.", + "Enable public access": "Abilita accesso pubblico", + "Creates a LoadBalancer to expose the application to the internet.": "Crea un LoadBalancer per esporre l'applicazione a Internet.", + "Enable resource requests and limits": "Abilita richieste e limiti delle risorse", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Impostare le richieste di CPU e memoria (risorse garantite) e i limiti (risorse massime) per controllare l'allocazione delle risorse e impedire ai contenitori di utilizzare troppe risorse del cluster.", + "CPU request": "Richiesta CPU", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Quantità minima di CPU garantita per il contenitore. Kubernetes pianificherà il pod per un nodo con almeno questa quantità di CPU disponibile.", + "millicores": "millicore", + "CPU limit": "Limite CPU", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Quantità massima di CPU che il contenitore può usare. Se viene superata, il contenitore verrà limitato.", + "Memory request": "Richiesta memoria", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Quantità minima di memoria garantita per il contenitore. Kubernetes pianificherà il pod per un nodo con almeno questa quantità di memoria disponibile.", "mebibytes": "mebibyte", - "Memory": "Memoria", "Memory limit": "Limite di memoria", - "Memory Limits": "Limiti memoria", - "Memory request": "Richiesta memoria", - "Memory Requests": "Richieste memoria", - "Memory Resources": "Risorse di memoria", - "Memory Usage": "Utilizzo memoria", - "Memory utilization": "Utilizzo della memoria", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Unione del cluster {{clusterName}} ({{count}} spazi dei nomi)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Unione del cluster {{clusterName}} ({{count}} spazi dei nomi)", - "Metrics": "Metrica", - "Metrics refreshed every 30 seconds": "Metriche aggiornate ogni 30 secondi", - "Metrics Unavailable": "Metriche non disponibili", - "millicores": "millicore", - "Min replicas": "Numero minimo di repliche", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Numero minimo di operazioni riuscite consecutive affinché il probe venga considerato riuscito dopo un errore. L'impostazione predefinita è 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU minima garantita (1000 m = 1 core CPU)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memoria minima garantita (1024 MiB = 1 GiB)", - "Minimum Replicas": "Numero minimo di repliche", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contesto di Azure obbligatorio mancante. Assicurarsi di aver eseguito l'accesso e che il cluster sia associato a una sottoscrizione, un gruppo di risorse e un tenant validi.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta il file system radice del contenitore come di sola lettura per impedire operazioni di scrittura.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta il file system radice del contenitore come di sola lettura per impedire operazioni di scrittura. Ciò migliora la sicurezza impedendo la modifica dei file di sistema tramite codice dannoso.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Supporto per più file (distribuzioni, servizi, ingresso e così via)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Deve contenere solo lettere minuscole, numeri e trattini, oltre a iniziare e terminare con un carattere alfanumerico", - "Name": "Nome", - "Namespace": "Spazio dei nomi", - "Namespace '{{name}}' converted and imported as project": "Spazio dei nomi '{{name}}' convertito e importato come progetto", - "Namespace created successfully!": "Lo spazio dei nomi è stato creato.", - "Namespace Created Successfully!": "Lo spazio dei nomi è stato creato.", - "Namespace creation API succeeded, proceeding with user assignments": "L'API di creazione dello spazio dei nomi è riuscita, si procede con le assegnazioni utente", - "Namespace creation completed successfully! Adding user access": "Creazione dello spazio dei nomi completata. Aggiunta dell'accesso utente", - "Namespace Creation Failed": "Creazione dello spazio dei nomi non riuscita", - "Namespace creation failed: {{message}}": "Creazione dello spazio dei nomi non riuscita: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Creazione dello spazio dei nomi avviata. Monitoraggio dello stato di creazione", - "Namespace Name": "Nome spazio dei nomi", - "Namespace name is required": "Il nome dello spazio dei nomi è obbligatorio", - "Namespace name must be 63 characters or fewer": "Il nome dello spazio dei nomi deve contenere al massimo 63 caratteri", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Il nome dello spazio dei nomi deve contenere solo lettere minuscole, numeri e trattini e deve iniziare e terminare con un carattere alfanumerico", - "Namespace status check failed: {{message}}": "Controllo dello stato dello spazio dei nomi non riuscito: {{message}}", - "Namespace status verification failed: {{message}}": "Verifica dello stato dello spazio dei nomi non riuscita: {{message}}", - "namespace: {{namespace}}": "spazio dei nomi: {{namespace}}", - "Namespaces to convert:": "Spazi dei nomi da convertire:", - "Network I/O": "I/O rete", - "Network In": "Rete in ingresso", - "Network Out": "Rete in uscita", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Non è possibile modificare il motore dei criteri di rete dopo la creazione del cluster. Crea un nuovo cluster con", - "Networking": "Rete", - "Networking Policies": "Criteri di rete", - "New Project": "Nuovo progetto", - "Next": "Avanti", - "No": "No", - "No AKS clusters found in this subscription.": "Non sono stati trovati cluster del servizio Azure Kubernetes in questa sottoscrizione.", - "No cluster is associated with this project.": "Nessun cluster associato a questo progetto.", - "No clusters found. Register a cluster first.": "Nessun cluster trovato. Registrare prima un cluster.", - "No clusters in this project.": "Nessun cluster nel progetto.", - "No clusters with Azure Entra ID authentication found for this subscription": "Non sono stati trovati cluster con l'autenticazione Entra ID di Azure per questa sottoscrizione", - "No data available": "Nessun dato disponibile", - "No deployments found": "Nessuna distribuzione trovata", - "No Deployments Found": "Non sono state trovate distribuzioni", - "No deployments found in this namespace.": "Nessuna distribuzione trovata in questo spazio dei nomi.", - "No description provided": "Nessuna descrizione specificata", - "No eligible clusters found in this subscription.": "Non sono stati trovati cluster idonei in questa sottoscrizione.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Quantità massima di memoria che il contenitore può usare. Se viene superata, il contenitore verrà terminato (OOMKilled).", + "Container Image": "Immagine del contenitore", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Eseguire la distribuzione da Registro Azure Container, Docker Hub o GHCR", + "Auto-generated Deployment and Service manifests": "Manifesti di distribuzione e servizio generati automaticamente", + "Guided configuration for ports, replicas, env, and resources": "Configurazione guidata per porte, repliche, ambiente e risorse", "No Kubernetes expertise required to get started": "Non sono necessarie competenze di Kubernetes per iniziare", - "No options": "Nessuna opzione", - "No pipeline runs yet.": "Non è ancora stata eseguita alcuna pipeline.", - "No pods found for deployment \"{{name}}\"": "Nessun pod trovato per la distribuzione \"{{name}}\"", - "No repositories found": "Non sono stati trovati repository", - "No repositories match your filter": "Nessun repository corrispondente al filtro", - "No response time data available": "Non sono disponibili dati sul tempo di risposta", - "No scaling data available": "Nessun dato di ridimensionamento disponibile", - "No subscriptions found": "Nessuna sottoscrizione trovata", - "Not specified": "Non specificato", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Nota: per gli spazi dei nomi gestiti dal servizio Azure Kubernetes, la gestione ARM di Azure verrà rimossa automaticamente.", - "Number of Replicas": "Numero di repliche", - "Number of seconds after the container has started before liveness probes are initiated.": "Numero di secondi dopo l'avvio del contenitore prima dell'avvio dei probe di attività.", - "Number of seconds after the container has started before readiness probes are initiated.": "Numero di secondi dopo l'avvio del contenitore prima dell'avvio dei probe di idoneità.", - "Number of seconds after the container has started before startup probes are initiated.": "Numero di secondi dopo l'avvio del contenitore prima dell'inizializzazione dei probe di avvio.", - "Number of seconds after which the probe times out. Default is 1 second.": "Numero di secondi prima del timeout del probe. Il valore predefinito è 1 secondo.", - "OIDC trust for": "Attendibilità OIDC per", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Dopo che l'agente ha creato la richiesta pull di distribuzione, esaminare i file generati e unirli per avviare la pipeline di distribuzione", - "Only clusters with Azure Entra ID authentication are shown.": "Vengono visualizzati solo i cluster con l'autenticazione con Entra ID di Azure.", - "Performing final status verification": "Esecuzione della verifica dello stato finale", - "periodSeconds": "periodSeconds", - "Pipeline": "Pipeline", - "Pipeline configured": "Pipeline configurata", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Completare l'autenticazione nel browser. Questa finestra verrà reindirizzata automaticamente una volta completato l'accesso.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Registralo per continuare.", - "Please review all the settings before creating your AKS project": "Esaminare tutte le impostazioni prima di creare il progetto del servizio Azure Kubernetes", - "Please select a deployment to view metrics": "Selezionare una distribuzione per visualizzare le metriche", - "Please select a subscription first": "Selezionare prima una sottoscrizione", - "Please select at least one namespace to import": "Selezionare almeno uno spazio dei nomi da importare", - "Please sign in to Azure to continue.": "Accedere ad Azure per continuare.", - "Pod Details": "Dettagli del pod", - "Pod Name": "Nome pod", - "PR {{number}}": "Richiesta pull {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "È preferibile pianificare i pod in nodi diversi per migliorare la disponibilità e la tolleranza di errore.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "È preferibile pianificare i pod in nodi diversi per migliorare la disponibilità e la tolleranza di errore. In questo modo è possibile garantire che i pod vengano distribuiti nel cluster.", + "Bring your own Kubernetes manifests to deploy": "Distribuire manifesti Kubernetes personali", + "Use existing manifests for full control": "Usare i manifesti esistenti per il controllo completo", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Supporto per più file (distribuzioni, servizi, ingresso e così via)", "Preview and basic validation before apply": "Anteprima e convalida di base prima dell'applicazione", - "Preview Features": "Funzionalità di anteprima", - "Project '{{name}}' successfully imported": "Il progetto \"{{name}}\" è stato importato", - "Project Basics": "Dati principali del progetto", - "Project Created Successfully!": "Il progetto è stato creato correttamente.", - "Project creation completed successfully!": "Creazione del progetto completata correttamente.", - "Project Creation Failed": "Creazione del progetto non riuscita", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Timeout della creazione del progetto dopo 10 minuti. Verificare se lo spazio dei nomi è stato creato e riprovare.", - "Project Description": "Descrizione del progetto", - "Project Name": "Nome progetto", - "Project name is available": "Il nome del progetto è disponibile", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Il nome del progetto deve contenere solo lettere minuscole, numeri e trattini (senza spazi)", - "Project Status": "Stato del progetto", - "Pull requests": "Richieste pull", + "Select Source": "Seleziona origine", + "Choose a source for your deployment (container image, repo, etc.).": "Scegliere un'origine per la distribuzione (immagine del contenitore, repository e così via).", + "Deployment source": "Origine distribuzione", + "Features": "Funzionalità", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Gruppo di risorse dell'identità", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Verifica dell'identità esistente in corso...", + "Creating managed identity...": "Creazione dell'identità gestita in corso...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "YAML non valido: campo obbligatorio mancante (kind)", + "Invalid YAML: List resource must have an array \"items\" field": "YAML non valido: la risorsa elenco deve avere un campo \"items\" della matrice", + "Invalid YAML: List item missing required field (kind)": "YAML non valido: campo obbligatorio mancante per l'elemento elenco (kind)", + "Invalid YAML: List item missing required field (metadata.name)": "YAML non valido: campo obbligatorio mancante per l'elemento elenco (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "YAML non valido: campo obbligatorio mancante (metadata.name)", + "Invalid YAML": "YAML non valido", + "Validation failed": "Convalida non riuscita", + "Failed to apply": "Applicazione non riuscita", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "L'applicazione di {{applied}} risorsa/e è stata completata ma si è verificato un errore per {{failed}}:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "Applicazione di {{count}} risorsa/e completata.", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "Applicazione di {{count}} risorsa/e completata.", + "Failed to apply resources.": "Non è possibile applicare le risorse.", + "unnamed": "senza nome", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Contenuti", "Push agent config files": "Push dei file di configurazione dell'agente", - "Re-deploy": "Ripeti distribuzione", - "Read only root filesystem": "File system radice di sola lettura", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Accesso in sola lettura alla maggior parte degli oggetti in uno spazio dei nomi. Non è possibile visualizzare ruoli, associazioni di ruoli o segreti.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Accesso in lettura/scrittura alla maggior parte degli oggetti in uno spazio dei nomi. Non è possibile visualizzare o modificare ruoli o associazioni di ruolo. Può accedere ai segreti ed eseguire pod come qualsiasi ServiceAccount nello spazio dei nomi.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Accesso in lettura/scrittura alla maggior parte delle risorse in uno spazio dei nomi. Può creare ruoli e associazioni di ruoli all'interno dello spazio dei nomi. Non è possibile scrivere nella quota di risorse o nello spazio dei nomi stesso.", - "Readiness path": "Percorso di conformità", - "Ready": "Pronto", - "Refresh": "Aggiorna", - "Refreshing": "Aggiornamento", - "Register AKS Cluster": "Registra cluster del servizio Azure Kubernetes", - "Register Cluster": "Registra cluster", - "Register ManagedNamespacePreview Feature": "Registra funzionalità ManagedNamespacePreview", - "Registering": "Registrazione", - "Registering cluster": "Registrazione del cluster", - "Regular": "Normale", - "Regular Kubernetes namespace": "Spazio dei nomi Kubernetes normale", - "remove": "rimuovere", - "Remove assignee": "Rimuovi assegnatario", - "Reopen install page": "Riapri la pagina di installazione", - "Replica Bounds": "Limiti di replica", - "Replicas": "Repliche", - "Request & error rate": "Percentuale di richieste ed errori", - "Request Rate": "Velocità richiesta", - "Requests": "Richieste", - "Required Permissions": "Autorizzazioni necessarie", - "Resource Group": "Gruppo di risorse", - "Resource group where the managed identity will be created": "Gruppo di risorse in cui verrà creata l'identità gestita", - "Resource Limits": "Limiti delle risorse", - "Resource Usage": "Utilizzo risorse", - "Resources to be deployed ({{count}} object)_one": "Risorse da distribuire ({{count}} oggetto)", - "Resources to be deployed ({{count}} object)_other": "Risorse da distribuire ({{count}} oggetto)", - "Response Time": "Tempo di risposta", - "Restarts": "Riavvii", - "Retry": "Riprova", - "Review": "Verifica", - "Review & Deploy": "Rivedi e distribuisci", - "Review & Merge": "Rivedi e unisci", - "Review and merge the setup PR to enable the Copilot agent.": "Esaminare e unire la richiesta pull di configurazione per abilitare l'agente Copilot.", - "Review on GitHub": "Rivedi in GitHub", - "Review Project Configuration": "Esamina configurazione progetto", - "Role": "Ruolo", - "Role Assignment": "Assegnazione di ruolo", - "Run as non root user": "Esegui come utente non radice", + "Workflows": "Flussi di lavoro", + "Create setup workflow in .github/workflows/": "Creare il flusso di lavoro di configurazione in .github/workflows/", + "Pull requests": "Richieste pull", + "Create deployment PRs": "Crea richieste pull di distribuzione", + "Issues": "Problemi", + "Track agent progress": "Monitora stato agente", "Run deployment workflows": "Esegui flussi di lavoro di distribuzione", - "Save": "Salva", - "Scaled down": "Prestazioni ridotte", - "Scaling": "Scalabilità in corso", - "Scaling Chart Unavailable": "Grafico di ridimensionamento non disponibile", - "Scaling History (Last 24 Hours)": "Cronologia di ridimensionamento (ultime 24 ore)", - "Scaling Mode": "Modalità di ridimensionamento", - "Scaling Overview": "Panoramica del ridimensionamento", - "Search clusters": "Cerca cluster", - "Search subscriptions": "Cerca sottoscrizioni", - "Select a cluster": "Seleziona un cluster", - "Select a deployment to view metrics": "Selezionare una distribuzione per visualizzare le metriche", - "Select a deployment to view scaling metrics": "Selezionare una distribuzione per visualizzare le metriche di ridimensionamento", - "Select a subscription": "Selezionare una sottoscrizione", - "Select All": "Seleziona tutto", - "Select an AKS cluster": "Selezionare un cluster del servizio Azure Kubernetes", - "Select an Azure subscription": "Consente di selezionare una sottoscrizione di Azure", - "Select an option": "Selezionare un'opzione", - "Select Deployment": "Seleziona distribuzione", - "Select Namespaces to Import": "Seleziona spazi dei nomi da importare", + "Connect to GitHub": "Connetti a GitHub", + "Connected to '{{username}}'.": "Connesso a \"{{username}}\".", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorizzare Il desktop del servizio Azure Kubernetes a creare pipeline di distribuzione nel repository.", + "Required Permissions": "Autorizzazioni necessarie", + "Complete authorization on your browser screen": "Completare l'autorizzazione nella schermata del browser", + "Connect": "Connetti", "Select repository": "Seleziona repository", - "Select Source": "Seleziona origine", - "Selected Cluster Details": "Dettagli cluster selezionato", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Cluster selezionato mancante da kubeconfig. Registrarlo prima di procedere.", - "Service port": "Porta del servizio", - "Service type": "Tipo di servizio", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Impostare le richieste di CPU e memoria (risorse garantite) e i limiti (risorse massime) per controllare l'allocazione delle risorse e impedire ai contenitori di utilizzare troppe risorse del cluster.", - "Set quota limits to prevent overuse and maintain cluster stability": "Impostare i limiti di quota per evitare l'utilizzo eccessivo e mantenere la stabilità del cluster", - "Set security, communication and access rules for incoming and outgoing traffic": "Impostare le regole di sicurezza, comunicazione e accesso per il traffico in ingresso e in uscita", - "Set the desired number of pod replicas for this deployment": "Impostare il numero desiderato di repliche dei pod per questa distribuzione", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configurare una pipeline CI/CD per automatizzare le distribuzioni e semplificare il flusso di lavoro", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Impostare e configurare un nuovo progetto nel servizio Azure Kubernetes", - "Set up Copilot Agent": "Configura l'agente Copilot", - "Set up your pipeline": "Configura la pipeline", - "Setting up Copilot agent...": "Configurazione dell'agente Copilot in corso...", - "Setup PR Created": "Richiesta pull di configurazione creata", - "Setup PR reviewed and merged": "Richiesta pull di configurazione esaminata e unita", - "Sign in": "Accedi", - "Sign in to GitHub": "Accedi a GitHub", - "Sign in to GitHub to view pipeline runs.": "Accedere a GitHub per visualizzare le esecuzioni della pipeline.", - "Sign in with Azure": "Accedi con Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Accedere con l'account Azure per gestire i cluster e le risorse del servizio Azure Kubernetes", - "Source": "Origine", - "Starting project creation": "Avvio della creazione del progetto", - "Startup path": "Percorso di avvio", - "Status": "Stato", - "Subscription": "Sottoscrizione", - "Successfully merged {{count}} cluster(s)_one": "L'unione di {{count}} cluster è stata completata", - "Successfully merged {{count}} cluster(s)_other": "L'unione di {{count}} cluster è stata completata", - "successThreshold": "successThreshold", - "Target CPU utilization": "Utilizzo della CPU di destinazione", - "Target CPU Utilization (%)": "Utilizzo CPU di destinazione (%)", - "Target port": "Porta di destinazione", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "L'agente ha creato la richiesta pull di distribuzione. Esaminare i file generati e unirli per avviare la pipeline di distribuzione.", - "The agent is creating the setup PR to enable the Copilot agent.": "L'agente sta creando la richiesta pull di configurazione per abilitare l'agente Copilot.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Completare l'installazione nel browser. L'aggiornamento verrà eseguito automaticamente dopo l'installazione dell'app in {{repoName}}.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Per continuare, è necessario installare l'app GitHub desktop del servizio Azure Kubernetes in {{repoName}}.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "L'estensione aks-preview è necessaria per creare spazi dei nomi gestiti. Installarla per continuare.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "L'agente di codifica di Copilot sta analizzando il repository e generando una richiesta pull di distribuzione con Dockerfile, manifesti Kubernetes e un flusso di lavoro GitHub Actions.", - "The following addons can be enabled on this cluster:": "In questo cluster è possibile abilitare i componenti aggiuntivi seguenti:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Verranno create le risorse di Azure seguenti per consentire alla pipeline di GitHub Actions di eseguire l'autenticazione con il cluster del servizio Azure Kubernetes:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Gli spazi dei nomi seguenti verranno convertiti in progetti desktop del servizio Azure Kubernetes aggiungendo queste etichette:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Percorso HTTP per verificare l'attività (ad esempio,/healthz). Il probe esegue una richiesta HTTP GET su questo percorso.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Percorso HTTP per verificare l'idoneità (ad esempio, /ready). Il probe esegue una richiesta HTTP GET su questo percorso.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Percorso HTTP da controllare per l'avvio (ad esempio, /startup). Il probe esegue una richiesta HTTP GET su questo percorso.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "La funzionalità ManagedNamespacePreview deve essere registrata per creare spazi dei nomi gestiti.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Quantità massima di CPU che il contenitore può usare. Se viene superata, il contenitore verrà limitato.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Quantità massima di memoria che il contenitore può usare. Se viene superata, il contenitore verrà terminato (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Numero massimo di repliche dei pod a cui l'HPA può arrivare quando l'utilizzo della CPU è elevato.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Quantità minima di CPU garantita per il contenitore. Kubernetes pianificherà il pod per un nodo con almeno questa quantità di CPU disponibile.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Quantità minima di memoria garantita per il contenitore. Kubernetes pianificherà il pod per un nodo con almeno questa quantità di memoria disponibile.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Numero minimo di repliche di pod che verranno mantenute dall'HPA, anche quando l'utilizzo della CPU è basso.", - "The namespace will be created on the selected cluster and set up as a project": "Lo spazio dei nomi verrà creato nel cluster selezionato e configurato come progetto", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Numero di repliche dei pod da eseguire. Più repliche offrono disponibilità e distribuzione del carico migliori.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "L'operazione potrebbe essere ancora in esecuzione in GitHub. Controllare il collegamento precedente per informazioni sullo stato più recente.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Numero di porta esposto dal servizio Kubernetes. Il traffico verso questa porta viene inoltrato alla porta di destinazione.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Numero di porta su cui è in ascolto il contenitore. Si tratta della porta all'interno del contenitore in cui viene eseguita l'applicazione.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Percentuale media di utilizzo della CPU di destinazione in tutti i pod. L'HPA aumenterà quando l'utilizzo della CPU supera questo valore e diminuirà quando è inferiore.", - "There are no deployments in this project namespace yet.": "Non sono ancora presenti distribuzioni in questo spazio dei nomi del progetto.", + "Reopen install page": "Riapri la pagina di installazione", + "Install GitHub App": "Installa app GitHub", + "Checking...": "Controllo in corso...", + "Connecting to GitHub...": "Connessione a GitHub in corso...", + "Connect GitHub": "Connessione GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Connesso", + "Sign in to GitHub": "Accedi a GitHub", + "Failed to load repositories": "Non è possibile caricare i repository", + "Filter repositories": "Filtra repository", + "No repositories match your filter": "Nessun repository corrispondente al filtro", + "No repositories found": "Non sono stati trovati repository", + "less than a minute": "meno di un minuto", + "{{count}} min_one": "{{count}} min", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}} min", + "Up next": "Avanti", + "PR {{number}}": "Richiesta pull {{number}}", + "Checking merge status...": "Controllo dello stato di unione in corso...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "L'operazione richiede più tempo del previsto. Controllare la richiesta pull in GitHub per verificare lo stato più recente.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Potrebbe trattarsi di un problema di autorizzazioni. Controllare le autorizzazioni dell'app GitHub e riprovare.", "This PR was closed without merging. You may need to restart the process.": "Questa richiesta pull è stata chiusa senza unione. Potrebbe essere necessario riavviare il processo.", + "Review on GitHub": "Rivedi in GitHub", + "Agent is working": "L'agente è attivo", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "L'agente di codifica di Copilot sta analizzando il repository e generando una richiesta pull di distribuzione con Dockerfile, manifesti Kubernetes e un flusso di lavoro GitHub Actions.", + "Issue {{number}}": "Problema {{number}}", + "Waiting for agent workflow to start...": "In attesa dell'avvio del flusso di lavoro dell'agente...", "This typically takes 10–25 minutes.": "Questa operazione richiede in genere 10-25 minuti.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Pod totali", - "Track agent progress": "Monitora stato agente", - "Trigger": "Trigger", - "Trigger Copilot Agent": "Attiva agente Copilot", - "Triggering...": "Attivazione in corso...", + "Pipeline configured": "Pipeline configurata", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "La pipeline CI/CD per {{repoFullName}} è pronta. Attivare le distribuzioni dalla scheda Distribuisci.", + "Setup PR reviewed and merged": "Richiesta pull di configurazione esaminata e unita", + "Copilot agent reviewed your repo and generated deployment PR": "L'agente Copilot ha esaminato il repository e ha generato la richiesta pull di distribuzione", + "Deployment PR reviewed and merged": "Richiesta pull di distribuzione esaminata e unita", + "View deployment": "Visualizza distribuzione", + "You can collapse this panel. Progress is saved and will resume when you return.": "È possibile comprimere questo pannello. Lo stato di avanzamento viene salvato e riprenderà al ritorno.", + "Creating setup PR...": "Creazione della richiesta pull di configurazione in corso...", + "The agent is creating the setup PR to enable the Copilot agent.": "L'agente sta creando la richiesta pull di configurazione per abilitare l'agente Copilot.", + "Setup PR Created": "Richiesta pull di configurazione creata", + "Review and merge the setup PR to enable the Copilot agent.": "Esaminare e unire la richiesta pull di configurazione per abilitare l'agente Copilot.", + "Setting up Copilot agent...": "Configurazione dell'agente Copilot in corso...", + "Creating the trigger issue for the Copilot coding agent.": "Creazione del problema del trigger per l'agente di codifica Copilot.", + "Deployment PR Ready": "Richiesta pull di distribuzione pronta", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "L'agente ha creato la richiesta pull di distribuzione. Esaminare i file generati e unirli per avviare la pipeline di distribuzione.", + "Copilot agent": "Agente Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Dopo l'unione, l'agente Copilot analizzerà il repository e creerà una richiesta pull di distribuzione", + "Deployment PR": "Richiesta pull di distribuzione", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Dopo che l'agente ha creato la richiesta pull di distribuzione, esaminare i file generati e unirli per avviare la pipeline di distribuzione", + "Connect Source": "Connetti origine", + "Set up Copilot Agent": "Configura l'agente Copilot", + "Review & Merge": "Rivedi e unisci", + "Collapse panel": "Comprimi pannello", + "Keep Going": "Continua", + "Discard": "Rimuovi", + "Canceling will discard your pipeline progress. Are you sure?": "L'annullamento eliminerà lo stato della pipeline. Continuare?", + "Ensuring resource group exists...": "Verifica dell'esistenza del gruppo di risorse in corso...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Configurazione delle credenziali federate in corso...", + "Workload identity configured": "Identità del carico di lavoro configurata", + "Configure Workload Identity": "Configura identità del carico di lavoro", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Verranno create le risorse di Azure seguenti per consentire alla pipeline di GitHub Actions di eseguire l'autenticazione con il cluster del servizio Azure Kubernetes:", + "Managed Identity": "Identità gestita", + "in resource group": "nel gruppo di risorse", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Credenziali federate", + "OIDC trust for": "Attendibilità OIDC per", + "branch": "ramo", + "Resource group where the managed identity will be created": "Gruppo di risorse in cui verrà creata l'identità gestita", + "Workload identity configured successfully.": "L'identità del carico di lavoro è stata configurata correttamente.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Potrebbe trattarsi di un problema di autorizzazioni. Controllare le autorizzazioni dell'app GitHub e riprovare.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "L'operazione potrebbe essere ancora in esecuzione in GitHub. Controllare il collegamento precedente per informazioni sullo stato più recente.", "Try again, or check GitHub for details.": "Riprovare o controllare GitHub per informazioni dettagliate.", - "Type": "Tipo", + "Initializing...": "Inizializzazione in corso...", + "Checking repository readiness...": "Verifica dell'idoneità del repository in corso...", + "Loading configuration...": "Caricamento della configurazione in corso...", "Unknown error": "Errore sconosciuto", - "unnamed": "senza nome", - "Up next": "Avanti", - "Update": "Aggiorna", - "Updating": "Aggiornamento", - "Updating local settings": "Aggiornamento delle impostazioni locali", - "Upload files": "Carica file", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Usare ClusterIP. Ideale per i servizi raggiungibili solo all'interno del cluster.", - "Use custom service port": "Usa porta del servizio personalizzata", - "Use existing manifests for full control": "Usare i manifesti esistenti per il controllo completo", - "User assignment completed with errors": "Assegnazione utente completata con errori", - "Validation failed": "Convalida non riuscita", - "Value": "Valore", - "View deployment": "Visualizza distribuzione", - "View on GitHub": "Visualizza in GitHub", - "View run on GitHub": "Visualizza esecuzione in GitHub", - "View workflow run": "Visualizza esecuzione del flusso di lavoro", - "VPA (Vertical Pod Autoscaler)": "VPA (componente di ridimensionamento automatico dei pod verticale)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "In attesa dell'avvio del flusso di lavoro dell'agente...", - "Waiting for browser authorization...": "In attesa dell'autorizzazione del browser...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "In attesa del completamento dell'accesso... ({{minutes}} minuti rimanenti)", - "Waiting for namespace to be created": "In attesa della creazione dello spazio dei nomi", - "Waiting for namespace to propagate": "In attesa della propagazione dello spazio dei nomi", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Avviso: questa azione non può essere annullata. Tutte le risorse in questi spazi dei nomi verranno eliminate definitivamente.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Quando un probe ha esito negativo, Kubernetes proverà questa operazione molte volte prima di rinunciare e riavviare il contenitore.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Quando un probe ha esito negativo, Kubernetes proverà a eseguire questa operazione molte volte prima di rinunciare. Per i probe di avvio, questo determina il tempo di attesa prima del riavvio.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Quando un probe ha esito negativo, Kubernetes proverà questa operazione molte volte prima di contrassegnare il pod come non pronto.", + "Trigger Copilot Agent": "Attiva agente Copilot", + "Create Setup PR": "Crea richiesta pull di configurazione", + "Failed to fetch deployment status": "Non è possibile recuperare lo stato della distribuzione", + "Failed to fetch pod status": "Non è possibile recuperare lo stato del pod", + "Failed to fetch service status": "Non è possibile recuperare lo stato del servizio", + "Failed to monitor deployment health": "Non è possibile monitorare l'integrità della distribuzione", + "Convert Namespaces to AKS Projects": "Convertire gli spazi dei nomi in progetti del servizio Azure Kubernetes", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Gli spazi dei nomi seguenti verranno convertiti in progetti desktop del servizio Azure Kubernetes aggiungendo queste etichette:", + "managed namespaces only": "solo spazi dei nomi gestiti", + "Namespaces to convert:": "Spazi dei nomi da convertire:", + "Already AKS projects (will import directly):": "Già progetti del servizio Azure Kubernetes (verranno importati direttamente):", + "Converting": "Conversione", + "Confirm & Import": "Conferma e importa", + "Please select at least one namespace to import": "Selezionare almeno uno spazio dei nomi da importare", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "È necessario registrare il cluster {{clusterName}} prima di importare gli spazi dei nomi normali. Importare prima uno spazio dei nomi gestito da questo cluster.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Unione del cluster {{clusterName}} ({{count}} spazi dei nomi)", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Unione del cluster {{clusterName}} ({{count}} spazi dei nomi)", + "Failed to merge cluster: {{message}}": "Non è possibile unire il cluster: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "È in corso la conversione di {{name}} in progetto del servizio Azure Kubernetes (l'operazione potrebbe richiedere qualche minuto)...", + "Failed to convert namespace: {{message}}": "Non è possibile convertire lo spazio dei nomi: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importazione di {{current}} di {{total}}: {{name}} da {{clusterName}}", + "Project '{{name}}' successfully imported": "Il progetto \"{{name}}\" è stato importato", + "Namespace '{{name}}' converted and imported as project": "Spazio dei nomi '{{name}}' convertito e importato come progetto", + "Successfully merged {{count}} cluster(s)_one": "L'unione di {{count}} cluster è stata completata", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "L'unione di {{count}} cluster è stata completata", "with {{count}} project(s)_one": "con {{count}} progetto/i", + "with {{count}} project(s)_many": "", "with {{count}} project(s)_other": "con {{count}} progetto/i", - "with the following parameters:": "con i parametri seguenti:", - "Wizard steps": "Passaggi della procedura guidata", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "L'invio del flusso di lavoro è stato attivato. Controllare GitHub Actions per verificare lo stato di avanzamento.", - "workflow on": "flusso di lavoro su", - "Workflows": "Flussi di lavoro", - "Workload identity configured": "Identità del carico di lavoro configurata", - "Workload identity configured successfully.": "L'identità del carico di lavoro è stata configurata correttamente.", - "Workloads": "Carichi di lavoro", + "{{count}} failed._one": "{{count}} operazione non riuscita.", + "{{count}} failed._many": "", + "{{count}} failed._other": "{{count}} operazioni non riuscite.", + "Failed to import any projects. See details below.": "Non è possibile importare alcun progetto. Vedere i dettagli di seguito.", + "Import AKS Projects": "Importa progetti servizio Azure Kubernetes", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importare spazi dei nomi gestiti esistenti e spazi dei nomi regolari come progetti. Gli spazi dei nomi che non sono ancora progetti desktop del servizio Azure Kubernetes verranno convertiti aggiungendo l'etichetta di progetto necessaria.", + "Select Namespaces to Import": "Seleziona spazi dei nomi da importare", + "{{count}} selected_one": "Elementi selezionati: {{count}}", + "{{count}} selected_many": "", + "{{count}} selected_other": "Elementi selezionati: {{count}}", + "Select All": "Seleziona tutto", + "Deselect All": "Deseleziona tutto", + "AKS Managed": "Gestito dal servizio Azure Kubernetes", + "Regular": "Normale", + "AKS Project?": "Progetto del servizio Azure Kubernetes?", "Yes": "Sì", - "You can collapse this panel. Progress is saved and will resume when you return.": "È possibile comprimere questo pannello. Lo stato di avanzamento viene salvato e riprenderà al ritorno.", - "You need to be logged in to Azure to register AKS clusters.": "È necessario accedere ad Azure per registrare i cluster del servizio Azure Kubernetes.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Il progetto del servizio Azure Kubernetes \"{{projectName}}\" è stato creato ed è pronto per l'uso.", - "Your project \"{{projectName}}\" is ready to use.": "Il progetto \"{{projectName}}\" è pronto per l'uso." + "No": "No", + "Importing": "Importazione", + "Import Selected Projects": "Importa progetti selezionati", + "Failed to fetch managed namespaces": "Non è possibile recuperare gli spazi dei nomi gestiti", + "Failed to fetch managed namespace details": "Non è possibile recuperare i dettagli dello spazio dei nomi gestito", + "Failed to update managed namespace": "Non è possibile aggiornare lo spazio dei nomi gestito", + "Updating": "Aggiornamento", + "Update": "Aggiorna", + "AKS desktop logo": "Logo del desktop del servizio Azure Kubernetes", + "No Deployments Found": "Non sono state trovate distribuzioni", + "There are no deployments in this project namespace yet.": "Non sono ancora presenti distribuzioni in questo spazio dei nomi del progetto.", + "Deploy an application to view logs.": "Distribuire un'applicazione per visualizzare i log.", + "Metrics": "Metrica", + "CPU Usage": "Utilizzo CPU", + "Memory Usage": "Utilizzo memoria", + "Request Rate": "Velocità richiesta", + "Error Rate": "Percentuale di errore", + "Metrics refreshed every 30 seconds": "Metriche aggiornate ogni 30 secondi", + "Select a deployment to view metrics": "Selezionare una distribuzione per visualizzare le metriche", + "Metrics Unavailable": "Metriche non disponibili", + "Application Metrics": "Metriche dell'applicazione", + "Request & error rate": "Percentuale di richieste ed errori", + "No data available": "Nessun dato disponibile", + "Response Time": "Tempo di risposta", + "Memory utilization": "Utilizzo della memoria", + "Network I/O": "I/O rete", + "Deploy an application to start viewing metrics.": "Distribuire un'applicazione per iniziare a visualizzare le metriche.", + "Please select a deployment to view metrics": "Selezionare una distribuzione per visualizzare le metriche", + "Project Status": "Stato del progetto", + "Total Pods": "Pod totali", + "Application Health": "Integrità applicazione", + "Loading metrics": "Caricamento delle metriche", + "Resource Usage": "Utilizzo risorse", + "Avg Response Time": "Tempo medio di risposta", + "No response time data available": "Non sono disponibili dati sul tempo di risposta", + "Absolute usage": "Utilizzo assoluto", + "Network In": "Rete in ingresso", + "Network Out": "Rete in uscita", + "Pod Details": "Dettagli del pod", + "Pod Name": "Nome pod", + "Restarts": "Riavvii", + "No pods found for deployment \"{{name}}\"": "Nessun pod trovato per la distribuzione \"{{name}}\"", + "Preview Features": "Funzionalità di anteprima", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Abilitare o disabilitare le funzionalità ancora in fase di sviluppo. Le funzionalità di anteprima potrebbero cambiare o essere rimosse nelle versioni future.", + "GitHub Pipelines": "Pipeline GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Abilitare le pipeline di distribuzione basate su GitHub per i progetti del servizio Azure Kubernetes.", + "Loading scaling metrics from Prometheus": "Caricamento delle metriche di ridimensionamento da Prometheus", + "Scaling Chart Unavailable": "Grafico di ridimensionamento non disponibile", + "No scaling data available": "Nessun dato di ridimensionamento disponibile", + "Edit HPA Configuration": "Modifica configurazione HPA", + "Edit Manual Scaling Configuration": "Modifica configurazione ridimensionamento manuale", + "Minimum Replicas": "Numero minimo di repliche", + "Maximum Replicas": "Numero massimo di repliche", + "Target CPU Utilization (%)": "Utilizzo CPU di destinazione (%)", + "Number of Replicas": "Numero di repliche", + "Set the desired number of pod replicas for this deployment": "Impostare il numero desiderato di repliche dei pod per questa distribuzione", + "Save": "Salva", + "Scaling Mode": "Modalità di ridimensionamento", + "Current Replicas": "Repliche correnti", + "Desired Replicas": "Repliche desiderate", + "Configured Replicas": "Repliche configurate", + "Replica Bounds": "Limiti di replica", + "Available Replicas": "Repliche disponibili", + "CPU Usage / Target": "Utilizzo CPU / Destinazione", + "Scaling": "Scalabilità in corso", + "Select a deployment to view scaling metrics": "Selezionare una distribuzione per visualizzare le metriche di ridimensionamento", + "Scaling Overview": "Panoramica del ridimensionamento", + "Edit Configuration": "Modifica configurazione", + "Scaling History (Last 24 Hours)": "Cronologia di ridimensionamento (ultime 24 ore)", + "Copied!": "Copia completata.", + "Copy": "Copia", + "Copy to clipboard": "Copia negli Appunti", + "No deployments found": "Nessuna distribuzione trovata", + "Select Deployment": "Seleziona distribuzione", + "Loading deployments": "Caricamento delle distribuzioni", + "No cluster is associated with this project.": "Nessun cluster associato a questo progetto.", + "Please sign in to Azure to continue.": "Accedere ad Azure per continuare.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contesto di Azure obbligatorio mancante. Assicurarsi di aver eseguito l'accesso e che il cluster sia associato a una sottoscrizione, un gruppo di risorse e un tenant validi.", + "Failed to load Azure context": "Non è possibile caricare il contesto di Azure", + "just now": "adesso", + "{{seconds}}s ago": "{{seconds}} secondo/i fa", + "{{minutes}} min ago": "{{minutes}} minuto/i fa", + "{{hours}}h ago": "{{hours}} ora/e fa", + "{{days}}d ago": "{{days}} giorno/i fa", + "{{weeks}}w ago": "{{weeks}} settimana/e fa" } diff --git a/plugins/aks-desktop/locales/ja/translation.json b/plugins/aks-desktop/locales/ja/translation.json index b6926aac3..711fc77e4 100644 --- a/plugins/aks-desktop/locales/ja/translation.json +++ b/plugins/aks-desktop/locales/ja/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "リソース グループにスコープが設定された \"AKS クラスター ユーザー ロール\"", - "(already enabled)": "(既に有効です)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} 個のクラスターが非表示です - Azure Entra ID がありません", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} 個のクラスターが非表示です - Azure Entra ID がありません", - "{{count}} eligible cluster(s) found._one": "{{count}} 個の対象クラスターが見つかりました。", - "{{count}} eligible cluster(s) found._other": "{{count}} 個の対象クラスターが見つかりました。", - "{{count}} failed._one": "{{count}} に失敗しました。", - "{{count}} failed._other": "{{count}} に失敗しました。", - "{{count}} min_one": "{{count}} 分", - "{{count}} min_other": "{{count}} 分", - "{{count}} selected_one": "{{count}} 個が選択されました", - "{{count}} selected_other": "{{count}} 個が選択されました", - "{{days}}d ago": "{{days}} 日前", - "{{hours}}h ago": "{{hours}} 時間前", - "{{minutes}} min ago": "{{minutes}} 分前", - "{{seconds}}s ago": "{{seconds}} 秒前", - "{{weeks}}w ago": "{{weeks}} 週間前", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "クラスターを選択する必要があります", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "プロジェクト ラベルが適用された新しい名前空間がクラスターに作成されます。それはプロジェクト リストにすぐに表示されます。", - "Absolute usage": "絶対使用量", - "Access": "アクセス", - "Access Control ({{count}} assignee)_one": "アクセス制御 ({{count}} 人の担当者)", - "Access Control ({{count}} assignee)_other": "アクセス制御 ({{count}} 人の担当者)", - "Actions": "アクション", - "Add assignee": "担当者の追加", - "Add Cluster from Azure": "Azure からクラスターを追加", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "1 つ以上の Kubernetes マニフェストを追加します。ファイルをアップロードしてエディターで表示するか、下に貼り付けて直接編集します。", - "Add variable": "変数の追加", - "Advanced": "詳細", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "マージ後、Copilot エージェントはリポジトリを分析して、デプロイ PR を作成します", - "Agent is working": "エージェントは動作しています", + "Failed to load subscriptions": "サブスクリプションを読み込めませんでした", + "Failed to load AKS clusters": "AKS クラスターを読み込めませんでした", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "クラスター '{{cluster}}' が kubeconfig に正常にマージされました", + "Failed to register cluster: {{message}}": "クラスターを登録できませんでした: {{message}}", + "Register AKS Cluster": "AKS クラスターの登録", + "Checking authentication status": "認証状態を確認しています", + "You need to be logged in to Azure to register AKS clusters.": "AKS クラスターを登録するには、Azure にログインする必要があります。", + "Subscription": "サブスクリプション", + "Select an Azure subscription": "Azure サブスクリプションを選択します", + "Loading subscriptions": "サブスクリプションを読み込んでいます", + "Loading AKS clusters": "AKS クラスターを読み込んでいます", + "No AKS clusters found in this subscription.": "このサブスクリプションに AKS クラスターが見つかりません。", "AKS Cluster": "AKS クラスター", - "AKS desktop logo": "AKS デスクトップ ロゴ", - "AKS Managed": "AKS マネージド", - "AKS Preview Extension installed successfully!": "AKS プレビュー拡張機能が正常にインストールされました。", - "AKS Preview Extension Required": "AKS プレビュー拡張機能が必要です", - "AKS Project?": "AKS プロジェクトですか?", - "All selected addons have been enabled successfully.": "選択したすべてのアドオンが正常に有効になりました。", - "All verifications completed successfully!": "すべての検証が正常に完了しました。", - "Allow all traffic": "すべてのトラフィックを許可する", - "Allow privilege escalation": "特権エスカレーションを許可する", - "Allow traffic within same namespace": "同じ名前空間内のトラフィックを許可する", - "Already AKS projects (will import directly):": "既に AKS プロジェクトです (直接インポートされます):", - "Also delete the namespaces (this will remove all resources within them)": "名前空間も削除します (これにより、名前空間内のすべてのリソースが削除されます)", - "Another project already exists with same name. Please choose a different name.": "同じ名前の別のプロジェクトが既に存在します。異なる名前を選択してください。", - "Application Health": "アプリケーションの正常性", - "Application Metrics": "アプリケーション メトリック", - "Application name": "アプリケーション名", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} 個のリソースが適用されましたが、{{failed}} 個が失敗しました:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} 個のリソースが正常に適用されました。", - "Applied {{count}} resource(s) successfully._other": "{{count}} 個のリソースが正常に適用されました。", - "Are you sure you want to delete project \"{{projectId}}\"?": "プロジェクト \"{{projectId}}\" を削除しますか?", - "Assign permissions to users who need access to your namespace": "名前空間へのアクセスが必要なユーザーにアクセス許可を割り当てます", - "Assignee": "担当者", - "Assigning AKS Cluster User Role...": "AKS クラスター ユーザー ロールを割り当てています...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS デスクトップでリポジトリにデプロイ パイプラインを作成することを認可します。", - "Auto-generated Deployment and Service manifests": "自動生成されたデプロイとサービスのマニフェスト", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "CPU の使用率に基づいてポッドの数を自動的にスケーリングします。HPA は、CPU の使用率がターゲットを上回るとポッドを増やし、下回ると減らします。", - "Available Replicas": "使用可能なレプリカ", - "Avg Response Time": "平均応答時間", - "Azure Account": "Azure アカウント", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "AKS クラスターを選択する", + "Selected Cluster Details": "選択したクラスターの詳細", + "Name": "名前", + "Resource Group": "リソース グループ", + "Location": "場所", + "Kubernetes Version": "Kubernetes バージョン", + "Done": "完了", + "Cancel": "キャンセル", + "Registering": "登録しています", + "Register Cluster": "クラスターの登録", + "Initiating Azure login": "Azure ログインを開始しています", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "ブラウザーで認証を完了してください。ログイン完了後、このウィンドウは自動的にリダイレクトされます。", + "Login successful! Redirecting": "ログインに成功しました。リダイレクトしています", + "Login timeout. Please try again.": "ログインがタイムアウトしました。もう一度お試しください。", + "Waiting for login completion... ({{minutes}} minutes remaining)": "ログインの完了を待機しています...(残り {{minutes}} 分)", + "Failed to initiate login: {{message}}": "ログインを開始できませんでした: {{message}}", "Azure Authentication": "Azure 認証", - "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview の要件が満たされていません", - "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor のメトリック (マネージド Prometheus)", + "Sign in with your Azure account to manage AKS clusters and resources": "Azure アカウントでサインインして、AKS クラスターとリソースを管理する", + "Sign in with Azure": "Azure でサインインする", + "Loading Azure account information": "Azure アカウント情報を読み込んでいます", "Back": "戻る", - "Basics": "基本", - "branch": "ブランチ", - "Bring your own Kubernetes manifests to deploy": "独自の Kubernetes マニフェストを使用してデプロイする", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "既定では、プローブは有効な既定値を持つルート パスで HTTP GET を使用します。プローブ設定をカスタマイズするには、これを有効にします。", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "既定では、サービス ポートはターゲット ポートと一致します。サービスに別のポートを使用する場合は、これを有効にします。", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "既定では、これにより Azure マネージド名前空間とプロジェクト ラベルが次の名前空間から削除されます:", - "Cancel": "キャンセル", - "Canceling will discard your pipeline progress. Are you sure?": "キャンセルすると、パイプラインの進行状況が破棄されます。よろしいですか?", - "Cancelled deletion of project {{ projectId }}.": "プロジェクト {{ projectId }} の削除を取り消しました。", - "Checking authentication status": "認証状態を確認しています", - "Checking for existing identity...": "既存の ID を確認しています...", - "Checking if another project exists with same name": "同じ名前の別のプロジェクトが存在するか確認しています", - "Checking merge status...": "マージの状態を確認しています...", - "Checking repository readiness...": "リポジトリの準備状況を確認しています...", - "Checking...": "確認しています...", - "Choose a source for your deployment (container image, repo, etc.).": "デプロイのソース (コンテナー イメージ、リポジトリなど) を選択します。", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} 用の CI/CD パイプラインの準備ができました。[デプロイ] タブからデプロイをトリガーします。", - "Clear editor": "エディターのクリア", - "Close": "閉じる", - "Cluster": "クラスター", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "クラスター '{{cluster}}' が kubeconfig に正常にマージされました", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "通常の名前空間をインポートする前に、クラスター {{clusterName}} を登録する必要があります。まず、このクラスターからマネージド名前空間をインポートしてください。", - "Cluster Configuration": "クラスターの構成", - "Cluster is being deleted. Cannot deploy to this cluster.": "クラスターは削除中です。このクラスターにはデプロイできません。", + "Azure Account": "Azure アカウント", + "Logged in as": "次の名前でログインしています:", + "Add Cluster from Azure": "Azure からクラスターを追加", + "Logging out": "ログアウト中", + "Log out": "ログオフ", + "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview の要件が満たされていません", + "Dismiss": "消去", + "Configure Pipeline": "パイプラインの構成", + "Loading Azure context...": "Azure コンテキストを読み込んでいます...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "名前空間内のほとんどのオブジェクトに対する読み取り専用アクセス。ロール、ロール バインド、またはシークレットを表示できません。", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "名前空間内のほとんどのオブジェクトに対する読み取り/書き込みアクセス。ロールまたはロール バインドの表示または変更はできません。名前空間内の任意の ServiceAccount として、シークレットにアクセスしてポッドを実行できます。", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "名前空間内のほとんどのリソースに対する読み取り/書き込みアクセス。名前空間内にロールとロール バインドを作成できます。リソース クォータや名前空間自体に書き込むことはできません。", + "Access": "アクセス", + "Assign permissions to users who need access to your namespace": "名前空間へのアクセスが必要なユーザーにアクセス許可を割り当てます", + "Assignee": "担当者", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "ロール", + "Remove assignee": "担当者を削除する", + "Add assignee": "担当者の追加", + "Only clusters with Azure Entra ID authentication are shown.": "Azure Entra ID 認証を使用しているクラスターのみが表示されています。", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} 個のクラスターが非表示です - Azure Entra ID がありません", + "No eligible clusters found in this subscription.": "このサブスクリプションに対象クラスターが見つかりません。", + "{{count}} eligible cluster(s) found._other": "{{count}} 個の対象クラスターが見つかりました。", "Cluster is currently updating. Deployment may fail.": "クラスターは現在更新中です。デプロイが失敗する可能性があります。", - "Cluster is deallocated. Please start the cluster before deploying.": "クラスターの割り当てが解除されています。デプロイ前にクラスターを開始してください。", - "Cluster is in a failed state. Please check Azure portal.": "クラスターはエラー状態です。Azure portal を確認してください。", + "Cluster is being deleted. Cannot deploy to this cluster.": "クラスターは削除中です。このクラスターにはデプロイできません。", "Cluster is still being created. Please wait until creation completes.": "クラスターはまだ作成中です。作成が完了するまでお待ちください。", + "Cluster is in a failed state. Please check Azure portal.": "クラスターはエラー状態です。Azure portal を確認してください。", "Cluster is stopped. Please start the cluster before deploying.": "クラスターは停止しています。デプロイする前にクラスターを開始してください。", + "Cluster is deallocated. Please start the cluster before deploying.": "クラスターの割り当てが解除されています。デプロイ前にクラスターを開始してください。", + "AKS Preview Extension Required": "AKS プレビュー拡張機能が必要です", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "マネージド名前空間を作成するには、aks-preview 拡張機能が必要です。続行するには、インストールしてください。", + "Installing": "インストール中", + "Install Extension": "拡張機能のインストール", + "AKS Preview Extension installed successfully!": "AKS プレビュー拡張機能が正常にインストールされました。", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "マネージド名前空間を作成するには、ManagedNamespacePreview 機能を登録する必要があります。", + "Current state": "現在の状態", + "Please register it to continue.": "続行するには、登録してください。", + "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview 機能の登録", + "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 機能が正常に登録されました。", + "Project Name": "プロジェクト名", + "Checking if another project exists with same name": "同じ名前の別のプロジェクトが存在するか確認しています", + "Another project already exists with same name. Please choose a different name.": "同じ名前の別のプロジェクトが既に存在します。異なる名前を選択してください。", + "Project name is available": "プロジェクト名を使用できます", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "プロジェクト名に使用できるのは、小文字、数字、ハイフンのみです (スペースは不可)", + "Project Description": "プロジェクトの説明", + "Enter project description": "プロジェクトの説明を入力します", + "Select a subscription": "サブスクリプションを選択します", + "Search subscriptions": "サブスクリプションを検索する", + "No subscriptions found": "サブスクリプションが見つかりません", + "Retry": "再試行", + "Cluster": "クラスター", + "Please select a subscription first": "最初にサブスクリプションを選択してください", + "Loading clusters": "クラスターを読み込んでいます", + "Select a cluster": "クラスターを選択する", + "Search clusters": "クラスターを検索する", + "No clusters with Azure Entra ID authentication found for this subscription": "このサブスクリプションには Azure Entra ID 認証を使用しているクラスターが見つかりません", "Cluster Not Ready": "クラスターが準備できていません", - "Collapse panel": "パネルを折りたたむ", - "Complete authorization on your browser screen": "ブラウザー画面で認可を完了する", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "ブラウザーでインストールを完了します。これは、アプリが {{repoName}} にインストールされると自動的に更新されます。", - "Compute Quota": "コンピューティング クォータ", - "Configuration Complete": "構成が完了しました", - "Configuration Error": "構成エラー", + "Refreshing": "更新中", + "Refresh": "最新の情報に更新", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "選択したクラスターが kubeconfig にありません。続行する前に登録してください。", + "Registering cluster": "クラスターを登録しています", + "Wizard steps": "ウィザードの手順", + "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor のメトリック (マネージド Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (イベント駆動型自動スケーリング)", + "VPA (Vertical Pod Autoscaler)": "VPA (垂直ポッド自動スケーラー)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "構成に予想以上の時間がかかっています。Azure portal でクラスターの現在の状態を確認してください。", - "Configure": "構成", - "Configure Cluster": "クラスターの構成", - "Configure Container Deployment": "コンテナー デプロイの構成", - "Configure container health probes.": "コンテナーの正常性プローブを構成します。", - "Configure Pipeline": "パイプラインの構成", - "Configure security context settings for the container.": "コンテナーのセキュリティ コンテキスト設定を構成します。", - "Configure Workload Identity": "ワークロード ID の構成", - "Configured Replicas": "構成済みレプリカ", + "Failed to enable addons": "アドオンを有効にできませんでした", + "Failed to enable addon: {{error}}": "アドオンを有効にできませんでした: {{error}}", + "Cluster Configuration": "クラスターの構成", + "(already enabled)": "(既に有効です)", + "The following addons can be enabled on this cluster:": "このクラスターでは、次のアドオンを有効にできます。", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "クラスターを作成した後ではネットワーク ポリシー エンジンを変更できません。次のものを使用して新しいクラスターを作成します:", + "for full network policy support.": "完全なネットワーク ポリシーのサポート。", + "Enabling these addons may incur additional Azure costs.": "これらのアドオンを有効にすると、追加の Azure コストが発生する可能性があります。", + "Configuration Error": "構成エラー", + "Configuration Complete": "構成が完了しました", + "All selected addons have been enabled successfully.": "選択したすべてのアドオンが正常に有効になりました。", "Configuring cluster... This may take a few minutes.": "クラスターを構成しています...これには数分かかる場合があります。", - "Configuring federated credential...": "フェデレーション資格情報を構成しています...", + "Enabling Addons...": "アドオンを有効にしています...", "Configuring...": "構成しています...", - "Confirm & Import": "確認とインポート", - "Connect": "接続", - "Connect GitHub": "GitHub を接続", - "Connect Source": "ソースの接続", - "Connect to GitHub": "GitHub に接続", - "Connected": "接続", - "Connected to '{{username}}'.": "'{{username}}' に接続しました。", - "Connecting to GitHub...": "GitHub に接続しています...", - "Connecting...": "接続しています...", - "Container image": "コンテナー イメージ", - "Container Image": "コンテナー イメージ", - "Contents": "コンテンツ", - "Continue": "続行", - "Controls whether a process can gain more privileges than its parent process.": "プロセスが親プロセスより多くの特権を取得できるかどうかを制御します。", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "プロセスが親プロセスより多くの特権を取得できるかどうかを制御します。これを無効にすると (推奨)、特権エスカレーション攻撃が阻止されます。", - "Convert Namespaces to AKS Projects": "名前空間を AKS プロジェクトに変換する", - "Converting": "変換中", - "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} を AKS プロジェクトに変換しています (少し時間がかかる場合があります)...", - "Copied!": "コピーしました。", - "Copilot agent": "Copilot エージェント", - "Copilot agent reviewed your repo and generated deployment PR": "Copilot エージェントがリポジトリを確認して、デプロイ PR を生成しました", - "Copy": "コピー", - "Copy to clipboard": "クリップボードにコピー", - "CPU": "CPU", - "CPU limit": "CPU の制限", - "CPU Limits": "CPU の制限", - "CPU request": "CPU 要求", - "CPU Requests": "CPU 要求", + "Configure Cluster": "クラスターの構成", + "Compute Quota": "コンピューティング クォータ", + "Set quota limits to prevent overuse and maintain cluster stability": "クォータの制限を設定して、過剰使用を防ぎ、クラスターの安定性を維持する", "CPU Resources": "CPU リソース", - "CPU Usage": "CPU 使用率", - "CPU Usage / Target": "CPU 使用率/目標", - "Create a new namespace on an existing cluster and set it up as a project": "既存のクラスターに新しい名前空間を作成し、プロジェクトとして設定します", - "Create Application": "アプリケーションの作成", - "Create deployment PRs": "デプロイ PR の作成", - "Create Namespace": "名前空間の作成", - "Create New Namespace": "新しい名前空間の作成", - "Create Project": "プロジェクトの作成", - "Create Setup PR": "セットアップ PR の作成", - "Create setup workflow in .github/workflows/": ".github/workflows/ でセットアップ ワークフローを作成します", - "Creates a LoadBalancer to expose the application to the internet.": "アプリケーションをインターネットに公開する LoadBalancer を作成します。", - "Creating managed identity...": "マネージド ID を作成しています...", - "Creating namespace": "名前空間の作成中", - "Creating Namespace": "名前空間の作成中", - "Creating Project": "プロジェクトを作成しています", - "Creating setup PR...": "セットアップ PR を作成しています...", - "Creating the trigger issue for the Copilot coding agent.": "Copilot コーディング エージェントのトリガー issue の作成。", - "Current Replicas": "現在のレプリカ数", - "Current state": "現在の状態", - "Degraded": "低下", + "CPU Requests": "CPU 要求", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "最小 CPU 保証 (1000 m = 1 CPU コア)", + "CPU Limits": "CPU の制限", + "Maximum CPU allowed (1000m = 1 CPU core)": "許可される最大 CPU (1000 m = 1 CPU コア)", + "Memory Resources": "メモリ リソース", + "Memory Requests": "メモリ要求", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "最小メモリ保証 (1024 MiB = 1 GiB)", + "Memory Limits": "メモリの制限", + "Maximum memory allowed (1024 MiB = 1 GiB)": "許可される最大メモリ (1024 MiB = 1 GiB)", + "Basics": "基本", + "Networking Policies": "ネットワーク ポリシー", + "Review": "レビュー", + "New Project": "新しいプロジェクト", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Azure Kubernetes Service (AKS) で新しいプロジェクトを設定して構成する", + "Creating Project": "プロジェクトを作成しています", + "Create Project": "プロジェクトの作成", + "Loading": "読み込み中", + "Next": "次へ", + "Project Created Successfully!": "プロジェクトが正常に作成されました。", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "AKS プロジェクト \"{{projectName}}\" が作成され、使用する準備ができました。", + "Application name": "アプリケーション名", + "Enter application name": "アプリケーション名の入力", + "Enter a name for your first application to get started with deployment.": "最初のアプリケーションの名前を入力してデプロイを開始します。", + "Create Application": "アプリケーションの作成", + "Project Creation Failed": "プロジェクトの作成に失敗しました", + "Set security, communication and access rules for incoming and outgoing traffic": "受信および送信トラフィックのセキュリティ、通信、アクセス規則を設定する", + "Allow traffic within same namespace": "同じ名前空間内のトラフィックを許可する", + "Allow all traffic": "すべてのトラフィックを許可する", + "Deny all traffic": "すべてのトラフィックを拒否する", + "Review Project Configuration": "プロジェクト構成のレビュー", + "Please review all the settings before creating your AKS project": "AKS プロジェクトを作成する前に、すべての設定をレビューしてください", + "Project Basics": "プロジェクトの基本情報", + "Description": "説明", + "No description provided": "説明が提供されていません", + "Ingress Policy": "イングレス ポリシー", + "Egress Policy": "エグレス ポリシー", + "CPU": "CPU", + "Requests": "要求", + "Limits": "制限", + "Memory": "メモリ", + "Access Control ({{count}} assignee)_other": "アクセス制御 ({{count}} 人の担当者)", + "Not specified": "指定されていません", + "Select an option": "オプションを選択する", + "No options": "オプションなし", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "プロジェクトの作成を開始しています", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "プロジェクトの作成が 10 分後にタイムアウトしました。名前空間が作成されたかを確認してから、もう一度お試しください。", + "Initiating managed namespace creation": "マネージド名前空間の作成を開始しています", + "Namespace creation failed: {{message}}": "名前空間の作成に失敗しました: {{message}}", + "Namespace creation initiated! Monitoring creation status": "名前空間の作成が開始されました。作成の状態を監視しています", + "Waiting for namespace to propagate": "名前空間の伝達を待機しています", + "Namespace status check failed: {{message}}": "名前空間の状態のチェックに失敗しました: {{message}}", + "Waiting for namespace to be created": "名前空間の作成を待機しています", + "Namespace status verification failed: {{message}}": "名前空間の状態の確認に失敗しました: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "名前空間作成 API が成功し、ユーザー割り当てを続行しています", + "Namespace creation completed successfully! Adding user access": "名前空間の作成が正常に完了しました。ユーザー アクセスを追加しています", + "User assignment completed with errors": "ユーザー割り当てが完了しましたが、エラーが発生しました", + "Project creation completed successfully!": "プロジェクトの作成が正常に完了しました。", + "Performing final status verification": "最終状態の確認を行っています", + "Final status check failed: {{message}}": "最終状態チェックに失敗しました: {{message}}", + "Final status verification failed: {{message}}": "最終状態の検証に失敗しました: {{message}}", + "All verifications completed successfully!": "すべての検証が正常に完了しました。", + "Failed to create project": "プロジェクトを作成できませんでした", + "A cluster must be selected": "クラスターを選択する必要があります", + "Namespace name is required": "名前空間名は必須です", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "名前空間名には、小文字の英字、数字、ハイフンのみを使用し、先頭と末尾は英数字である必要があります", + "Namespace name must be 63 characters or fewer": "名前空間名は 63 文字以下である必要があります", + "Creating namespace": "名前空間の作成中", + "Updating local settings": "ローカル設定を更新しています", + "Namespace created successfully!": "名前空間が正常に作成されました。", + "Failed to create namespace": "名前空間を作成できませんでした", + "No clusters found. Register a cluster first.": "クラスターが見つかりません。最初にクラスターを登録してください。", + "Namespace Name": "名前空間の名前", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "小文字、数字、ハイフンのみを含み、先頭と末尾は英数字である必要があります", + "The namespace will be created on the selected cluster and set up as a project": "選択したクラスターに名前空間が作成され、プロジェクトとして設定されます", + "Type": "型", + "Regular Kubernetes namespace": "標準の Kubernetes 名前空間", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "プロジェクト ラベルが適用された新しい名前空間がクラスターに作成されます。それはプロジェクト リストにすぐに表示されます。", + "Create New Namespace": "新しい名前空間の作成", + "Create a new namespace on an existing cluster and set it up as a project": "既存のクラスターに新しい名前空間を作成し、プロジェクトとして設定します", + "Creating Namespace": "名前空間の作成中", + "Namespace Creation Failed": "名前空間の作成に失敗しました", + "Namespace Created Successfully!": "名前空間が正常に作成されました。", + "Your project \"{{projectName}}\" is ready to use.": "プロジェクト \"{{projectName}}\" が使用できる状態です。", + "Go To Projects": "プロジェクトに移動", + "Create Namespace": "名前空間の作成", "Delete project": "プロジェクトの削除", "Delete Project": "プロジェクトの削除", + "Are you sure you want to delete project \"{{projectId}}\"?": "プロジェクト \"{{projectId}}\" を削除しますか?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "既定では、これにより Azure マネージド名前空間とプロジェクト ラベルが次の名前空間から削除されます:", + "Also delete the namespaces (this will remove all resources within them)": "名前空間も削除します (これにより、名前空間内のすべてのリソースが削除されます)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "警告: この操作は元に戻せません。これらの名前空間内のすべてのリソースは完全に削除されます。", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "注: AKS マネージド名前空間の場合、Azure ARM 管理は自動的に削除されます。", "Delete Project & Namespaces": "プロジェクトと名前空間の削除", - "Deleted project {{ projectId }}.": "プロジェクト {{ projectId }} を削除しました。", "Deleting project {{ projectId }}…": "プロジェクト {{ projectId }} を削除しています…", - "Deny all traffic": "すべてのトラフィックを拒否する", - "Deploy": "デプロイ", - "Deploy {{repo}}": "{{repo}} のデプロイ", - "Deploy an application to start viewing metrics.": "メトリックの表示を開始するには、アプリケーションをデプロイしてください。", - "Deploy an application to view logs.": "ログを表示するアプリケーションをデプロイします。", + "Cancelled deletion of project {{ projectId }}.": "プロジェクト {{ projectId }} の削除を取り消しました。", + "Deleted project {{ projectId }}.": "プロジェクト {{ projectId }} を削除しました。", + "Error deleting project {{ projectId }}.": "プロジェクト {{ projectId }} の削除でエラーが発生しました。", "Deploy Application": "アプリケーションのデプロイ", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Azure Container Registry、Docker Hub、または GHCR からデプロイ", + "Failed to load pipeline runs": "パイプライン実行を読み込めませんでした", + "Pipeline": "パイプライン", + "Set up your pipeline": "パイプラインの設定", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "CI/CD パイプラインを設定して、デプロイを自動化し、ワークフローを効率化します", + "Waiting for browser authorization...": "ブラウザーの認可を待っています...", + "Sign in to GitHub to view pipeline runs.": "パイプラインの実行を表示するには、GitHub にサインインします。", + "Connecting...": "接続しています...", + "No pipeline runs yet.": "パイプラインはまだ実行していません。", + "View on GitHub": "GitHub 上で表示", + "View run on GitHub": "GitHub で実行を表示する", + "Healthy": "健全", + "Scaled down": "スケールダウン済み", + "Degraded": "低下", + "VS Code": "VS Code", + "Manual": "手動", + "Manual Deploy": "手動デプロイ", + "Deploy {{repo}}": "{{repo}} のデプロイ", "Deploy via Pipeline": "パイプラインを使用してデプロイする", - "Deploying": "デプロイしています", + "No deployments found in this namespace.": "この名前空間にはデプロイが見つかりません。", "Deployment": "デプロイ", - "Deployment PR": "デプロイ PR", - "Deployment PR Ready": "デプロイ PR の準備ができました", - "Deployment PR reviewed and merged": "確認およびマージ済みのデプロイ PR", - "Deployment source": "デプロイ ソース", - "Description": "説明", - "Deselect All": "すべて選択解除", - "Desired Replicas": "必要なレプリカ数", - "Discard": "破棄", - "Dismiss": "消去", - "Distributes pods evenly across nodes to improve workload distribution.": "ノード間でポッドを均等に分散して、ワークロードの分散を改善します。", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "ノード間、ゾーン間、または他のトポロジ ドメイン間にポッドを均等に分散し、ワークロードの分散と可用性を向上させます。", - "Done": "完了", - "Edit Configuration": "構成の編集", + "Source": "ソース", + "Replicas": "レプリカ", + "Ready": "準備完了", + "Status": "状態", + "Actions": "アクション", "Edit deployment": "デプロイの編集", - "Edit HPA Configuration": "HPA 構成の編集", - "Edit Manual Scaling Configuration": "手動スケーリング構成の編集", - "Egress Policy": "エグレス ポリシー", + "View workflow run": "ワークフロー実行の表示", + "Re-deploy": "再デプロイ", + "Failed to trigger deployment": "デプロイをトリガーできませんでした", + "Trigger": "トリガー", + "workflow on": "次のものでのワークフロー:", + "with the following parameters:": "次のパラメーターを使用:", + "Namespace": "名前空間", + "Sign in": "サインイン", + "GitHub authentication required to trigger deployment.": "デプロイをトリガーするには GitHub 認証が必要です。", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "ワークフロー ディスパッチが正常にトリガーされました。GitHub Actions で進行状況を確認してください。", + "Close": "閉じる", + "Triggering...": "トリガーしています...", + "Deploy": "デプロイ", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "パイプラインのデプロイを使用するには、[設定] → [プレビュー機能] で GitHub パイプラインを有効にします。", - "Enable GitHub-based deployment pipelines for AKS projects.": "AKS プロジェクトの GitHub ベースのデプロイ パイプラインを有効にします。", - "Enable Horizontal Pod Autoscaler": "水平ポッド自動スケーラーを有効にする", - "Enable liveness probe": "liveness probe を有効にする", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "まだ開発中の機能を有効または無効にします。プレビュー機能は今後のリリースで変更または削除される可能性があります。", - "Enable pod anti-affinity": "ポッドのアンチアフィニティを有効にする", - "Enable public access": "パブリック アクセスを有効にする", - "Enable readiness probe": "readiness probe を有効にする", - "Enable resource requests and limits": "リソースの要求と制限を有効にする", - "Enable startup probe": "startup probe を有効にする", - "Enable topology spread constraints": "トポロジ スプレッドの制約を有効にする", - "Enabling Addons...": "アドオンを有効にしています...", - "Enabling these addons may incur additional Azure costs.": "これらのアドオンを有効にすると、追加の Azure コストが発生する可能性があります。", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "最小レプリカ数が最大レプリカ数以下であり、ターゲット CPU が 10% から 95% の間であることを確認してください。", + "Workloads": "ワークロード", + "No clusters in this project.": "このプロジェクトにはクラスターがありません。", + "Failed to fetch deployments": "デプロイをフェッチできませんでした", + "Failed to fetch cluster status": "クラスターの状態をフェッチできませんでした", + "Configure security context settings for the container.": "コンテナーのセキュリティ コンテキスト設定を構成します。", + "Run as non root user": "非ルート ユーザーとして実行する", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "セキュリティ向上のために、コンテナーを非ルート ユーザー (UID != 0) として実行します。これにより特権エスカレーション攻撃を阻止します。", "Ensures the container runs as a non-root user for better security.": "セキュリティ向上のために、コンテナーを非ルート ユーザーとして実行します。", - "Ensuring resource group exists...": "リソース グループの存在を確認しています...", - "Enter a name for your first application to get started with deployment.": "最初のアプリケーションの名前を入力してデプロイを開始します。", - "Enter application name": "アプリケーション名の入力", - "Enter project description": "プロジェクトの説明を入力します", - "Environment Variables": "環境変数", - "Error deleting project {{ projectId }}.": "プロジェクト {{ projectId }} の削除でエラーが発生しました。", - "Error Rate": "エラー率", - "Failed to apply": "適用できませんでした", - "Failed to apply resources.": "リソースを適用できませんでした。", - "Failed to convert namespace: {{message}}": "名前空間を変換できませんでした: {{message}}", - "Failed to create namespace": "名前空間を作成できませんでした", - "Failed to create project": "プロジェクトを作成できませんでした", - "Failed to enable addon: {{error}}": "アドオンを有効にできませんでした: {{error}}", - "Failed to enable addons": "アドオンを有効にできませんでした", - "Failed to fetch cluster status": "クラスターの状態をフェッチできませんでした", - "Failed to fetch deployment status": "デプロイの状態をフェッチできませんでした", - "Failed to fetch deployments": "デプロイをフェッチできませんでした", - "Failed to fetch managed namespace details": "マネージド名前空間の詳細を取得できませんでした", - "Failed to fetch managed namespaces": "マネージド名前空間を取得できませんでした", - "Failed to fetch pod status": "ポッドの状態をフェッチできませんでした", - "Failed to fetch service status": "サービスの状態をフェッチできませんでした", - "Failed to import any projects. See details below.": "プロジェクトをインポートできませんでした。以下の詳細をご確認ください。", - "Failed to initiate login: {{message}}": "ログインを開始できませんでした: {{message}}", - "Failed to load AKS clusters": "AKS クラスターを読み込めませんでした", - "Failed to load Azure context": "Azure コンテキストを読み込めませんでした", - "Failed to load pipeline runs": "パイプライン実行を読み込めませんでした", - "Failed to load repositories": "リポジトリを読み込めませんでした", - "Failed to load subscriptions": "サブスクリプションを読み込めませんでした", - "Failed to merge cluster: {{message}}": "クラスターをマージできませんでした: {{message}}", - "Failed to monitor deployment health": "デプロイの正常性を監視できませんでした", - "Failed to register cluster: {{message}}": "クラスターを登録できませんでした: {{message}}", - "Failed to trigger deployment": "デプロイをトリガーできませんでした", - "Failed to update managed namespace": "マネージド名前空間を更新できませんでした", - "failureThreshold": "failureThreshold", - "Features": "機能", - "Federated Credential": "フェデレーション資格情報", - "Filter repositories": "リポジトリのフィルター処理", - "Final status check failed: {{message}}": "最終状態チェックに失敗しました: {{message}}", - "Final status verification failed: {{message}}": "最終状態の検証に失敗しました: {{message}}", - "for full network policy support.": "完全なネットワーク ポリシーのサポート。", - "Generated Kubernetes manifests (namespace: {{namespace}})": "生成された Kubernetes マニフェスト (名前空間: {{namespace}})", - "GitHub authentication required to trigger deployment.": "デプロイをトリガーするには GitHub 認証が必要です。", - "GitHub Pipelines": "GitHub パイプライン", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "プロジェクトに移動", - "Guided configuration for ports, replicas, env, and resources": "ポート、レプリカ、環境変数、リソースのガイド付き構成", + "Read only root filesystem": "読み取り専用ルート ファイルシステム", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "書き込み操作を防ぐために、コンテナーのルート ファイルシステムを読み取り専用としてマウントします。これにより、悪意のあるコードはシステム ファイルは変更できなくなり、セキュリティが強化されます。", + "Mounts the container's root filesystem as read-only to prevent write operations.": "書き込み操作を防ぐために、コンテナーのルート ファイルシステムを読み取り専用としてマウントします。", + "Allow privilege escalation": "特権エスカレーションを許可する", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "プロセスが親プロセスより多くの特権を取得できるかどうかを制御します。これを無効にすると (推奨)、特権エスカレーション攻撃が阻止されます。", + "Controls whether a process can gain more privileges than its parent process.": "プロセスが親プロセスより多くの特権を取得できるかどうかを制御します。", + "Enable pod anti-affinity": "ポッドのアンチアフィニティを有効にする", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "可用性とフォールト トレランスを向上させるため、異なるノードでのポッドのスケジュール設定を優先します。これは、ポッドをクラスター全体に分散させるのに役立ちます。", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "可用性とフォールト トレランスを向上させるために、異なるノードでポッドのスケジュール設定を優先します。", + "Enable topology spread constraints": "トポロジ スプレッドの制約を有効にする", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "ノード間、ゾーン間、または他のトポロジ ドメイン間にポッドを均等に分散し、ワークロードの分散と可用性を向上させます。", + "Distributes pods evenly across nodes to improve workload distribution.": "ノード間でポッドを均等に分散して、ワークロードの分散を改善します。", + "Container image": "コンテナー イメージ", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "実行するポッド レプリカの数。レプリカの数が多いほど、可用性と負荷分散が向上します。", + "Continue": "続行", + "Configure Container Deployment": "コンテナー デプロイの構成", + "Networking": "ネットワーク", "Healthchecks": "正常性チェック", - "Healthy": "健全", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "liveness probe を実行する頻度 (秒)。既定値は 10 秒です。", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "readiness probe を実行する頻度 (秒)。既定値は 10 秒です。", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "startup probe を実行する頻度 (秒)。既定値は 10 秒です。", - "HPA scales pods based on CPU utilization.": "HPA は、CPU 使用率に基づいてポッドをスケーリングします。", - "Identity Resource Group": "ID リソース グループ", - "Import AKS Projects": "AKS プロジェクトのインポート", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "既存のマネージド名前空間と通常の名前空間をプロジェクトとしてインポートします。まだ AKS デスクトップ プロジェクトでない名前空間は、必要なプロジェクト ラベルを追加して変換されます。", - "Import Selected Projects": "選択したプロジェクトのインポート", - "Importing": "インポート中", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{clusterName}} から {{total}} 個中 {{current}} 個の {{name}} をインポートしています", - "in resource group": "リソース グループ内", + "Resource Limits": "リソースの制限", + "Environment Variables": "環境変数", + "Workload Identity": "", + "Advanced": "詳細", "Information about {{label}}": "{{label}} に関する情報", - "Information about CPU limit": "CPU 制限に関する情報", - "Information about CPU request": "CPU 要求に関する情報", - "Information about memory limit": "メモリ制限に関する情報", - "Information about memory request": "メモリ要求に関する情報", - "Information about target CPU utilization": "ターゲット CPU 使用率に関する情報", - "Ingress Policy": "イングレス ポリシー", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "初期化しています...", - "Initiating Azure login": "Azure ログインを開始しています", - "Initiating managed namespace creation": "マネージド名前空間の作成を開始しています", - "Install Extension": "拡張機能のインストール", - "Install GitHub App": "GitHub アプリのインストール", - "Installing": "インストール中", - "Internal only": "内部のみ", - "Invalid YAML": "YAML が無効です", - "Invalid YAML: List item missing required field (kind)": "無効な YAML: リスト アイテムに必須フィールド (kind) がありません", - "Invalid YAML: List item missing required field (metadata.name)": "無効な YAML: リスト アイテムに必須フィールド (metadata.name) がありません", - "Invalid YAML: List resource must have an array \"items\" field": "無効な YAML: リスト リソースには配列の \"items\" フィールドが必要です", - "Invalid YAML: missing required field (kind)": "無効な YAML: 必須フィールド (kind) がありません", - "Invalid YAML: missing required field (metadata.name)": "無効な YAML: 必須フィールド (metadata.name) がありません", - "Issue {{number}}": "issue {{number}}", - "Issues": "懸案事項", - "just now": "たった今", - "KEDA (Event-Driven Autoscaling)": "KEDA (イベント駆動型自動スケーリング)", - "Keep Going": "処理を続行", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "1 つ以上の Kubernetes マニフェストを追加します。ファイルをアップロードしてエディターで表示するか、下に貼り付けて直接編集します。", + "Upload files": "ファイルをアップロードする", + "Clear editor": "エディターのクリア", + "Review & Deploy": "レビューとデプロイ", + "Generated Kubernetes manifests (namespace: {{namespace}})": "生成された Kubernetes マニフェスト (名前空間: {{namespace}})", + "Resources to be deployed ({{count}} object)_other": "デプロイするリソース ({{count}} 個のオブジェクト)", + "namespace: {{namespace}}": "名前空間: {{namespace}}", + "Configure": "構成", + "Deploying": "デプロイしています", "Key": "キー", - "Kubernetes restarts the container if this check fails repeatedly.": "このチェックが繰り返し失敗した場合、Kubernetes はコンテナーを再起動します。", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "値", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "削除", + "Add variable": "変数の追加", + "Configure container health probes.": "コンテナーの正常性プローブを構成します。", + "Manually configure settings": "設定を手動で構成する", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "既定では、プローブは有効な既定値を持つルート パスで HTTP GET を使用します。プローブ設定をカスタマイズするには、これを有効にします。", + "Enable liveness probe": "liveness probe を有効にする", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "このチェックが繰り返し失敗した場合、Kubernetes はコンテナーを再起動します。デッドロックや応答しないコンテナーを検出して回復するために使用されます。", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes は起動が成功するまでライブネス/準備状況を一時的に無効にします。", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes は起動が成功するまでライブネス/準備状況を一時的に無効にします。起動に長い時間がかかるコンテナーに役立ちます。", - "Kubernetes Version": "Kubernetes バージョン", - "Kubernetes won't send traffic to the pod until this check passes.": "このチェックに合格するまで、Kubernetes はポッドにトラフィックを送信しません。", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "このチェックに合格するまで、Kubernetes はポッドにトラフィックを送信しません。コンテナーがトラフィックを受け入れる準備ができたことを示すために使用されます。", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "1 分未満", - "Limits": "制限", + "Kubernetes restarts the container if this check fails repeatedly.": "このチェックが繰り返し失敗した場合、Kubernetes はコンテナーを再起動します。", "Liveness path": "ライブネス パス", - "Loading": "読み込み中", - "Loading AKS clusters": "AKS クラスターを読み込んでいます", - "Loading Azure account information": "Azure アカウント情報を読み込んでいます", - "Loading Azure context...": "Azure コンテキストを読み込んでいます...", - "Loading clusters": "クラスターを読み込んでいます", - "Loading configuration...": "構成を読み込んでいます...", - "Loading deployments": "デプロイを読み込んでいます", - "Loading metrics": "メトリックを読み込んでいます", - "Loading scaling metrics from Prometheus": "Prometheus からスケーリング メトリックを読み込んでいます", - "Loading subscriptions": "サブスクリプションを読み込んでいます", - "Loading...": "読み込んでいます...", - "Location": "場所", - "Log out": "ログオフ", - "Logged in as": "次の名前でログインしています:", - "Logging out": "ログアウト中", - "Login successful! Redirecting": "ログインに成功しました。リダイレクトしています", - "Login timeout. Please try again.": "ログインがタイムアウトしました。もう一度お試しください。", - "Managed Identity": "マネージド ID", - "managed namespaces only": "マネージド名前空間のみ", - "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 機能が正常に登録されました。", - "Manual": "手動", - "Manual Deploy": "手動デプロイ", - "Manually configure settings": "設定を手動で構成する", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "ライブネスを調べるための HTTP パス (例: /healthz)。プローブはこのパスに対して HTTP GET 要求を実行します。", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "コンテナーが開始してから liveness probe が開始されるまでの秒数。", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "liveness probe を実行する頻度 (秒)。既定値は 10 秒です。", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "プローブがタイムアウトするまでの時間 (秒)。既定値は 1 秒です。", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "プローブが失敗した場合、Kubernetes はあきらめてコンテナーを再起動する前にこの回数だけ試行します。", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "失敗後にプローブが成功と見なされるために、連続して成功する回数の最小値です。既定値は 1 です。", + "Enable readiness probe": "readiness probe を有効にする", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "このチェックに合格するまで、Kubernetes はポッドにトラフィックを送信しません。コンテナーがトラフィックを受け入れる準備ができたことを示すために使用されます。", + "Kubernetes won't send traffic to the pod until this check passes.": "このチェックに合格するまで、Kubernetes はポッドにトラフィックを送信しません。", + "Readiness path": "準備状況パス", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "準備状況を調べるための HTTP パス (例: /ready)。プローブはこのパスに対して HTTP GET 要求を実行します。", + "Number of seconds after the container has started before readiness probes are initiated.": "コンテナーが開始してから readiness probe が開始されるまでの秒数。", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "readiness probe を実行する頻度 (秒)。既定値は 10 秒です。", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "プローブが失敗すると、Kubernetes はポッドを準備完了ではないとマークする前にこの回数だけ試行します。", + "Enable startup probe": "startup probe を有効にする", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes は起動が成功するまでライブネス/準備状況を一時的に無効にします。起動に長い時間がかかるコンテナーに役立ちます。", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes は起動が成功するまでライブネス/準備状況を一時的に無効にします。", + "Startup path": "スタートアップ パス", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "スタートアップを調べるための HTTP パス (例: /startup)。プローブはこのパスに対して HTTP GET 要求を実行します。", + "Number of seconds after the container has started before startup probes are initiated.": "コンテナーが開始してから startup probe が開始されるまでの秒数。", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "startup probe を実行する頻度 (秒)。既定値は 10 秒です。", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "プローブが失敗した場合、Kubernetes はあきらめる前にこの回数だけ試行します。startup probe の場合、これにより再起動までの待ち時間が決まります。", + "Enable Horizontal Pod Autoscaler": "水平ポッド自動スケーラーを有効にする", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "CPU の使用率に基づいてポッドの数を自動的にスケーリングします。HPA は、CPU の使用率がターゲットを上回るとポッドを増やし、下回ると減らします。", + "HPA scales pods based on CPU utilization.": "HPA は、CPU 使用率に基づいてポッドをスケーリングします。", + "Min replicas": "最小レプリカ数", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "CPU 使用率が低くても HPA が維持するポッド レプリカの最小数。", "Max replicas": "最大レプリカ数", - "Maximum CPU allowed (1000m = 1 CPU core)": "許可される最大 CPU (1000 m = 1 CPU コア)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "許可される最大メモリ (1024 MiB = 1 GiB)", - "Maximum Replicas": "最大レプリカ数", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "CPU 使用率が高い場合に HPA がスケールアップできるポッド レプリカの最大数。", + "Target CPU utilization": "ターゲット CPU 使用率", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "すべてのポッドの平均 CPU 使用率の目標値です。CPU 使用率がこの値を超えると HPA がスケールアップし、下回るとスケールダウンします。", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "最小レプリカ数が最大レプリカ数以下であり、ターゲット CPU が 10% から 95% の間であることを確認してください。", + "Target port": "ターゲット ポート", + "The port number that your container listens on. This is the port inside the container where your application runs.": "コンテナーがリッスンするポート番号。これはアプリケーションが実行されるコンテナー内のポートです。", + "Service port": "サービス ポート", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes サービスによって公開されるポート番号。このポートへのトラフィックはターゲット ポートに転送されます。", + "Use custom service port": "カスタム サービス ポートを使用する", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "既定では、サービス ポートはターゲット ポートと一致します。サービスに別のポートを使用する場合は、これを有効にします。", + "Service type": "サービスの種類", + "Internal only": "内部のみ", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "ClusterIP を使用します。クラスター内でのみ到達可能なサービスに最適です。", + "Enable public access": "パブリック アクセスを有効にする", + "Creates a LoadBalancer to expose the application to the internet.": "アプリケーションをインターネットに公開する LoadBalancer を作成します。", + "Enable resource requests and limits": "リソースの要求と制限を有効にする", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "リソースの割り当てを制御し、コンテナーがクラスター リソースを過剰に消費しないよう、CPU とメモリの要求 (保証されたリソース) と制限 (最大リソース) を設定します。", + "CPU request": "CPU 要求", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "コンテナーに保証される CPU の最小量です。Kubernetes は、この量以上の CPU が利用可能なノードにポッドをスケジュールします。", + "millicores": "ミリコア", + "CPU limit": "CPU の制限", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "コンテナーが使用できる CPU の最大量。超過した場合、コンテナーは抑えられます。", + "Memory request": "メモリ要求", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "コンテナーに保証されるメモリの最小量です。Kubernetes は、この量以上のメモリが利用可能なノードにポッドをスケジュールします。", "mebibytes": "メビバイト", - "Memory": "メモリ", "Memory limit": "メモリの制限", - "Memory Limits": "メモリの制限", - "Memory request": "メモリ要求", - "Memory Requests": "メモリ要求", - "Memory Resources": "メモリ リソース", - "Memory Usage": "メモリ使用量", - "Memory utilization": "メモリ使用率", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "クラスター {{clusterName}} をマージしています ({{count}} 個の名前空間)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "クラスター {{clusterName}} をマージしています ({{count}} 個の名前空間)", - "Metrics": "メトリック", - "Metrics refreshed every 30 seconds": "メトリックは 30 秒ごとに更新されます", - "Metrics Unavailable": "メトリック利用不可", - "millicores": "ミリコア", - "Min replicas": "最小レプリカ数", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "失敗後にプローブが成功と見なされるために、連続して成功する回数の最小値です。既定値は 1 です。", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "最小 CPU 保証 (1000 m = 1 CPU コア)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "最小メモリ保証 (1024 MiB = 1 GiB)", - "Minimum Replicas": "最小レプリカ数", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "必要な Azure コンテキストが不足しています。ご自分がログインしていることと、クラスターが有効なサブスクリプション、リソース グループ、テナントに関連付けられていることを確認してください。", - "Mounts the container's root filesystem as read-only to prevent write operations.": "書き込み操作を防ぐために、コンテナーのルート ファイルシステムを読み取り専用としてマウントします。", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "書き込み操作を防ぐために、コンテナーのルート ファイルシステムを読み取り専用としてマウントします。これにより、悪意のあるコードはシステム ファイルは変更できなくなり、セキュリティが強化されます。", - "Multi-file support (Deployments, Services, Ingress, etc.)": "複数ファイルのサポート (デプロイ、サービス、イングレスなど)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "小文字、数字、ハイフンのみを含み、先頭と末尾は英数字である必要があります", - "Name": "名前", - "Namespace": "名前空間", - "Namespace '{{name}}' converted and imported as project": "名前空間 '{{name}}' が変換され、プロジェクトとしてインポートされました", - "Namespace created successfully!": "名前空間が正常に作成されました。", - "Namespace Created Successfully!": "名前空間が正常に作成されました。", - "Namespace creation API succeeded, proceeding with user assignments": "名前空間作成 API が成功し、ユーザー割り当てを続行しています", - "Namespace creation completed successfully! Adding user access": "名前空間の作成が正常に完了しました。ユーザー アクセスを追加しています", - "Namespace Creation Failed": "名前空間の作成に失敗しました", - "Namespace creation failed: {{message}}": "名前空間の作成に失敗しました: {{message}}", - "Namespace creation initiated! Monitoring creation status": "名前空間の作成が開始されました。作成の状態を監視しています", - "Namespace Name": "名前空間の名前", - "Namespace name is required": "名前空間名は必須です", - "Namespace name must be 63 characters or fewer": "名前空間名は 63 文字以下である必要があります", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "名前空間名には、小文字の英字、数字、ハイフンのみを使用し、先頭と末尾は英数字である必要があります", - "Namespace status check failed: {{message}}": "名前空間の状態のチェックに失敗しました: {{message}}", - "Namespace status verification failed: {{message}}": "名前空間の状態の確認に失敗しました: {{message}}", - "namespace: {{namespace}}": "名前空間: {{namespace}}", - "Namespaces to convert:": "変換する名前空間:", - "Network I/O": "ネットワーク I/O", - "Network In": "ネットワーク受信", - "Network Out": "ネットワーク送信", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "クラスターを作成した後ではネットワーク ポリシー エンジンを変更できません。次のものを使用して新しいクラスターを作成します:", - "Networking": "ネットワーク", - "Networking Policies": "ネットワーク ポリシー", - "New Project": "新しいプロジェクト", - "Next": "次へ", - "No": "いいえ", - "No AKS clusters found in this subscription.": "このサブスクリプションに AKS クラスターが見つかりません。", - "No cluster is associated with this project.": "このプロジェクトに関連付けられているクラスターはありません。", - "No clusters found. Register a cluster first.": "クラスターが見つかりません。最初にクラスターを登録してください。", - "No clusters in this project.": "このプロジェクトにはクラスターがありません。", - "No clusters with Azure Entra ID authentication found for this subscription": "このサブスクリプションには Azure Entra ID 認証を使用しているクラスターが見つかりません", - "No data available": "使用可能なデータがありません", - "No deployments found": "デプロイが見つかりません", - "No Deployments Found": "デプロイが見つかりません", - "No deployments found in this namespace.": "この名前空間にはデプロイが見つかりません。", - "No description provided": "説明が提供されていません", - "No eligible clusters found in this subscription.": "このサブスクリプションに対象クラスターが見つかりません。", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "コンテナーが使用できるメモリの最大量。超過した場合、コンテナーは終了します (OOMKilled)。", + "Container Image": "コンテナー イメージ", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Azure Container Registry、Docker Hub、または GHCR からデプロイ", + "Auto-generated Deployment and Service manifests": "自動生成されたデプロイとサービスのマニフェスト", + "Guided configuration for ports, replicas, env, and resources": "ポート、レプリカ、環境変数、リソースのガイド付き構成", "No Kubernetes expertise required to get started": "開始するのに Kubernetes の専門知識は必要ありません", - "No options": "オプションなし", - "No pipeline runs yet.": "パイプラインはまだ実行していません。", - "No pods found for deployment \"{{name}}\"": "デプロイ \"{{name}}\" のポッドが見つかりません", - "No repositories found": "リポジトリが見つかりません", + "Bring your own Kubernetes manifests to deploy": "独自の Kubernetes マニフェストを使用してデプロイする", + "Use existing manifests for full control": "完全な制御のために既存のマニフェストを使用する", + "Multi-file support (Deployments, Services, Ingress, etc.)": "複数ファイルのサポート (デプロイ、サービス、イングレスなど)", + "Preview and basic validation before apply": "適用前のプレビューと基本的な検証", + "Select Source": "ソースの選択", + "Choose a source for your deployment (container image, repo, etc.).": "デプロイのソース (コンテナー イメージ、リポジトリなど) を選択します。", + "Deployment source": "デプロイ ソース", + "Features": "機能", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "ID リソース グループ", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "既存の ID を確認しています...", + "Creating managed identity...": "マネージド ID を作成しています...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "無効な YAML: 必須フィールド (kind) がありません", + "Invalid YAML: List resource must have an array \"items\" field": "無効な YAML: リスト リソースには配列の \"items\" フィールドが必要です", + "Invalid YAML: List item missing required field (kind)": "無効な YAML: リスト アイテムに必須フィールド (kind) がありません", + "Invalid YAML: List item missing required field (metadata.name)": "無効な YAML: リスト アイテムに必須フィールド (metadata.name) がありません", + "Invalid YAML: missing required field (metadata.name)": "無効な YAML: 必須フィールド (metadata.name) がありません", + "Invalid YAML": "YAML が無効です", + "Validation failed": "検証に失敗しました", + "Failed to apply": "適用できませんでした", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} 個のリソースが適用されましたが、{{failed}} 個が失敗しました:\n{{errors}}", + "Applied {{count}} resource(s) successfully._other": "{{count}} 個のリソースが正常に適用されました。", + "Failed to apply resources.": "リソースを適用できませんでした。", + "unnamed": "名前なし", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "コンテンツ", + "Push agent config files": "エージェント構成ファイルをプッシュする", + "Workflows": "ワークフロー", + "Create setup workflow in .github/workflows/": ".github/workflows/ でセットアップ ワークフローを作成します", + "Pull requests": "pull request", + "Create deployment PRs": "デプロイ PR の作成", + "Issues": "懸案事項", + "Track agent progress": "エージェントの進行状況を追跡する", + "Run deployment workflows": "デプロイ ワークフローを実行する", + "Connect to GitHub": "GitHub に接続", + "Connected to '{{username}}'.": "'{{username}}' に接続しました。", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS デスクトップでリポジトリにデプロイ パイプラインを作成することを認可します。", + "Required Permissions": "必要なアクセス許可", + "Complete authorization on your browser screen": "ブラウザー画面で認可を完了する", + "Connect": "接続", + "Select repository": "リポジトリの選択", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "ブラウザーでインストールを完了します。これは、アプリが {{repoName}} にインストールされると自動的に更新されます。", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "続けるには、AKS デスクトップ GitHub アプリを {{repoName}} にインストールする必要があります。", + "Reopen install page": "インストール ページを再度開く", + "Install GitHub App": "GitHub アプリのインストール", + "Checking...": "確認しています...", + "Connecting to GitHub...": "GitHub に接続しています...", + "Connect GitHub": "GitHub を接続", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "接続", + "Sign in to GitHub": "GitHub にサインイン", + "Failed to load repositories": "リポジトリを読み込めませんでした", + "Filter repositories": "リポジトリのフィルター処理", "No repositories match your filter": "フィルターに一致するリポジトリはありません", - "No response time data available": "使用可能な応答時間データがありません", - "No scaling data available": "使用可能なスケーリング データがありません", - "No subscriptions found": "サブスクリプションが見つかりません", - "Not specified": "指定されていません", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "注: AKS マネージド名前空間の場合、Azure ARM 管理は自動的に削除されます。", - "Number of Replicas": "レプリカの数", - "Number of seconds after the container has started before liveness probes are initiated.": "コンテナーが開始してから liveness probe が開始されるまでの秒数。", - "Number of seconds after the container has started before readiness probes are initiated.": "コンテナーが開始してから readiness probe が開始されるまでの秒数。", - "Number of seconds after the container has started before startup probes are initiated.": "コンテナーが開始してから startup probe が開始されるまでの秒数。", - "Number of seconds after which the probe times out. Default is 1 second.": "プローブがタイムアウトするまでの時間 (秒)。既定値は 1 秒です。", - "OIDC trust for": "次のものに対する OIDC 信頼:", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "エージェントによってデプロイ PR が作成されたら、生成されたファイルを確認し、マージしてデプロイ パイプラインを開始します", - "Only clusters with Azure Entra ID authentication are shown.": "Azure Entra ID 認証を使用しているクラスターのみが表示されています。", - "Performing final status verification": "最終状態の確認を行っています", - "periodSeconds": "periodSeconds", - "Pipeline": "パイプライン", + "No repositories found": "リポジトリが見つかりません", + "less than a minute": "1 分未満", + "{{count}} min_other": "{{count}} 分", + "Up next": "次の予定", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "マージの状態を確認しています...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "予想以上に時間がかかっています。最新の状態については GitHub で PR を確認してください。", + "This PR was closed without merging. You may need to restart the process.": "この PR はマージされずにクローズされました。プロセスの再起動が必要な場合があります。", + "Review on GitHub": "GitHub でレビュー", + "Agent is working": "エージェントは動作しています", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot コーディング エージェントは、Dockerfile、Kubernetes マニフェスト、GitHub Actions ワークフローを使用して、リポジトリの分析とデプロイ PR の生成を行っています。", + "Issue {{number}}": "issue {{number}}", + "Waiting for agent workflow to start...": "エージェント ワークフローの開始を待っています...", + "This typically takes 10–25 minutes.": "通常、これには 10 から 25 分かかります。", "Pipeline configured": "構成済みのパイプライン", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "ブラウザーで認証を完了してください。ログイン完了後、このウィンドウは自動的にリダイレクトされます。", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "続行するには、登録してください。", - "Please review all the settings before creating your AKS project": "AKS プロジェクトを作成する前に、すべての設定をレビューしてください", - "Please select a deployment to view metrics": "メトリックを表示するには、デプロイを選択してください", - "Please select a subscription first": "最初にサブスクリプションを選択してください", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} 用の CI/CD パイプラインの準備ができました。[デプロイ] タブからデプロイをトリガーします。", + "Setup PR reviewed and merged": "確認およびマージ済みのセットアップ PR", + "Copilot agent reviewed your repo and generated deployment PR": "Copilot エージェントがリポジトリを確認して、デプロイ PR を生成しました", + "Deployment PR reviewed and merged": "確認およびマージ済みのデプロイ PR", + "View deployment": "デプロイの表示", + "You can collapse this panel. Progress is saved and will resume when you return.": "このパネルは折りたたむことができます。進行状況は保存され、戻ると再開されます。", + "Creating setup PR...": "セットアップ PR を作成しています...", + "The agent is creating the setup PR to enable the Copilot agent.": "エージェントは Copilot エージェントを有効にするためのセットアップ PR を作成しています。", + "Setup PR Created": "セットアップ PR 作成済み", + "Review and merge the setup PR to enable the Copilot agent.": "セットアップ PR を確認してマージし、Copilot エージェントを有効にします。", + "Setting up Copilot agent...": "Copilot エージェントを設定しています...", + "Creating the trigger issue for the Copilot coding agent.": "Copilot コーディング エージェントのトリガー issue の作成。", + "Deployment PR Ready": "デプロイ PR の準備ができました", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "エージェントがデプロイ PR を作成しました。生成されたファイルを確認し、マージしてデプロイ パイプラインを開始してください。", + "Copilot agent": "Copilot エージェント", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "マージ後、Copilot エージェントはリポジトリを分析して、デプロイ PR を作成します", + "Deployment PR": "デプロイ PR", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "エージェントによってデプロイ PR が作成されたら、生成されたファイルを確認し、マージしてデプロイ パイプラインを開始します", + "Connect Source": "ソースの接続", + "Set up Copilot Agent": "Copilot エージェントの設定", + "Review & Merge": "確認とマージ", + "Collapse panel": "パネルを折りたたむ", + "Keep Going": "処理を続行", + "Discard": "破棄", + "Canceling will discard your pipeline progress. Are you sure?": "キャンセルすると、パイプラインの進行状況が破棄されます。よろしいですか?", + "Ensuring resource group exists...": "リソース グループの存在を確認しています...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "フェデレーション資格情報を構成しています...", + "Workload identity configured": "ワークロード ID が構成されました", + "Configure Workload Identity": "ワークロード ID の構成", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "GitHub Actions パイプラインが AKS クラスターで認証できるように、次の Azure リソースが作成されます。", + "Managed Identity": "マネージド ID", + "in resource group": "リソース グループ内", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "フェデレーション資格情報", + "OIDC trust for": "次のものに対する OIDC 信頼:", + "branch": "ブランチ", + "Resource group where the managed identity will be created": "マネージド ID が作成されるリソース グループ", + "Workload identity configured successfully.": "ワークロード ID が正常に構成されました。", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "これは、アクセス許可の問題である可能性があります。GitHub アプリのアクセス許可を確認して、もう一度お試しください。", + "The operation may still be running on GitHub. Check the link above for the latest status.": "操作が GitHub でまだ実行している可能性があります。上のリンクで最新の状態を確認してください。", + "Try again, or check GitHub for details.": "もう一度試すか、GitHub で詳細を確認してください。", + "Initializing...": "初期化しています...", + "Checking repository readiness...": "リポジトリの準備状況を確認しています...", + "Loading configuration...": "構成を読み込んでいます...", + "Unknown error": "不明なエラー", + "Trigger Copilot Agent": "Copilot エージェントのトリガー", + "Create Setup PR": "セットアップ PR の作成", + "Failed to fetch deployment status": "デプロイの状態をフェッチできませんでした", + "Failed to fetch pod status": "ポッドの状態をフェッチできませんでした", + "Failed to fetch service status": "サービスの状態をフェッチできませんでした", + "Failed to monitor deployment health": "デプロイの正常性を監視できませんでした", + "Convert Namespaces to AKS Projects": "名前空間を AKS プロジェクトに変換する", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "次の名前空間は、これらのラベルを追加して AKS デスクトップ プロジェクトに変換されます:", + "managed namespaces only": "マネージド名前空間のみ", + "Namespaces to convert:": "変換する名前空間:", + "Already AKS projects (will import directly):": "既に AKS プロジェクトです (直接インポートされます):", + "Converting": "変換中", + "Confirm & Import": "確認とインポート", "Please select at least one namespace to import": "インポートする名前空間を少なくとも 1 つ選択してください", - "Please sign in to Azure to continue.": "続けるには Azure にサインインしてください。", - "Pod Details": "ポッドの詳細", - "Pod Name": "ポッド名", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "可用性とフォールト トレランスを向上させるために、異なるノードでポッドのスケジュール設定を優先します。", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "可用性とフォールト トレランスを向上させるため、異なるノードでのポッドのスケジュール設定を優先します。これは、ポッドをクラスター全体に分散させるのに役立ちます。", - "Preview and basic validation before apply": "適用前のプレビューと基本的な検証", - "Preview Features": "プレビュー機能", - "Project '{{name}}' successfully imported": "プロジェクト '{{name}}' が正常にインポートされました", - "Project Basics": "プロジェクトの基本情報", - "Project Created Successfully!": "プロジェクトが正常に作成されました。", - "Project creation completed successfully!": "プロジェクトの作成が正常に完了しました。", - "Project Creation Failed": "プロジェクトの作成に失敗しました", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "プロジェクトの作成が 10 分後にタイムアウトしました。名前空間が作成されたかを確認してから、もう一度お試しください。", - "Project Description": "プロジェクトの説明", - "Project Name": "プロジェクト名", - "Project name is available": "プロジェクト名を使用できます", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "プロジェクト名に使用できるのは、小文字、数字、ハイフンのみです (スペースは不可)", - "Project Status": "プロジェクトの状態", - "Pull requests": "pull request", - "Push agent config files": "エージェント構成ファイルをプッシュする", - "Re-deploy": "再デプロイ", - "Read only root filesystem": "読み取り専用ルート ファイルシステム", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "名前空間内のほとんどのオブジェクトに対する読み取り専用アクセス。ロール、ロール バインド、またはシークレットを表示できません。", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "名前空間内のほとんどのオブジェクトに対する読み取り/書き込みアクセス。ロールまたはロール バインドの表示または変更はできません。名前空間内の任意の ServiceAccount として、シークレットにアクセスしてポッドを実行できます。", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "名前空間内のほとんどのリソースに対する読み取り/書き込みアクセス。名前空間内にロールとロール バインドを作成できます。リソース クォータや名前空間自体に書き込むことはできません。", - "Readiness path": "準備状況パス", - "Ready": "準備完了", - "Refresh": "最新の情報に更新", - "Refreshing": "更新中", - "Register AKS Cluster": "AKS クラスターの登録", - "Register Cluster": "クラスターの登録", - "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview 機能の登録", - "Registering": "登録しています", - "Registering cluster": "クラスターを登録しています", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "通常の名前空間をインポートする前に、クラスター {{clusterName}} を登録する必要があります。まず、このクラスターからマネージド名前空間をインポートしてください。", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "クラスター {{clusterName}} をマージしています ({{count}} 個の名前空間)", + "Failed to merge cluster: {{message}}": "クラスターをマージできませんでした: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} を AKS プロジェクトに変換しています (少し時間がかかる場合があります)...", + "Failed to convert namespace: {{message}}": "名前空間を変換できませんでした: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{clusterName}} から {{total}} 個中 {{current}} 個の {{name}} をインポートしています", + "Project '{{name}}' successfully imported": "プロジェクト '{{name}}' が正常にインポートされました", + "Namespace '{{name}}' converted and imported as project": "名前空間 '{{name}}' が変換され、プロジェクトとしてインポートされました", + "Successfully merged {{count}} cluster(s)_other": "{{count}} 個のクラスターが正常にマージされました", + "with {{count}} project(s)_other": "{{count}} 個のプロジェクトを含む", + "{{count}} failed._other": "{{count}} に失敗しました。", + "Failed to import any projects. See details below.": "プロジェクトをインポートできませんでした。以下の詳細をご確認ください。", + "Import AKS Projects": "AKS プロジェクトのインポート", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "既存のマネージド名前空間と通常の名前空間をプロジェクトとしてインポートします。まだ AKS デスクトップ プロジェクトでない名前空間は、必要なプロジェクト ラベルを追加して変換されます。", + "Select Namespaces to Import": "インポートする名前空間をの選択", + "{{count}} selected_other": "{{count}} 個が選択されました", + "Select All": "すべて選択", + "Deselect All": "すべて選択解除", + "AKS Managed": "AKS マネージド", "Regular": "標準", - "Regular Kubernetes namespace": "標準の Kubernetes 名前空間", - "remove": "削除", - "Remove assignee": "担当者を削除する", - "Reopen install page": "インストール ページを再度開く", - "Replica Bounds": "レプリカの境界", - "Replicas": "レプリカ", - "Request & error rate": "要求およびエラー率", + "AKS Project?": "AKS プロジェクトですか?", + "Yes": "はい", + "No": "いいえ", + "Importing": "インポート中", + "Import Selected Projects": "選択したプロジェクトのインポート", + "Failed to fetch managed namespaces": "マネージド名前空間を取得できませんでした", + "Failed to fetch managed namespace details": "マネージド名前空間の詳細を取得できませんでした", + "Failed to update managed namespace": "マネージド名前空間を更新できませんでした", + "Updating": "更新中", + "Update": "更新", + "AKS desktop logo": "AKS デスクトップ ロゴ", + "No Deployments Found": "デプロイが見つかりません", + "There are no deployments in this project namespace yet.": "このプロジェクト名前空間にはまだデプロイがありません。", + "Deploy an application to view logs.": "ログを表示するアプリケーションをデプロイします。", + "Metrics": "メトリック", + "CPU Usage": "CPU 使用率", + "Memory Usage": "メモリ使用量", "Request Rate": "要求率", - "Requests": "要求", - "Required Permissions": "必要なアクセス許可", - "Resource Group": "リソース グループ", - "Resource group where the managed identity will be created": "マネージド ID が作成されるリソース グループ", - "Resource Limits": "リソースの制限", - "Resource Usage": "リソース配分状況", - "Resources to be deployed ({{count}} object)_one": "デプロイするリソース ({{count}} 個のオブジェクト)", - "Resources to be deployed ({{count}} object)_other": "デプロイするリソース ({{count}} 個のオブジェクト)", + "Error Rate": "エラー率", + "Metrics refreshed every 30 seconds": "メトリックは 30 秒ごとに更新されます", + "Select a deployment to view metrics": "メトリックを表示するデプロイを選択する", + "Metrics Unavailable": "メトリック利用不可", + "Application Metrics": "アプリケーション メトリック", + "Request & error rate": "要求およびエラー率", + "No data available": "使用可能なデータがありません", "Response Time": "応答時間", + "Memory utilization": "メモリ使用率", + "Network I/O": "ネットワーク I/O", + "Deploy an application to start viewing metrics.": "メトリックの表示を開始するには、アプリケーションをデプロイしてください。", + "Please select a deployment to view metrics": "メトリックを表示するには、デプロイを選択してください", + "Project Status": "プロジェクトの状態", + "Total Pods": "ポッドの合計数", + "Application Health": "アプリケーションの正常性", + "Loading metrics": "メトリックを読み込んでいます", + "Resource Usage": "リソース配分状況", + "Avg Response Time": "平均応答時間", + "No response time data available": "使用可能な応答時間データがありません", + "Absolute usage": "絶対使用量", + "Network In": "ネットワーク受信", + "Network Out": "ネットワーク送信", + "Pod Details": "ポッドの詳細", + "Pod Name": "ポッド名", "Restarts": "再起動します", - "Retry": "再試行", - "Review": "レビュー", - "Review & Deploy": "レビューとデプロイ", - "Review & Merge": "確認とマージ", - "Review and merge the setup PR to enable the Copilot agent.": "セットアップ PR を確認してマージし、Copilot エージェントを有効にします。", - "Review on GitHub": "GitHub でレビュー", - "Review Project Configuration": "プロジェクト構成のレビュー", - "Role": "ロール", - "Role Assignment": "ロールの割り当て", - "Run as non root user": "非ルート ユーザーとして実行する", - "Run deployment workflows": "デプロイ ワークフローを実行する", - "Save": "保存", - "Scaled down": "スケールダウン済み", - "Scaling": "スケーリング", + "No pods found for deployment \"{{name}}\"": "デプロイ \"{{name}}\" のポッドが見つかりません", + "Preview Features": "プレビュー機能", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "まだ開発中の機能を有効または無効にします。プレビュー機能は今後のリリースで変更または削除される可能性があります。", + "GitHub Pipelines": "GitHub パイプライン", + "Enable GitHub-based deployment pipelines for AKS projects.": "AKS プロジェクトの GitHub ベースのデプロイ パイプラインを有効にします。", + "Loading scaling metrics from Prometheus": "Prometheus からスケーリング メトリックを読み込んでいます", "Scaling Chart Unavailable": "スケーリング チャートは使用できません", - "Scaling History (Last 24 Hours)": "スケーリング履歴 (過去 24 時間)", + "No scaling data available": "使用可能なスケーリング データがありません", + "Edit HPA Configuration": "HPA 構成の編集", + "Edit Manual Scaling Configuration": "手動スケーリング構成の編集", + "Minimum Replicas": "最小レプリカ数", + "Maximum Replicas": "最大レプリカ数", + "Target CPU Utilization (%)": "ターゲット CPU 使用率 (%)", + "Number of Replicas": "レプリカの数", + "Set the desired number of pod replicas for this deployment": "このデプロイに必要なポッド レプリカの数を設定する", + "Save": "保存", "Scaling Mode": "スケーリング モード", - "Scaling Overview": "スケーリングの概要", - "Search clusters": "クラスターを検索する", - "Search subscriptions": "サブスクリプションを検索する", - "Select a cluster": "クラスターを選択する", - "Select a deployment to view metrics": "メトリックを表示するデプロイを選択する", + "Current Replicas": "現在のレプリカ数", + "Desired Replicas": "必要なレプリカ数", + "Configured Replicas": "構成済みレプリカ", + "Replica Bounds": "レプリカの境界", + "Available Replicas": "使用可能なレプリカ", + "CPU Usage / Target": "CPU 使用率/目標", + "Scaling": "スケーリング", "Select a deployment to view scaling metrics": "スケーリング メトリックを表示するデプロイを選択する", - "Select a subscription": "サブスクリプションを選択します", - "Select All": "すべて選択", - "Select an AKS cluster": "AKS クラスターを選択する", - "Select an Azure subscription": "Azure サブスクリプションを選択します", - "Select an option": "オプションを選択する", + "Scaling Overview": "スケーリングの概要", + "Edit Configuration": "構成の編集", + "Scaling History (Last 24 Hours)": "スケーリング履歴 (過去 24 時間)", + "Copied!": "コピーしました。", + "Copy": "コピー", + "Copy to clipboard": "クリップボードにコピー", + "No deployments found": "デプロイが見つかりません", "Select Deployment": "デプロイの選択", - "Select Namespaces to Import": "インポートする名前空間をの選択", - "Select repository": "リポジトリの選択", - "Select Source": "ソースの選択", - "Selected Cluster Details": "選択したクラスターの詳細", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "選択したクラスターが kubeconfig にありません。続行する前に登録してください。", - "Service port": "サービス ポート", - "Service type": "サービスの種類", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "リソースの割り当てを制御し、コンテナーがクラスター リソースを過剰に消費しないよう、CPU とメモリの要求 (保証されたリソース) と制限 (最大リソース) を設定します。", - "Set quota limits to prevent overuse and maintain cluster stability": "クォータの制限を設定して、過剰使用を防ぎ、クラスターの安定性を維持する", - "Set security, communication and access rules for incoming and outgoing traffic": "受信および送信トラフィックのセキュリティ、通信、アクセス規則を設定する", - "Set the desired number of pod replicas for this deployment": "このデプロイに必要なポッド レプリカの数を設定する", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "CI/CD パイプラインを設定して、デプロイを自動化し、ワークフローを効率化します", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Azure Kubernetes Service (AKS) で新しいプロジェクトを設定して構成する", - "Set up Copilot Agent": "Copilot エージェントの設定", - "Set up your pipeline": "パイプラインの設定", - "Setting up Copilot agent...": "Copilot エージェントを設定しています...", - "Setup PR Created": "セットアップ PR 作成済み", - "Setup PR reviewed and merged": "確認およびマージ済みのセットアップ PR", - "Sign in": "サインイン", - "Sign in to GitHub": "GitHub にサインイン", - "Sign in to GitHub to view pipeline runs.": "パイプラインの実行を表示するには、GitHub にサインインします。", - "Sign in with Azure": "Azure でサインインする", - "Sign in with your Azure account to manage AKS clusters and resources": "Azure アカウントでサインインして、AKS クラスターとリソースを管理する", - "Source": "ソース", - "Starting project creation": "プロジェクトの作成を開始しています", - "Startup path": "スタートアップ パス", - "Status": "状態", - "Subscription": "サブスクリプション", + "Loading deployments": "デプロイを読み込んでいます", + "No cluster is associated with this project.": "このプロジェクトに関連付けられているクラスターはありません。", + "Please sign in to Azure to continue.": "続けるには Azure にサインインしてください。", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "必要な Azure コンテキストが不足しています。ご自分がログインしていることと、クラスターが有効なサブスクリプション、リソース グループ、テナントに関連付けられていることを確認してください。", + "Failed to load Azure context": "Azure コンテキストを読み込めませんでした", + "just now": "たった今", + "{{seconds}}s ago": "{{seconds}} 秒前", + "{{minutes}} min ago": "{{minutes}} 分前", + "{{hours}}h ago": "{{hours}} 時間前", + "{{days}}d ago": "{{days}} 日前", + "{{weeks}}w ago": "{{weeks}} 週間前", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} 個のクラスターが非表示です - Azure Entra ID がありません", + "{{count}} eligible cluster(s) found._one": "{{count}} 個の対象クラスターが見つかりました。", + "{{count}} failed._one": "{{count}} に失敗しました。", + "{{count}} min_one": "{{count}} 分", + "{{count}} selected_one": "{{count}} 個が選択されました", + "Access Control ({{count}} assignee)_one": "アクセス制御 ({{count}} 人の担当者)", + "Applied {{count}} resource(s) successfully._one": "{{count}} 個のリソースが正常に適用されました。", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "クラスター {{clusterName}} をマージしています ({{count}} 個の名前空間)", + "Resources to be deployed ({{count}} object)_one": "デプロイするリソース ({{count}} 個のオブジェクト)", "Successfully merged {{count}} cluster(s)_one": "{{count}} 個のクラスターが正常にマージされました", - "Successfully merged {{count}} cluster(s)_other": "{{count}} 個のクラスターが正常にマージされました", - "successThreshold": "successThreshold", - "Target CPU utilization": "ターゲット CPU 使用率", - "Target CPU Utilization (%)": "ターゲット CPU 使用率 (%)", - "Target port": "ターゲット ポート", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "エージェントがデプロイ PR を作成しました。生成されたファイルを確認し、マージしてデプロイ パイプラインを開始してください。", - "The agent is creating the setup PR to enable the Copilot agent.": "エージェントは Copilot エージェントを有効にするためのセットアップ PR を作成しています。", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "続けるには、AKS デスクトップ GitHub アプリを {{repoName}} にインストールする必要があります。", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "マネージド名前空間を作成するには、aks-preview 拡張機能が必要です。続行するには、インストールしてください。", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot コーディング エージェントは、Dockerfile、Kubernetes マニフェスト、GitHub Actions ワークフローを使用して、リポジトリの分析とデプロイ PR の生成を行っています。", - "The following addons can be enabled on this cluster:": "このクラスターでは、次のアドオンを有効にできます。", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "GitHub Actions パイプラインが AKS クラスターで認証できるように、次の Azure リソースが作成されます。", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "次の名前空間は、これらのラベルを追加して AKS デスクトップ プロジェクトに変換されます:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "ライブネスを調べるための HTTP パス (例: /healthz)。プローブはこのパスに対して HTTP GET 要求を実行します。", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "準備状況を調べるための HTTP パス (例: /ready)。プローブはこのパスに対して HTTP GET 要求を実行します。", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "スタートアップを調べるための HTTP パス (例: /startup)。プローブはこのパスに対して HTTP GET 要求を実行します。", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "マネージド名前空間を作成するには、ManagedNamespacePreview 機能を登録する必要があります。", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "コンテナーが使用できる CPU の最大量。超過した場合、コンテナーは抑えられます。", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "コンテナーが使用できるメモリの最大量。超過した場合、コンテナーは終了します (OOMKilled)。", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "CPU 使用率が高い場合に HPA がスケールアップできるポッド レプリカの最大数。", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "コンテナーに保証される CPU の最小量です。Kubernetes は、この量以上の CPU が利用可能なノードにポッドをスケジュールします。", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "コンテナーに保証されるメモリの最小量です。Kubernetes は、この量以上のメモリが利用可能なノードにポッドをスケジュールします。", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "CPU 使用率が低くても HPA が維持するポッド レプリカの最小数。", - "The namespace will be created on the selected cluster and set up as a project": "選択したクラスターに名前空間が作成され、プロジェクトとして設定されます", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "実行するポッド レプリカの数。レプリカの数が多いほど、可用性と負荷分散が向上します。", - "The operation may still be running on GitHub. Check the link above for the latest status.": "操作が GitHub でまだ実行している可能性があります。上のリンクで最新の状態を確認してください。", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes サービスによって公開されるポート番号。このポートへのトラフィックはターゲット ポートに転送されます。", - "The port number that your container listens on. This is the port inside the container where your application runs.": "コンテナーがリッスンするポート番号。これはアプリケーションが実行されるコンテナー内のポートです。", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "すべてのポッドの平均 CPU 使用率の目標値です。CPU 使用率がこの値を超えると HPA がスケールアップし、下回るとスケールダウンします。", - "There are no deployments in this project namespace yet.": "このプロジェクト名前空間にはまだデプロイがありません。", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "予想以上に時間がかかっています。最新の状態については GitHub で PR を確認してください。", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "これは、アクセス許可の問題である可能性があります。GitHub アプリのアクセス許可を確認して、もう一度お試しください。", - "This PR was closed without merging. You may need to restart the process.": "この PR はマージされずにクローズされました。プロセスの再起動が必要な場合があります。", - "This typically takes 10–25 minutes.": "通常、これには 10 から 25 分かかります。", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "ポッドの合計数", - "Track agent progress": "エージェントの進行状況を追跡する", - "Trigger": "トリガー", - "Trigger Copilot Agent": "Copilot エージェントのトリガー", - "Triggering...": "トリガーしています...", - "Try again, or check GitHub for details.": "もう一度試すか、GitHub で詳細を確認してください。", - "Type": "型", - "Unknown error": "不明なエラー", - "unnamed": "名前なし", - "Up next": "次の予定", - "Update": "更新", - "Updating": "更新中", - "Updating local settings": "ローカル設定を更新しています", - "Upload files": "ファイルをアップロードする", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "ClusterIP を使用します。クラスター内でのみ到達可能なサービスに最適です。", - "Use custom service port": "カスタム サービス ポートを使用する", - "Use existing manifests for full control": "完全な制御のために既存のマニフェストを使用する", - "User assignment completed with errors": "ユーザー割り当てが完了しましたが、エラーが発生しました", - "Validation failed": "検証に失敗しました", - "Value": "値", - "View deployment": "デプロイの表示", - "View on GitHub": "GitHub 上で表示", - "View run on GitHub": "GitHub で実行を表示する", - "View workflow run": "ワークフロー実行の表示", - "VPA (Vertical Pod Autoscaler)": "VPA (垂直ポッド自動スケーラー)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "エージェント ワークフローの開始を待っています...", - "Waiting for browser authorization...": "ブラウザーの認可を待っています...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "ログインの完了を待機しています...(残り {{minutes}} 分)", - "Waiting for namespace to be created": "名前空間の作成を待機しています", - "Waiting for namespace to propagate": "名前空間の伝達を待機しています", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "警告: この操作は元に戻せません。これらの名前空間内のすべてのリソースは完全に削除されます。", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "プローブが失敗した場合、Kubernetes はあきらめてコンテナーを再起動する前にこの回数だけ試行します。", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "プローブが失敗した場合、Kubernetes はあきらめる前にこの回数だけ試行します。startup probe の場合、これにより再起動までの待ち時間が決まります。", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "プローブが失敗すると、Kubernetes はポッドを準備完了ではないとマークする前にこの回数だけ試行します。", - "with {{count}} project(s)_one": "{{count}} 個のプロジェクトを含む", - "with {{count}} project(s)_other": "{{count}} 個のプロジェクトを含む", - "with the following parameters:": "次のパラメーターを使用:", - "Wizard steps": "ウィザードの手順", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "ワークフロー ディスパッチが正常にトリガーされました。GitHub Actions で進行状況を確認してください。", - "workflow on": "次のものでのワークフロー:", - "Workflows": "ワークフロー", - "Workload identity configured": "ワークロード ID が構成されました", - "Workload identity configured successfully.": "ワークロード ID が正常に構成されました。", - "Workloads": "ワークロード", - "Yes": "はい", - "You can collapse this panel. Progress is saved and will resume when you return.": "このパネルは折りたたむことができます。進行状況は保存され、戻ると再開されます。", - "You need to be logged in to Azure to register AKS clusters.": "AKS クラスターを登録するには、Azure にログインする必要があります。", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "AKS プロジェクト \"{{projectName}}\" が作成され、使用する準備ができました。", - "Your project \"{{projectName}}\" is ready to use.": "プロジェクト \"{{projectName}}\" が使用できる状態です。" + "with {{count}} project(s)_one": "{{count}} 個のプロジェクトを含む" } diff --git a/plugins/aks-desktop/locales/ko/translation.json b/plugins/aks-desktop/locales/ko/translation.json index af935e224..de884d40d 100644 --- a/plugins/aks-desktop/locales/ko/translation.json +++ b/plugins/aks-desktop/locales/ko/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "리소스 그룹으로 범위가 지정된 \"AKS 클러스터 사용자 역할\"", - "(already enabled)": "(이미 활성화됨)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}}개의 클러스터 숨김 - Azure Entra ID 없음", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}}개의 클러스터 숨김 - Azure Entra ID 없음", - "{{count}} eligible cluster(s) found._one": "{{count}}개의 적합한 클러스터를 찾았습니다.", - "{{count}} eligible cluster(s) found._other": "{{count}}개의 적합한 클러스터를 찾았습니다.", - "{{count}} failed._one": "{{count}}개가 실패했습니다.", - "{{count}} failed._other": "{{count}}개가 실패했습니다.", - "{{count}} min_one": "{{count}}분", - "{{count}} min_other": "{{count}}분", - "{{count}} selected_one": "{{count}}개가 선택됨", - "{{count}} selected_other": "{{count}}개가 선택됨", - "{{days}}d ago": "{{days}}일 전", - "{{hours}}h ago": "{{hours}}시간 전", - "{{minutes}} min ago": "{{minutes}}분 전", - "{{seconds}}s ago": "{{seconds}}초 전", - "{{weeks}}w ago": "{{weeks}}주 전", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "클러스터를 선택해야 함", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "프로젝트 레이블이 적용된 새 네임스페이스가 클러스터에 생성됩니다. 새 네임스페이스는 프로젝트 목록에 즉시 표시됩니다.", - "Absolute usage": "절대 사용량", - "Access": "액세스", - "Access Control ({{count}} assignee)_one": "액세스 제어(담당자 {{count}}명)", - "Access Control ({{count}} assignee)_other": "액세스 제어(담당자 {{count}}명)", - "Actions": "작업", - "Add assignee": "담당자 추가", - "Add Cluster from Azure": "Azure에서 클러스터 추가", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Kubernetes 매니페스트를 하나 이상 추가합니다. 파일을 업로드하여 편집기를 채우거나 아래에 직접 붙여넣고 편집할 수 있습니다.", - "Add variable": "변수 추가", - "Advanced": "고급", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "병합 후 Copilot 에이전트는 리포지토리를 분석하고 배포 PR을 만듭니다.", - "Agent is working": "에이전트가 작업 중임", + "Failed to load subscriptions": "구독을 로드하지 못했음", + "Failed to load AKS clusters": "AKS 클러스터를 로드하지 못 함", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "클러스터 '{{cluster}}'이(가) kubeconfig에 병합됨", + "Failed to register cluster: {{message}}": "클러스터를 등록하지 못 함: {{message}}", + "Register AKS Cluster": "AKS 클러스터 등록", + "Checking authentication status": "인증 상태를 확인하는 중", + "You need to be logged in to Azure to register AKS clusters.": "AKS 클러스터를 등록하려면 Azure에 로그인해야 합니다.", + "Subscription": "구독", + "Select an Azure subscription": "Azure 구독을 선택합니다.", + "Loading subscriptions": "구독을 로드하는 중", + "Loading AKS clusters": "AKS 클러스터를 로드하는 중", + "No AKS clusters found in this subscription.": "이 구독에서 AKS 클러스터를 찾을 수 없음", "AKS Cluster": "AKS 클러스터", - "AKS desktop logo": "AKS 데스크톱 로고", - "AKS Managed": "AKS 관리됨", - "AKS Preview Extension installed successfully!": "AKS 미리 보기 확장을 설치했습니다.", - "AKS Preview Extension Required": "AKS 미리 보기 확장 필요", - "AKS Project?": "AKS 프로젝트인가요?", - "All selected addons have been enabled successfully.": "선택한 모든 추가 기능을 사용하도록 설정했습니다.", - "All verifications completed successfully!": "모든 확인이 완료되었습니다.", - "Allow all traffic": "모든 트래픽 허용", - "Allow privilege escalation": "권한 상승 허용", - "Allow traffic within same namespace": "동일한 네임스페이스 내에서 트래픽 허용", - "Already AKS projects (will import directly):": "이미 AKS 프로젝트인 항목(직접 가져옴):", - "Also delete the namespaces (this will remove all resources within them)": "네임스페이스도 삭제합니다(네임스페이스 내 모든 리소스가 제거됨).", - "Another project already exists with same name. Please choose a different name.": "이름이 같은 다른 프로젝트가 이미 있습니다. 다른 이름을 선택하세요.", - "Application Health": "애플리케이션 상태", - "Application Metrics": "애플리케이션 메트릭", - "Application name": "애플리케이션 이름", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "리소스 {{applied}}개를 적용했으나, {{failed}}개가 실패했습니다.\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "리소스 {{count}}개를 적용했습니다.", - "Applied {{count}} resource(s) successfully._other": "리소스 {{count}}개를 적용했습니다.", - "Are you sure you want to delete project \"{{projectId}}\"?": "프로젝트 \"{{projectId}}\"을(를) 삭제하시겠습니까?", - "Assign permissions to users who need access to your namespace": "네임스페이스에 액세스해야 하는 사용자에게 사용 권한 할당", - "Assignee": "담당자", - "Assigning AKS Cluster User Role...": "AKS 클러스터 사용자 역할 할당 중...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS 데스크톱에 리포지토리에서 배포 파이프라인을 생성할 권한을 부여합니다.", - "Auto-generated Deployment and Service manifests": "자동 생성된 배포 및 서비스 매니페스트", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "CPU 사용률에 따라 Pod 수를 자동으로 조정합니다. HPA는 CPU 사용량이 목표치를 초과하면 Pod를 늘리고, 그 이하일 때는 줄입니다.", - "Available Replicas": "사용 가능한 복제본", - "Avg Response Time": "평균 응답 시간", - "Azure Account": "Azure 계정", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "AKS 클러스터 선택", + "Selected Cluster Details": "선택한 클러스터 세부 정보", + "Name": "이름", + "Resource Group": "리소스 그룹", + "Location": "위치", + "Kubernetes Version": "Kubernetes 버전", + "Done": "완료", + "Cancel": "취소", + "Registering": "등록 중", + "Register Cluster": "클러스터 등록", + "Initiating Azure login": "Azure 로그인을 시작하는 중", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "브라우저에서 인증을 완료하세요. 로그인이 완료되면 이 창이 자동으로 리디렉션됩니다.", + "Login successful! Redirecting": "로그인 성공! 리디렉션 중", + "Login timeout. Please try again.": "로그인 시간이 초과되었습니다. 다시 시도하세요.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "로그인 완료를 기다리는 중... ({{minutes}}분 남음)", + "Failed to initiate login: {{message}}": "로그인을 시작하지 못함: {{message}}", "Azure Authentication": "Azure 인증", - "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview 요구 사항이 충족되지 않음", - "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor 메트릭(관리 Prometheus)", + "Sign in with your Azure account to manage AKS clusters and resources": "AKS 클러스터와 리소스를 관리하려면 Azure 계정으로 로그인", + "Sign in with Azure": "Azure로 로그인", + "Loading Azure account information": "Azure 계정 정보를 로드하는 중", "Back": "뒤로", - "Basics": "기본 사항", - "branch": "분기", - "Bring your own Kubernetes manifests to deploy": "배포할 고유한 Kubernetes 매니페스트 가져오기", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "기본적으로 프로브는 루트 경로에서 합리적인 기본값과 함께 HTTP GET을 사용합니다. 프로브 설정을 사용자 지정하려면 활성화합니다.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "기본적으로 서비스 포트는 대상 포트와 일치합니다. 서비스에 다른 포트를 사용하려면 활성화합니다.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "기본적으로 다음 네임스페이스에서 Azure 관리 네임스페이스 및 프로젝트 레이블이 제거됩니다.", - "Cancel": "취소", - "Canceling will discard your pipeline progress. Are you sure?": "취소하면 파이프라인 진행률이 삭제됩니다. 계속하시겠습니까?", - "Cancelled deletion of project {{ projectId }}.": "프로젝트 {{ projectId }} 삭제가 취소되었습니다.", - "Checking authentication status": "인증 상태를 확인하는 중", - "Checking for existing identity...": "기존 ID를 확인하는 중...", - "Checking if another project exists with same name": "이름이 같은 다른 프로젝트가 있는지 확인하는 중", - "Checking merge status...": "병합 상태를 확인하는 중...", - "Checking repository readiness...": "리포지토리 준비 상태를 확인하는 중...", - "Checking...": "확인하는 중...", - "Choose a source for your deployment (container image, repo, etc.).": "배포에 사용할 원본(컨테이너 이미지, 리포지토리 등)을 선택합니다.", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}}에 대한 CI/CD 파이프라인이 준비되었습니다. 배포 탭에서 배포를 트리거하세요.", - "Clear editor": "편집기 지우기", - "Close": "닫기", - "Cluster": "클러스터", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "클러스터 '{{cluster}}'이(가) kubeconfig에 병합됨", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "일반 네임스페이스를 가져오려면 먼저 {{clusterName}} 클러스터를 등록해야 합니다. 먼저 이 클러스터에서 관리되는 네임스페이스를 가져오세요.", - "Cluster Configuration": "클러스터 구성", - "Cluster is being deleted. Cannot deploy to this cluster.": "클러스터를 삭제하는 중입니다. 이 클러스터에 배포할 수 없습니다.", + "Azure Account": "Azure 계정", + "Logged in as": "다음으로 로그인함", + "Add Cluster from Azure": "Azure에서 클러스터 추가", + "Logging out": "로그아웃하는 중", + "Log out": "로그아웃", + "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview 요구 사항이 충족되지 않음", + "Dismiss": "해제", + "Configure Pipeline": "파이프라인 구성", + "Loading Azure context...": "Azure 컨텍스트를 로드하는 중...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "네임스페이스의 대부분의 개체에 대한 읽기 전용 액세스입니다. 역할, 역할 바인딩 또는 비밀을 볼 수 없습니다.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "네임스페이스의 대부분의 개체에 대한 읽기/쓰기 권한입니다. 역할 또는 역할 바인딩을 보거나 수정할 수 없습니다. 비밀에 액세스하고 네임스페이스에서 ServiceAccount로 Pod를 실행할 수 있습니다.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "네임스페이스의 대부분의 리소스에 대한 읽기/쓰기 권한입니다. 네임스페이스 내에서 역할 및 역할 바인딩을 만들 수 있습니다. 리소스 할당량이나 네임스페이스 자체에는 쓸 수 없습니다.", + "Access": "액세스", + "Assign permissions to users who need access to your namespace": "네임스페이스에 액세스해야 하는 사용자에게 사용 권한 할당", + "Assignee": "담당자", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "역할", + "Remove assignee": "담당자 제거", + "Add assignee": "담당자 추가", + "Only clusters with Azure Entra ID authentication are shown.": "Azure Entra ID 인증을 사용하는 클러스터만 표시됩니다.", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}}개의 클러스터 숨김 - Azure Entra ID 없음", + "No eligible clusters found in this subscription.": "이 구독에서 적합한 클러스터를 찾을 수 없습니다.", + "{{count}} eligible cluster(s) found._other": "{{count}}개의 적합한 클러스터를 찾았습니다.", "Cluster is currently updating. Deployment may fail.": "클러스터가 현재 업데이트되는 중입니다. 배포가 실패할 수 있습니다.", - "Cluster is deallocated. Please start the cluster before deploying.": "클러스터가 할당 취소되었습니다. 배포하기 전에 클러스터를 시작하세요.", - "Cluster is in a failed state. Please check Azure portal.": "클러스터가 실패 상태입니다. Azure Portal을 확인하세요.", + "Cluster is being deleted. Cannot deploy to this cluster.": "클러스터를 삭제하는 중입니다. 이 클러스터에 배포할 수 없습니다.", "Cluster is still being created. Please wait until creation completes.": "클러스터가 아직 만들어지는 중입니다. 만들기가 완료될 때까지 기다리세요.", + "Cluster is in a failed state. Please check Azure portal.": "클러스터가 실패 상태입니다. Azure Portal을 확인하세요.", "Cluster is stopped. Please start the cluster before deploying.": "클러스터가 중지되었습니다. 배포하기 전에 클러스터를 시작하세요.", + "Cluster is deallocated. Please start the cluster before deploying.": "클러스터가 할당 취소되었습니다. 배포하기 전에 클러스터를 시작하세요.", + "AKS Preview Extension Required": "AKS 미리 보기 확장 필요", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "관리형 네임스페이스를 만드는 데 aks-preview 확장이 필요합니다. 계속하려면 설치하세요.", + "Installing": "설치 중", + "Install Extension": "확장 설치", + "AKS Preview Extension installed successfully!": "AKS 미리 보기 확장을 설치했습니다.", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "관리형 네임스페이스를 만들려면 ManagedNamespacePreview 기능을 등록해야 합니다.", + "Current state": "현재 상태", + "Please register it to continue.": "계속하려면 등록하세요.", + "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview 기능 등록", + "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 기능이 등록되었습니다.", + "Project Name": "프로젝트 이름", + "Checking if another project exists with same name": "이름이 같은 다른 프로젝트가 있는지 확인하는 중", + "Another project already exists with same name. Please choose a different name.": "이름이 같은 다른 프로젝트가 이미 있습니다. 다른 이름을 선택하세요.", + "Project name is available": "프로젝트 이름을 사용할 수 있음", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "프로젝트 이름에는 소문자, 숫자, 하이픈만 포함해야 합니다(공백 없음).", + "Project Description": "프로젝트 설명", + "Enter project description": "프로젝트 설명 입력", + "Select a subscription": "구독 선택", + "Search subscriptions": "구독 검색", + "No subscriptions found": "구독을 찾을 수 없음", + "Retry": "다시 시도", + "Cluster": "클러스터", + "Please select a subscription first": "먼저 구독을 선택하세요", + "Loading clusters": "클러스터를 로드하는 중", + "Select a cluster": "클러스터 선택", + "Search clusters": "클러스터 검색", + "No clusters with Azure Entra ID authentication found for this subscription": "이 구독에 Azure Entra ID 인증이 있는 클러스터가 없음", "Cluster Not Ready": "클러스터가 준비되지 않음", - "Collapse panel": "패널 축소", - "Complete authorization on your browser screen": "브라우저 화면에서 권한 부여 완료", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "브라우저에서 설치를 완료합니다. {{repoName}}에 앱이 설치되면 자동으로 업데이트됩니다.", - "Compute Quota": "컴퓨팅 할당량", - "Configuration Complete": "구성 완료", - "Configuration Error": "구성 오류", + "Refreshing": "새로 고치는 중", + "Refresh": "새로 고침", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "선택한 클러스터가 kubeconfig에 없습니다. 계속하기 전에 등록하세요.", + "Registering cluster": "클러스터 등록 중", + "Wizard steps": "마법사 단계", + "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor 메트릭(관리 Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA(이벤트 기반 자동 크기 조정)", + "VPA (Vertical Pod Autoscaler)": "VPA(세로 Pod 자동 크기 조정기)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "구성이 예상보다 오래 걸리고 있습니다. 클러스터의 현재 상태는 Azure Portal에서 확인하세요.", - "Configure": "구성", - "Configure Cluster": "클러스터 구성", - "Configure Container Deployment": "컨테이너 배포 구성", - "Configure container health probes.": "컨테이너 상태 프로브를 구성합니다.", - "Configure Pipeline": "파이프라인 구성", - "Configure security context settings for the container.": "컨테이너의 보안 컨텍스트 설정을 구성합니다.", - "Configure Workload Identity": "워크로드 ID 구성", - "Configured Replicas": "구성된 복제본", + "Failed to enable addons": "추가 기능을 활성화하지 못함", + "Failed to enable addon: {{error}}": "추가 기능을 사용하도록 설정하지 못했습니다. {{error}}", + "Cluster Configuration": "클러스터 구성", + "(already enabled)": "(이미 활성화됨)", + "The following addons can be enabled on this cluster:": "이 클러스터에서 다음 추가 기능을 사용하도록 설정할 수 있습니다.", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "클러스터를 만든 후에는 네트워크 정책 엔진을 변경할 수 없습니다. 다음을 사용해 새 클러스터를 만들기", + "for full network policy support.": "전체 네트워크 정책 지원.", + "Enabling these addons may incur additional Azure costs.": "이러한 추가 기능을 사용하도록 설정하면 추가 Azure 비용이 발생할 수 있습니다.", + "Configuration Error": "구성 오류", + "Configuration Complete": "구성 완료", + "All selected addons have been enabled successfully.": "선택한 모든 추가 기능을 사용하도록 설정했습니다.", "Configuring cluster... This may take a few minutes.": "클러스터를 구성하는 중... 몇 분 정도 걸릴 수 있습니다.", - "Configuring federated credential...": "페더레이션 자격 증명을 구성하는 중...", + "Enabling Addons...": "추가 기능을 사용하도록 설정하는 중...", "Configuring...": "구성 중...", - "Confirm & Import": "확인 및 가져오기", - "Connect": "연결", - "Connect GitHub": "GitHub 연결", - "Connect Source": "원본 연결", - "Connect to GitHub": "GitHub에 연결", - "Connected": "연결됨", - "Connected to '{{username}}'.": "'{{username}}'에 연결되었습니다.", - "Connecting to GitHub...": "GitHub에 연결하는 중...", - "Connecting...": "연결 중...", - "Container image": "컨테이너 이미지", - "Container Image": "컨테이너 이미지", - "Contents": "콘텐츠", - "Continue": "계속", - "Controls whether a process can gain more privileges than its parent process.": "프로세스가 부모 프로세스보다 더 높은 권한을 얻을 수 있는지 여부를 제어합니다.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "프로세스가 부모 프로세스보다 더 많은 권한을 얻을 수 있는지 여부를 제어합니다. 이(권장)를 사용하지 않도록 설정하면 권한 상승 공격을 방지할 수 있습니다.", - "Convert Namespaces to AKS Projects": "네임스페이스를 AKS 프로젝트로 변환", - "Converting": "변환 중", - "Converting {{name}} to AKS project (this may take a moment)...": "{{name}}을(를) AKS 프로젝트로 변환하는 중(다소 시간이 걸릴 수 있습니다)...", - "Copied!": "복사되었습니다.", - "Copilot agent": "Copilot 에이전트", - "Copilot agent reviewed your repo and generated deployment PR": "Copilot 에이전트가 리포지토리를 검토하고 배포 PR을 생성함", - "Copy": "복사", - "Copy to clipboard": "클립보드에 복사", - "CPU": "CPU", - "CPU limit": "CPU 한도", - "CPU Limits": "CPU 한도", - "CPU request": "CPU 요청", - "CPU Requests": "CPU 요청", + "Configure Cluster": "클러스터 구성", + "Compute Quota": "컴퓨팅 할당량", + "Set quota limits to prevent overuse and maintain cluster stability": "할당량 제한을 설정하여 과도한 사용을 방지하고 클러스터 안정성 유지", "CPU Resources": "CPU 리소스", - "CPU Usage": "CPU 사용량", - "CPU Usage / Target": "CPU 사용량/목표", - "Create a new namespace on an existing cluster and set it up as a project": "기존 클러스터에 새 네임스페이스를 만들고 프로젝트로 설정하세요.", - "Create Application": "애플리케이션 만들기", - "Create deployment PRs": "배포 PR 만들기", - "Create Namespace": "네임스페이스 만들기", - "Create New Namespace": "새 네임스페이스 만들기", - "Create Project": "프로젝트 만들기", - "Create Setup PR": "설치 PR 만들기", - "Create setup workflow in .github/workflows/": ".github/workflows/에서 설치 워크플로 만들기", - "Creates a LoadBalancer to expose the application to the internet.": "LoadBalancer를 만들어 애플리케이션을 인터넷에 공개합니다.", - "Creating managed identity...": "관리 ID를 만드는 중...", - "Creating namespace": "네임스페이스를 만드는 중", - "Creating Namespace": "네임스페이스를 만드는 중", - "Creating Project": "프로젝트를 만드는 중", - "Creating setup PR...": "설치 PR을 만드는 중...", - "Creating the trigger issue for the Copilot coding agent.": "Copilot 코딩 에이전트용 트리거 문제를 만드는 중입니다.", - "Current Replicas": "현재 복제본", - "Current state": "현재 상태", - "Degraded": "저하됨", + "CPU Requests": "CPU 요청", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "최소 CPU 보장(1000m = 1 CPU 코어)", + "CPU Limits": "CPU 한도", + "Maximum CPU allowed (1000m = 1 CPU core)": "허용되는 최대 CPU(1,000m = CPU 코어 1개)", + "Memory Resources": "메모리 리소스", + "Memory Requests": "메모리 요청", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "최소 메모리 보장(1024MiB = 1GiB)", + "Memory Limits": "메모리 한도", + "Maximum memory allowed (1024 MiB = 1 GiB)": "허용되는 최대 메모리(1,024MiB = 1GiB)", + "Basics": "기본 사항", + "Networking Policies": "네트워킹 정책", + "Review": "검토", + "New Project": "새 프로젝트", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "AKS(Azure Kubernetes Service)에서 새 프로젝트 설정 및 구성", + "Creating Project": "프로젝트를 만드는 중", + "Create Project": "프로젝트 만들기", + "Loading": "로드 중", + "Next": "다음", + "Project Created Successfully!": "프로젝트를 만들었습니다!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "AKS 프로젝트 \"{{projectName}}\"이(가) 만들어졌으며 사용할 준비가 되었습니다.", + "Application name": "애플리케이션 이름", + "Enter application name": "애플리케이션 이름 입력", + "Enter a name for your first application to get started with deployment.": "배포를 시작하려면 첫 번째 애플리케이션의 이름을 입력합니다.", + "Create Application": "애플리케이션 만들기", + "Project Creation Failed": "프로젝트 만들기 실패", + "Set security, communication and access rules for incoming and outgoing traffic": "들어오고 나가는 트래픽에 대한 보안, 통신 및 액세스 규칙 설정", + "Allow traffic within same namespace": "동일한 네임스페이스 내에서 트래픽 허용", + "Allow all traffic": "모든 트래픽 허용", + "Deny all traffic": "모든 트래픽 거부", + "Review Project Configuration": "프로젝트 구성 검토", + "Please review all the settings before creating your AKS project": "AKS 프로젝트를 만들기 전에 모든 설정을 검토하세요", + "Project Basics": "Project 기본 사항", + "Description": "설명", + "No description provided": "제공된 설명 없음", + "Ingress Policy": "수신 정책", + "Egress Policy": "송신 정책", + "CPU": "CPU", + "Requests": "요청", + "Limits": "한도", + "Memory": "메모리", + "Access Control ({{count}} assignee)_other": "액세스 제어(담당자 {{count}}명)", + "Not specified": "지정되지 않음", + "Select an option": "옵션 선택", + "No options": "옵션 없음", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "프로젝트 만들기 시작", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "프로젝트 만들기 시간이 10분 후 초과되었습니다. 네임스페이스가 만들어졌는지 확인하고 다시 시도하세요.", + "Initiating managed namespace creation": "관리되는 네임스페이스 만들기를 시작하는 중", + "Namespace creation failed: {{message}}": "네임스페이스를 만들지 못함: {{message}}", + "Namespace creation initiated! Monitoring creation status": "네임스페이스 만들기가 시작되었습니다! 생성 상태 모니터링", + "Waiting for namespace to propagate": "네임스페이스가 전파되기를 기다리는 중", + "Namespace status check failed: {{message}}": "네임스페이스 상태 검사 실패: {{message}}", + "Waiting for namespace to be created": "네임스페이스가 만들어질 때까지 기다리는 중", + "Namespace status verification failed: {{message}}": "네임스페이스 상태 확인 실패: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "네임스페이스 만들기 API 성공, 사용자 할당 진행", + "Namespace creation completed successfully! Adding user access": "네임스페이스 만들기를 완료했습니다! 사용자 액세스 권한 추가 중", + "User assignment completed with errors": "사용자 할당이 완료되었지만 오류 발생", + "Project creation completed successfully!": "프로젝트 만들기를 완료했습니다!", + "Performing final status verification": "최종 상태 확인 중", + "Final status check failed: {{message}}": "최종 상태 확인이 실패함: {{message}}", + "Final status verification failed: {{message}}": "최종 상태 확인이 실패함: {{message}}", + "All verifications completed successfully!": "모든 확인이 완료되었습니다.", + "Failed to create project": "프로젝트를 만들지 못함", + "A cluster must be selected": "클러스터를 선택해야 함", + "Namespace name is required": "네임스페이스 이름은 필수임", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "네임스페이스 이름은 소문자, 숫자, 하이픈만 포함해야 하며, 영숫자 문자로 시작하고 끝나야 합니다.", + "Namespace name must be 63 characters or fewer": "네임스페이스 이름은 63자 이하여야 합니다.", + "Creating namespace": "네임스페이스를 만드는 중", + "Updating local settings": "로컬 설정을 업데이트하는 중", + "Namespace created successfully!": "네임스페이스를 만들었습니다.", + "Failed to create namespace": "네임스페이스를 만들지 못함", + "No clusters found. Register a cluster first.": "클러스터를 찾을 수 없습니다. 먼저 클러스터를 등록하세요.", + "Namespace Name": "네임스페이스 이름", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "소문자, 숫자, 하이픈만 포함할 수 있으며, 시작과 끝은 영숫자여야 합니다.", + "The namespace will be created on the selected cluster and set up as a project": "선택한 클러스터에 네임스페이스가 생성되고 프로젝트로 설정됩니다.", + "Type": "유형", + "Regular Kubernetes namespace": "일반 Kubernetes 네임스페이스", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "프로젝트 레이블이 적용된 새 네임스페이스가 클러스터에 생성됩니다. 새 네임스페이스는 프로젝트 목록에 즉시 표시됩니다.", + "Create New Namespace": "새 네임스페이스 만들기", + "Create a new namespace on an existing cluster and set it up as a project": "기존 클러스터에 새 네임스페이스를 만들고 프로젝트로 설정하세요.", + "Creating Namespace": "네임스페이스를 만드는 중", + "Namespace Creation Failed": "네임스페이스를 만들지 못함", + "Namespace Created Successfully!": "네임스페이스를 만들었습니다.", + "Your project \"{{projectName}}\" is ready to use.": "\"{{projectName}}\" 프로젝트를 사용할 준비가 완료되었습니다.", + "Go To Projects": "프로젝트로 이동", + "Create Namespace": "네임스페이스 만들기", "Delete project": "프로젝트 삭제", "Delete Project": "프로젝트 삭제", + "Are you sure you want to delete project \"{{projectId}}\"?": "프로젝트 \"{{projectId}}\"을(를) 삭제하시겠습니까?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "기본적으로 다음 네임스페이스에서 Azure 관리 네임스페이스 및 프로젝트 레이블이 제거됩니다.", + "Also delete the namespaces (this will remove all resources within them)": "네임스페이스도 삭제합니다(네임스페이스 내 모든 리소스가 제거됨).", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "경고: 이 작업은 실행 취소할 수 없습니다. 이 네임스페이스의 모든 리소스는 영구적으로 삭제됩니다.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "참고: AKS 관리 네임스페이스의 경우 Azure ARM 관리가 자동으로 제거됩니다.", "Delete Project & Namespaces": "프로젝트 및 네임스페이스 삭제", - "Deleted project {{ projectId }}.": "{{ projectId }} 프로젝트를 삭제했습니다.", "Deleting project {{ projectId }}…": "프로젝트 {{ projectId }} 삭제 중...", - "Deny all traffic": "모든 트래픽 거부", - "Deploy": "배포", - "Deploy {{repo}}": "{{repo}} 배포", - "Deploy an application to start viewing metrics.": "애플리케이션을 배포하여 메트릭 보기를 시작합니다.", - "Deploy an application to view logs.": "로그를 보려면 애플리케이션을 배포합니다.", + "Cancelled deletion of project {{ projectId }}.": "프로젝트 {{ projectId }} 삭제가 취소되었습니다.", + "Deleted project {{ projectId }}.": "{{ projectId }} 프로젝트를 삭제했습니다.", + "Error deleting project {{ projectId }}.": "프로젝트 {{ projectId }} 삭제 중 오류가 발생했습니다.", "Deploy Application": "애플리케이션 배포", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Azure Container Registry, Docker Hub 또는 GHCR에서 배포", + "Failed to load pipeline runs": "파이프라인 실행을 로드하지 못함", + "Pipeline": "파이프라인", + "Set up your pipeline": "파이프라인 설정", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "배포를 자동화하고 워크플로를 간소화하도록 CI/CD 파이프라인 설정", + "Waiting for browser authorization...": "브라우저 권한 부여를 기다리는 중...", + "Sign in to GitHub to view pipeline runs.": "파이프라인 실행을 보려면 GitHub에 로그인합니다.", + "Connecting...": "연결 중...", + "No pipeline runs yet.": "아직 파이프라인이 실행되지 않았습니다.", + "View on GitHub": "GitHub에서 보기", + "View run on GitHub": "GitHub에서 실행 보기", + "Healthy": "정상", + "Scaled down": "축소됨", + "Degraded": "저하됨", + "VS Code": "VS Code", + "Manual": "수동", + "Manual Deploy": "수동 배포", + "Deploy {{repo}}": "{{repo}} 배포", "Deploy via Pipeline": "파이프라인을 통한 배포", - "Deploying": "배포하는 중", + "No deployments found in this namespace.": "이 네임스페이스에서 배포를 찾을 수 없습니다.", "Deployment": "배포", - "Deployment PR": "배포 PR", - "Deployment PR Ready": "배포 PR 준비 완료", - "Deployment PR reviewed and merged": "배포 PR 검토 및 병합됨", - "Deployment source": "배포 원본", - "Description": "설명", - "Deselect All": "모두 선택 취소", - "Desired Replicas": "원하는 복제본", - "Discard": "취소", - "Dismiss": "해제", - "Distributes pods evenly across nodes to improve workload distribution.": "노드 간에 Pod를 균등하게 배포하여 워크로드 분산을 개선합니다.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Pod를 노드, 영역 또는 기타 토폴로지 도메인에 균등하게 분산시켜 워크로드 분배와 가용성을 개선합니다.", - "Done": "완료", - "Edit Configuration": "구성 편집", + "Source": "원본", + "Replicas": "복제본", + "Ready": "준비 완료", + "Status": "상태", + "Actions": "작업", "Edit deployment": "배포 편집", - "Edit HPA Configuration": "HPA 구성 편집", - "Edit Manual Scaling Configuration": "수동 크기 조정 구성 편집", - "Egress Policy": "송신 정책", + "View workflow run": "워크플로 실행 보기", + "Re-deploy": "다시 배포", + "Failed to trigger deployment": "배포를 트리거하지 못함", + "Trigger": "트리거", + "workflow on": "다음에 대한 워크플로", + "with the following parameters:": "다음 매개 변수를 사용합니다.", + "Namespace": "네임스페이스", + "Sign in": "로그인", + "GitHub authentication required to trigger deployment.": "배포를 트리거하는 데 필요한 GitHub 인증입니다.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "워크플로 디스패치가 트리거되었습니다. 진행 상황은 GitHub Actions를 확인하세요.", + "Close": "닫기", + "Triggering...": "트리거 중...", + "Deploy": "배포", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "설정 → 미리 보기 기능에서 GitHub Pipelines를 사용하도록 설정하여 파이프라인 배포를 사용합니다.", - "Enable GitHub-based deployment pipelines for AKS projects.": "AKS 프로젝트에 GitHub 기반 배포 파이프라인을 사용하도록 설정합니다.", - "Enable Horizontal Pod Autoscaler": "가로 Pod 자동 크기 조정기 사용", - "Enable liveness probe": "활동성 프로브 사용", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "아직 개발 중인 기능을 사용하거나 사용하지 않도록 설정합니다. 미리 보기 기능은 향후 릴리스에서 변경되거나 제거될 수 있습니다.", - "Enable pod anti-affinity": "Pod 선호도 방지 사용", - "Enable public access": "공용 액세스 활성화", - "Enable readiness probe": "준비 상태 프로브 사용", - "Enable resource requests and limits": "리소스 요청 및 제한 사용", - "Enable startup probe": "시작 프로브 사용", - "Enable topology spread constraints": "토폴로지 확산 제약 조건 사용", - "Enabling Addons...": "추가 기능을 사용하도록 설정하는 중...", - "Enabling these addons may incur additional Azure costs.": "이러한 추가 기능을 사용하도록 설정하면 추가 Azure 비용이 발생할 수 있습니다.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "최소 복제본 수는 최대 복제본 수 이하이며, 대상 CPU는 10%에서 95% 사이인지 확인합니다.", + "Workloads": "워크로드", + "No clusters in this project.": "이 프로젝트에 클러스터가 없습니다.", + "Failed to fetch deployments": "배포를 가져오지 못함", + "Failed to fetch cluster status": "클러스터 상태를 가져오지 못함", + "Configure security context settings for the container.": "컨테이너의 보안 컨텍스트 설정을 구성합니다.", + "Run as non root user": "루트가 아닌 사용자로 실행", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "보안 강화를 위해 컨테이너가 루트가 아닌 사용자(UID != 0)로 실행되도록 합니다. 이렇게 하면 권한 상승 공격을 방지할 수 있습니다.", "Ensures the container runs as a non-root user for better security.": "보안을 개선하기 위해 컨테이너가 루트가 아닌 사용자로 실행되도록 합니다.", - "Ensuring resource group exists...": "리소스 그룹이 있는지 확인하는 중...", - "Enter a name for your first application to get started with deployment.": "배포를 시작하려면 첫 번째 애플리케이션의 이름을 입력합니다.", - "Enter application name": "애플리케이션 이름 입력", - "Enter project description": "프로젝트 설명 입력", - "Environment Variables": "환경 변수", - "Error deleting project {{ projectId }}.": "프로젝트 {{ projectId }} 삭제 중 오류가 발생했습니다.", - "Error Rate": "오류 비율", - "Failed to apply": "적용하지 못함", - "Failed to apply resources.": "리소스를 적용하지 못 했습니다.", - "Failed to convert namespace: {{message}}": "네임스페이스 변환 실패: {{message}}", - "Failed to create namespace": "네임스페이스를 만들지 못함", - "Failed to create project": "프로젝트를 만들지 못함", - "Failed to enable addon: {{error}}": "추가 기능을 사용하도록 설정하지 못했습니다. {{error}}", - "Failed to enable addons": "추가 기능을 활성화하지 못함", - "Failed to fetch cluster status": "클러스터 상태를 가져오지 못함", - "Failed to fetch deployment status": "배포 상태를 가져오지 못함", - "Failed to fetch deployments": "배포를 가져오지 못함", - "Failed to fetch managed namespace details": "관리형 네임스페이스 세부 정보를 가져오지 못 함", - "Failed to fetch managed namespaces": "관리되는 네임스페이스를 가져오지 못함", - "Failed to fetch pod status": "Pod 상태를 가져오지 못함", - "Failed to fetch service status": "서비스 상태를 가져오지 못함", - "Failed to import any projects. See details below.": "프로젝트를 가져오지 못 했습니다. 아래 세부 정보를 확인하세요.", - "Failed to initiate login: {{message}}": "로그인을 시작하지 못함: {{message}}", - "Failed to load AKS clusters": "AKS 클러스터를 로드하지 못 함", - "Failed to load Azure context": "Azure 컨텍스트를 로드하지 못함", - "Failed to load pipeline runs": "파이프라인 실행을 로드하지 못함", - "Failed to load repositories": "리포지토리를 로드하지 못함", - "Failed to load subscriptions": "구독을 로드하지 못했음", - "Failed to merge cluster: {{message}}": "클러스터를 병합하지 못 함: {{message}}", - "Failed to monitor deployment health": "배포 상태를 모니터링하지 못함", - "Failed to register cluster: {{message}}": "클러스터를 등록하지 못 함: {{message}}", - "Failed to trigger deployment": "배포를 트리거하지 못함", - "Failed to update managed namespace": "관리되는 네임스페이스를 업데이트하지 못 함", - "failureThreshold": "failureThreshold", - "Features": "기능", - "Federated Credential": "페더레이션 자격 증명", - "Filter repositories": "리포지토리 필터링", - "Final status check failed: {{message}}": "최종 상태 확인이 실패함: {{message}}", - "Final status verification failed: {{message}}": "최종 상태 확인이 실패함: {{message}}", - "for full network policy support.": "전체 네트워크 정책 지원.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "생성된 Kubernetes 매니페스트(네임스페이스: {{namespace}})", - "GitHub authentication required to trigger deployment.": "배포를 트리거하는 데 필요한 GitHub 인증입니다.", - "GitHub Pipelines": "GitHub 파이프라인", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "프로젝트로 이동", - "Guided configuration for ports, replicas, env, and resources": "포트, 복제본, 환경 변수, 리소스에 대한 안내 구성", + "Read only root filesystem": "읽기 전용 루트 파일 시스템", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "쓰기 작업을 방지하기 위해 컨테이너의 루트 파일 시스템을 읽기 전용으로 마운트합니다. 이를 통해 악성 코드가 시스템 파일을 변경하지 못하게 하여 보안을 강화합니다.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "쓰기 작업을 방지하기 위해 컨테이너의 루트 파일 시스템을 읽기 전용으로 마운트합니다.", + "Allow privilege escalation": "권한 상승 허용", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "프로세스가 부모 프로세스보다 더 많은 권한을 얻을 수 있는지 여부를 제어합니다. 이(권장)를 사용하지 않도록 설정하면 권한 상승 공격을 방지할 수 있습니다.", + "Controls whether a process can gain more privileges than its parent process.": "프로세스가 부모 프로세스보다 더 높은 권한을 얻을 수 있는지 여부를 제어합니다.", + "Enable pod anti-affinity": "Pod 선호도 방지 사용", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "가용성 및 내결함성을 개선하기 위해 다른 노드에 Pod를 예약하는 것이 좋습니다. 이렇게 하면 Pod가 클러스터 전반에 분산되도록 하는 데 도움이 됩니다.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "가용성과 내결함성을 높이기 위해 Pod를 우선적으로 서로 다른 노드에 배치합니다.", + "Enable topology spread constraints": "토폴로지 확산 제약 조건 사용", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Pod를 노드, 영역 또는 기타 토폴로지 도메인에 균등하게 분산시켜 워크로드 분배와 가용성을 개선합니다.", + "Distributes pods evenly across nodes to improve workload distribution.": "노드 간에 Pod를 균등하게 배포하여 워크로드 분산을 개선합니다.", + "Container image": "컨테이너 이미지", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "실행할 Pod 복제본 수입니다. 복제본이 많을수록 가용성 및 부하 분산이 향상됩니다.", + "Continue": "계속", + "Configure Container Deployment": "컨테이너 배포 구성", + "Networking": "네트워킹", "Healthchecks": "상태 검사", - "Healthy": "정상", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "활동성 프로브를 수행하는 빈도(초)입니다. 기본값은 10초입니다.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "준비 상태 프로브를 수행하는 빈도(초)입니다. 기본값은 10초입니다.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "시작 프로브를 수행하는 빈도(초)입니다. 기본값은 10초입니다.", - "HPA scales pods based on CPU utilization.": "HPA는 CPU 사용률에 따라 Pod 크기를 조정합니다.", - "Identity Resource Group": "ID 리소스 그룹", - "Import AKS Projects": "AKS 프로젝트 가져오기", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "기존 관리되는 네임스페이스와 일반 네임스페이스를 프로젝트로 가져옵니다. 아직 AKS 데스크톱 프로젝트가 아닌 네임스페이스는 필요한 프로젝트 레이블을 추가하여 변환됩니다.", - "Import Selected Projects": "선택한 프로젝트 가져오기", - "Importing": "가져오는 중", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}}/{{total}}개를 가져오는 중: {{clusterName}}의 {{name}}", - "in resource group": "리소스 그룹에서", + "Resource Limits": "리소스 제한", + "Environment Variables": "환경 변수", + "Workload Identity": "", + "Advanced": "고급", "Information about {{label}}": "{{label}}에 대한 정보", - "Information about CPU limit": "CPU 제한에 대한 정보", - "Information about CPU request": "CPU 요청에 대한 정보", - "Information about memory limit": "메모리 제한에 대한 정보", - "Information about memory request": "메모리 요청에 대한 정보", - "Information about target CPU utilization": "대상 CPU 사용률에 대한 정보", - "Ingress Policy": "수신 정책", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "초기화하는 중...", - "Initiating Azure login": "Azure 로그인을 시작하는 중", - "Initiating managed namespace creation": "관리되는 네임스페이스 만들기를 시작하는 중", - "Install Extension": "확장 설치", - "Install GitHub App": "GitHub 앱 설치", - "Installing": "설치 중", - "Internal only": "내부 전용", - "Invalid YAML": "잘못된 YAML", - "Invalid YAML: List item missing required field (kind)": "잘못된 YAML: 목록 항목에 필수 필드(kind)가 없음", - "Invalid YAML: List item missing required field (metadata.name)": "잘못된 YAML: 목록 항목에 필수 필드(metadata.name)가 없음", - "Invalid YAML: List resource must have an array \"items\" field": "잘못된 YAML: 목록 리소스에는 배열 \"items\" 필드가 있어야 함", - "Invalid YAML: missing required field (kind)": "잘못된 YAML: 필수 필드(kind)가 없음", - "Invalid YAML: missing required field (metadata.name)": "잘못된 YAML: 필수 필드가 없음", - "Issue {{number}}": "문제 {{number}}개", - "Issues": "문제", - "just now": "방금", - "KEDA (Event-Driven Autoscaling)": "KEDA(이벤트 기반 자동 크기 조정)", - "Keep Going": "계속", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Kubernetes 매니페스트를 하나 이상 추가합니다. 파일을 업로드하여 편집기를 채우거나 아래에 직접 붙여넣고 편집할 수 있습니다.", + "Upload files": "파일 업로드", + "Clear editor": "편집기 지우기", + "Review & Deploy": "검토 및 배포", + "Generated Kubernetes manifests (namespace: {{namespace}})": "생성된 Kubernetes 매니페스트(네임스페이스: {{namespace}})", + "Resources to be deployed ({{count}} object)_other": "배포할 리소스({{count}}개 개체)", + "namespace: {{namespace}}": "네임스페이스: {{namespace}}", + "Configure": "구성", + "Deploying": "배포하는 중", "Key": "키", - "Kubernetes restarts the container if this check fails repeatedly.": "이 검사가 반복해서 실패하면 Kubernetes가 컨테이너를 다시 시작합니다.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "값", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "제거", + "Add variable": "변수 추가", + "Configure container health probes.": "컨테이너 상태 프로브를 구성합니다.", + "Manually configure settings": "수동으로 설정 구성", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "기본적으로 프로브는 루트 경로에서 합리적인 기본값과 함께 HTTP GET을 사용합니다. 프로브 설정을 사용자 지정하려면 활성화합니다.", + "Enable liveness probe": "활동성 프로브 사용", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "이 검사가 반복적으로 실패하면 Kubernetes가 컨테이너를 다시 시작합니다. 교착 상태나 응답하지 않는 컨테이너를 감지하고 복구하는 데 사용됩니다.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes는 시작이 성공할 때까지 활동성 및 준비 상태를 일시적으로 비활성화합니다.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes는 시작이 성공할 때까지 일시적으로 활동성/준비 상태를 사용하지 않도록 설정합니다. 시작하는 데 시간이 오래 걸리는 컨테이너에 유용합니다.", - "Kubernetes Version": "Kubernetes 버전", - "Kubernetes won't send traffic to the pod until this check passes.": "이 검사가 통과할 때까지 Kubernetes는 Pod로 트래픽을 보내지 않습니다.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes는 이 검사가 통과될 때까지 Pod로 트래픽을 보내지 않습니다. 컨테이너가 트래픽을 허용할 준비가 된 시기를 나타내는 데 사용됩니다.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "1분 미만", - "Limits": "한도", + "Kubernetes restarts the container if this check fails repeatedly.": "이 검사가 반복해서 실패하면 Kubernetes가 컨테이너를 다시 시작합니다.", "Liveness path": "활동성 경로", - "Loading": "로드 중", - "Loading AKS clusters": "AKS 클러스터를 로드하는 중", - "Loading Azure account information": "Azure 계정 정보를 로드하는 중", - "Loading Azure context...": "Azure 컨텍스트를 로드하는 중...", - "Loading clusters": "클러스터를 로드하는 중", - "Loading configuration...": "구성을 로드하는 중...", - "Loading deployments": "배포를 로드하는 중", - "Loading metrics": "메트릭 로드 중", - "Loading scaling metrics from Prometheus": "Prometheus에서 크기 조정 메트릭을 로드하는 중", - "Loading subscriptions": "구독을 로드하는 중", - "Loading...": "로드 중...", - "Location": "위치", - "Log out": "로그아웃", - "Logged in as": "다음으로 로그인함", - "Logging out": "로그아웃하는 중", - "Login successful! Redirecting": "로그인 성공! 리디렉션 중", - "Login timeout. Please try again.": "로그인 시간이 초과되었습니다. 다시 시도하세요.", - "Managed Identity": "관리 ID", - "managed namespaces only": "관리되는 네임스페이스만", - "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 기능이 등록되었습니다.", - "Manual": "수동", - "Manual Deploy": "수동 배포", - "Manually configure settings": "수동으로 설정 구성", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "활동성을 확인할 HTTP 경로(예: /healthz)입니다. 프로브는 이 경로에 대한 HTTP GET 요청을 수행합니다.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "활동성 프로브가 시작되기 전에 컨테이너가 시작된 후의 시간(초)입니다.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "활동성 프로브를 수행하는 빈도(초)입니다. 기본값은 10초입니다.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "프로브 시간이 초과된 후의 시간(초)입니다. 기본값은 1초입니다.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "프로브가 실패하면 Kubernetes는 컨테이너를 포기했다가 다시 시작하기 전에 이 작업을 여러 번 시도합니다.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "프로브가 실패한 후 성공으로 간주되기 위한 최소 연속 성공 횟수입니다. 기본값은 1입니다.", + "Enable readiness probe": "준비 상태 프로브 사용", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes는 이 검사가 통과될 때까지 Pod로 트래픽을 보내지 않습니다. 컨테이너가 트래픽을 허용할 준비가 된 시기를 나타내는 데 사용됩니다.", + "Kubernetes won't send traffic to the pod until this check passes.": "이 검사가 통과할 때까지 Kubernetes는 Pod로 트래픽을 보내지 않습니다.", + "Readiness path": "준비 경로", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "준비 상태를 확인할 HTTP 경로(예: /ready)입니다. 프로브는 이 경로에 대한 HTTP GET 요청을 수행합니다.", + "Number of seconds after the container has started before readiness probes are initiated.": "준비 상태 프로브가 시작되기 전에 컨테이너가 시작된 후의 시간(초)입니다.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "준비 상태 프로브를 수행하는 빈도(초)입니다. 기본값은 10초입니다.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "프로브가 실패하면 Kubernetes는 Pod를 준비되지 않은 상태로 표시하기 전에 이 작업을 여러 번 시도합니다.", + "Enable startup probe": "시작 프로브 사용", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes는 시작이 성공할 때까지 일시적으로 활동성/준비 상태를 사용하지 않도록 설정합니다. 시작하는 데 시간이 오래 걸리는 컨테이너에 유용합니다.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes는 시작이 성공할 때까지 활동성 및 준비 상태를 일시적으로 비활성화합니다.", + "Startup path": "시작 경로", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "시작을 확인할 HTTP 경로(예: /startup)입니다. 프로브는 이 경로에 대한 HTTP GET 요청을 수행합니다.", + "Number of seconds after the container has started before startup probes are initiated.": "시작 프로브가 시작되기 전에 컨테이너가 시작된 후의 시간(초)입니다.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "시작 프로브를 수행하는 빈도(초)입니다. 기본값은 10초입니다.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "프로브가 실패하면 Kubernetes는 포기하기 전에 이 작업을 여러 번 시도합니다. 시작 프로브의 경우 다시 시작하기 전에 대기하는 시간을 결정합니다.", + "Enable Horizontal Pod Autoscaler": "가로 Pod 자동 크기 조정기 사용", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "CPU 사용률에 따라 Pod 수를 자동으로 조정합니다. HPA는 CPU 사용량이 목표치를 초과하면 Pod를 늘리고, 그 이하일 때는 줄입니다.", + "HPA scales pods based on CPU utilization.": "HPA는 CPU 사용률에 따라 Pod 크기를 조정합니다.", + "Min replicas": "최소 복제본 수", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "CPU 사용량이 낮아도 HPA가 유지하는 최소 Pod 복제본 수입니다.", "Max replicas": "최대 복제본 수", - "Maximum CPU allowed (1000m = 1 CPU core)": "허용되는 최대 CPU(1,000m = CPU 코어 1개)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "허용되는 최대 메모리(1,024MiB = 1GiB)", - "Maximum Replicas": "최대 복제본", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "CPU 사용량이 높을 때 HPA가 스케일 업할 수 있는 최대 Pod 복제본 수입니다.", + "Target CPU utilization": "대상 CPU 사용률", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "모든 Pod의 목표 평균 CPU 사용률입니다. CPU 사용량이 이 값을 초과하면 HPA가 스케일 업되고, 이 값 아래로 떨어지면 스케일 다운됩니다.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "최소 복제본 수는 최대 복제본 수 이하이며, 대상 CPU는 10%에서 95% 사이인지 확인합니다.", + "Target port": "대상 포트", + "The port number that your container listens on. This is the port inside the container where your application runs.": "컨테이너가 수신 대기하는 포트 번호입니다. 애플리케이션이 실행되는 컨테이너 내의 포트입니다.", + "Service port": "서비스 포트", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes 서비스에서 노출하는 포트 번호입니다. 이 포트에 대한 트래픽은 대상 포트로 전달됩니다.", + "Use custom service port": "사용자 지정 서비스 포트 사용", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "기본적으로 서비스 포트는 대상 포트와 일치합니다. 서비스에 다른 포트를 사용하려면 활성화합니다.", + "Service type": "서비스 유형", + "Internal only": "내부 전용", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "ClusterIP를 사용합니다. 클러스터 내에서만 연결할 수 있는 서비스에 가장 적합합니다.", + "Enable public access": "공용 액세스 활성화", + "Creates a LoadBalancer to expose the application to the internet.": "LoadBalancer를 만들어 애플리케이션을 인터넷에 공개합니다.", + "Enable resource requests and limits": "리소스 요청 및 제한 사용", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "CPU 및 메모리 요청(보장된 리소스) 및 제한(최대 리소스)을 설정하여 리소스 할당을 제어하고 컨테이너가 과도한 클러스터 리소스를 사용하지 못하도록 합니다.", + "CPU request": "CPU 요청", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "컨테이너에 보장되는 최소 CPU 용량입니다. Kubernetes는 최소한 이만큼의 CPU를 사용할 수 있는 노드에 Pod를 예약합니다.", + "millicores": "밀리코어", + "CPU limit": "CPU 한도", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "컨테이너에서 사용할 수 있는 최대 CPU 양입니다. 초과하면 컨테이너가 제한됩니다.", + "Memory request": "메모리 요청", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "컨테이너에 보장되는 최소 메모리 용량입니다. Kubernetes는 최소한 이만큼의 메모리를 사용할 수 있는 노드에 Pod를 예약합니다.", "mebibytes": "mebibytes", - "Memory": "메모리", "Memory limit": "메모리 한도", - "Memory Limits": "메모리 한도", - "Memory request": "메모리 요청", - "Memory Requests": "메모리 요청", - "Memory Resources": "메모리 리소스", - "Memory Usage": "메모리 사용", - "Memory utilization": "메모리 사용률", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "{{clusterName}} 클러스터 병합(네임스페이스 {{count}}개)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "{{clusterName}} 클러스터 병합(네임스페이스 {{count}}개)", - "Metrics": "메트릭", - "Metrics refreshed every 30 seconds": "메트릭이 30초마다 새로 고쳐짐", - "Metrics Unavailable": "메트릭을 사용할 수 없음", - "millicores": "밀리코어", - "Min replicas": "최소 복제본 수", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "프로브가 실패한 후 성공으로 간주되기 위한 최소 연속 성공 횟수입니다. 기본값은 1입니다.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "최소 CPU 보장(1000m = 1 CPU 코어)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "최소 메모리 보장(1024MiB = 1GiB)", - "Minimum Replicas": "최소 복제본", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "필요한 Azure 컨텍스트가 없습니다. 로그인되어 있고 클러스터가 유효한 구독, 리소스 그룹 및 테넌트와 연결되어 있는지 확인하세요.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "쓰기 작업을 방지하기 위해 컨테이너의 루트 파일 시스템을 읽기 전용으로 마운트합니다.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "쓰기 작업을 방지하기 위해 컨테이너의 루트 파일 시스템을 읽기 전용으로 마운트합니다. 이를 통해 악성 코드가 시스템 파일을 변경하지 못하게 하여 보안을 강화합니다.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "다중 파일 지원(배포, 서비스, 수신 등)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "소문자, 숫자, 하이픈만 포함할 수 있으며, 시작과 끝은 영숫자여야 합니다.", - "Name": "이름", - "Namespace": "네임스페이스", - "Namespace '{{name}}' converted and imported as project": "'{{name}}' 네임스페이스를 변환하여 프로젝트로 가져옴", - "Namespace created successfully!": "네임스페이스를 만들었습니다.", - "Namespace Created Successfully!": "네임스페이스를 만들었습니다.", - "Namespace creation API succeeded, proceeding with user assignments": "네임스페이스 만들기 API 성공, 사용자 할당 진행", - "Namespace creation completed successfully! Adding user access": "네임스페이스 만들기를 완료했습니다! 사용자 액세스 권한 추가 중", - "Namespace Creation Failed": "네임스페이스를 만들지 못함", - "Namespace creation failed: {{message}}": "네임스페이스를 만들지 못함: {{message}}", - "Namespace creation initiated! Monitoring creation status": "네임스페이스 만들기가 시작되었습니다! 생성 상태 모니터링", - "Namespace Name": "네임스페이스 이름", - "Namespace name is required": "네임스페이스 이름은 필수임", - "Namespace name must be 63 characters or fewer": "네임스페이스 이름은 63자 이하여야 합니다.", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "네임스페이스 이름은 소문자, 숫자, 하이픈만 포함해야 하며, 영숫자 문자로 시작하고 끝나야 합니다.", - "Namespace status check failed: {{message}}": "네임스페이스 상태 검사 실패: {{message}}", - "Namespace status verification failed: {{message}}": "네임스페이스 상태 확인 실패: {{message}}", - "namespace: {{namespace}}": "네임스페이스: {{namespace}}", - "Namespaces to convert:": "변환할 네임스페이스:", - "Network I/O": "네트워크 I/O", - "Network In": "네트워크 입력", - "Network Out": "네트워크 출력", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "클러스터를 만든 후에는 네트워크 정책 엔진을 변경할 수 없습니다. 다음을 사용해 새 클러스터를 만들기", - "Networking": "네트워킹", - "Networking Policies": "네트워킹 정책", - "New Project": "새 프로젝트", - "Next": "다음", - "No": "아니요", - "No AKS clusters found in this subscription.": "이 구독에서 AKS 클러스터를 찾을 수 없음", - "No cluster is associated with this project.": "이 프로젝트에 연결된 클러스터가 없습니다.", - "No clusters found. Register a cluster first.": "클러스터를 찾을 수 없습니다. 먼저 클러스터를 등록하세요.", - "No clusters in this project.": "이 프로젝트에 클러스터가 없습니다.", - "No clusters with Azure Entra ID authentication found for this subscription": "이 구독에 Azure Entra ID 인증이 있는 클러스터가 없음", - "No data available": "사용 가능한 데이터 없음", - "No deployments found": "배포를 찾을 수 없음", - "No Deployments Found": "배포를 찾을 수 없음", - "No deployments found in this namespace.": "이 네임스페이스에서 배포를 찾을 수 없습니다.", - "No description provided": "제공된 설명 없음", - "No eligible clusters found in this subscription.": "이 구독에서 적합한 클러스터를 찾을 수 없습니다.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "컨테이너에서 사용할 수 있는 최대 메모리 양입니다. 초과하면 컨테이너가 종료됩니다(OOMKilled).", + "Container Image": "컨테이너 이미지", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Azure Container Registry, Docker Hub 또는 GHCR에서 배포", + "Auto-generated Deployment and Service manifests": "자동 생성된 배포 및 서비스 매니페스트", + "Guided configuration for ports, replicas, env, and resources": "포트, 복제본, 환경 변수, 리소스에 대한 안내 구성", "No Kubernetes expertise required to get started": "시작하는 데 필요한 Kubernetes 전문 지식이 없음", - "No options": "옵션 없음", - "No pipeline runs yet.": "아직 파이프라인이 실행되지 않았습니다.", - "No pods found for deployment \"{{name}}\"": "배포 \"{{name}}\"에 대한 Pod를 찾을 수 없음", - "No repositories found": "리포지토리를 찾을 수 없음", + "Bring your own Kubernetes manifests to deploy": "배포할 고유한 Kubernetes 매니페스트 가져오기", + "Use existing manifests for full control": "전체 제어를 위해 기존 매니페스트 사용", + "Multi-file support (Deployments, Services, Ingress, etc.)": "다중 파일 지원(배포, 서비스, 수신 등)", + "Preview and basic validation before apply": "적용하기 전 미리 보기 및 기본 유효성 검사", + "Select Source": "원본 선택", + "Choose a source for your deployment (container image, repo, etc.).": "배포에 사용할 원본(컨테이너 이미지, 리포지토리 등)을 선택합니다.", + "Deployment source": "배포 원본", + "Features": "기능", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "ID 리소스 그룹", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "기존 ID를 확인하는 중...", + "Creating managed identity...": "관리 ID를 만드는 중...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "잘못된 YAML: 필수 필드(kind)가 없음", + "Invalid YAML: List resource must have an array \"items\" field": "잘못된 YAML: 목록 리소스에는 배열 \"items\" 필드가 있어야 함", + "Invalid YAML: List item missing required field (kind)": "잘못된 YAML: 목록 항목에 필수 필드(kind)가 없음", + "Invalid YAML: List item missing required field (metadata.name)": "잘못된 YAML: 목록 항목에 필수 필드(metadata.name)가 없음", + "Invalid YAML: missing required field (metadata.name)": "잘못된 YAML: 필수 필드가 없음", + "Invalid YAML": "잘못된 YAML", + "Validation failed": "유효성 검사 실패", + "Failed to apply": "적용하지 못함", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "리소스 {{applied}}개를 적용했으나, {{failed}}개가 실패했습니다.\n{{errors}}", + "Applied {{count}} resource(s) successfully._other": "리소스 {{count}}개를 적용했습니다.", + "Failed to apply resources.": "리소스를 적용하지 못 했습니다.", + "unnamed": "명명되지 않음", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "콘텐츠", + "Push agent config files": "에이전트 구성 파일 푸시", + "Workflows": "워크플로", + "Create setup workflow in .github/workflows/": ".github/workflows/에서 설치 워크플로 만들기", + "Pull requests": "끌어오기 요청", + "Create deployment PRs": "배포 PR 만들기", + "Issues": "문제", + "Track agent progress": "에이전트 진행률 추적", + "Run deployment workflows": "배포 워크플로 실행", + "Connect to GitHub": "GitHub에 연결", + "Connected to '{{username}}'.": "'{{username}}'에 연결되었습니다.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS 데스크톱에 리포지토리에서 배포 파이프라인을 생성할 권한을 부여합니다.", + "Required Permissions": "필요한 권한", + "Complete authorization on your browser screen": "브라우저 화면에서 권한 부여 완료", + "Connect": "연결", + "Select repository": "리포지토리 선택", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "브라우저에서 설치를 완료합니다. {{repoName}}에 앱이 설치되면 자동으로 업데이트됩니다.", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "계속하려면 AKS Desktop GitHub 앱을 {{repoName}}에 설치해야 합니다.", + "Reopen install page": "설치 페이지 다시 열기", + "Install GitHub App": "GitHub 앱 설치", + "Checking...": "확인하는 중...", + "Connecting to GitHub...": "GitHub에 연결하는 중...", + "Connect GitHub": "GitHub 연결", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "연결됨", + "Sign in to GitHub": "GitHub에 로그인", + "Failed to load repositories": "리포지토리를 로드하지 못함", + "Filter repositories": "리포지토리 필터링", "No repositories match your filter": "필터와 일치하는 리포지토리가 없습니다.", - "No response time data available": "응답 시간 데이터를 사용할 수 없음", - "No scaling data available": "사용 가능한 크기 조정 데이터 없음", - "No subscriptions found": "구독을 찾을 수 없음", - "Not specified": "지정되지 않음", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "참고: AKS 관리 네임스페이스의 경우 Azure ARM 관리가 자동으로 제거됩니다.", - "Number of Replicas": "복제본 수", - "Number of seconds after the container has started before liveness probes are initiated.": "활동성 프로브가 시작되기 전에 컨테이너가 시작된 후의 시간(초)입니다.", - "Number of seconds after the container has started before readiness probes are initiated.": "준비 상태 프로브가 시작되기 전에 컨테이너가 시작된 후의 시간(초)입니다.", - "Number of seconds after the container has started before startup probes are initiated.": "시작 프로브가 시작되기 전에 컨테이너가 시작된 후의 시간(초)입니다.", - "Number of seconds after which the probe times out. Default is 1 second.": "프로브 시간이 초과된 후의 시간(초)입니다. 기본값은 1초입니다.", - "OIDC trust for": "OIDC 신뢰 대상", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "에이전트가 배포 PR을 생성하면, 생성된 파일을 검토하고 병합하여 배포 파이프라인을 시작하세요.", - "Only clusters with Azure Entra ID authentication are shown.": "Azure Entra ID 인증을 사용하는 클러스터만 표시됩니다.", - "Performing final status verification": "최종 상태 확인 중", - "periodSeconds": "periodSeconds", - "Pipeline": "파이프라인", + "No repositories found": "리포지토리를 찾을 수 없음", + "less than a minute": "1분 미만", + "{{count}} min_other": "{{count}}분", + "Up next": "다음 단계", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "병합 상태를 확인하는 중...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "예상보다 오래 걸리고 있습니다. GitHub의 PR에서 최신 상태를 확인하세요.", + "This PR was closed without merging. You may need to restart the process.": "이 PR은 병합되지 않고 닫혔습니다. 프로세스를 다시 시작해야 할 수 있습니다.", + "Review on GitHub": "GitHub에서 검토", + "Agent is working": "에이전트가 작업 중임", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot 코딩 에이전트가 리포지토리를 분석하고 Dockerfile, Kubernetes 매니페스트, GitHub Actions 워크플로를 포함한 배포 PR을 생성하고 있습니다.", + "Issue {{number}}": "문제 {{number}}개", + "Waiting for agent workflow to start...": "에이전트 워크플로 시작 대기 중...", + "This typically takes 10–25 minutes.": "일반적으로 10~25분이 걸립니다.", "Pipeline configured": "파이프라인 구성됨", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "브라우저에서 인증을 완료하세요. 로그인이 완료되면 이 창이 자동으로 리디렉션됩니다.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "계속하려면 등록하세요.", - "Please review all the settings before creating your AKS project": "AKS 프로젝트를 만들기 전에 모든 설정을 검토하세요", - "Please select a deployment to view metrics": "메트릭을 보려면 배포를 선택하세요", - "Please select a subscription first": "먼저 구독을 선택하세요", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}}에 대한 CI/CD 파이프라인이 준비되었습니다. 배포 탭에서 배포를 트리거하세요.", + "Setup PR reviewed and merged": "설치 PR 검토 및 병합됨", + "Copilot agent reviewed your repo and generated deployment PR": "Copilot 에이전트가 리포지토리를 검토하고 배포 PR을 생성함", + "Deployment PR reviewed and merged": "배포 PR 검토 및 병합됨", + "View deployment": "배포 보기", + "You can collapse this panel. Progress is saved and will resume when you return.": "이 패널은 축소할 수 있습니다. 진행 상황이 저장되며, 돌아오면 이어서 계속됩니다.", + "Creating setup PR...": "설치 PR을 만드는 중...", + "The agent is creating the setup PR to enable the Copilot agent.": "에이전트가 Copilot 에이전트를 활성화하기 위한 설정 PR을 만드는 중입니다.", + "Setup PR Created": "설치 PR 생성됨", + "Review and merge the setup PR to enable the Copilot agent.": "Copilot 에이전트를 활성화하려면 설정 PR을 검토하고 병합하세요.", + "Setting up Copilot agent...": "Copilot 에이전트를 설정하는 중...", + "Creating the trigger issue for the Copilot coding agent.": "Copilot 코딩 에이전트용 트리거 문제를 만드는 중입니다.", + "Deployment PR Ready": "배포 PR 준비 완료", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "에이전트가 배포 PR을 생성했습니다. 생성된 파일을 검토하고 병합하여 배포 파이프라인을 시작하세요.", + "Copilot agent": "Copilot 에이전트", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "병합 후 Copilot 에이전트는 리포지토리를 분석하고 배포 PR을 만듭니다.", + "Deployment PR": "배포 PR", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "에이전트가 배포 PR을 생성하면, 생성된 파일을 검토하고 병합하여 배포 파이프라인을 시작하세요.", + "Connect Source": "원본 연결", + "Set up Copilot Agent": "Copilot 에이전트 설정", + "Review & Merge": "검토 및 병합", + "Collapse panel": "패널 축소", + "Keep Going": "계속", + "Discard": "취소", + "Canceling will discard your pipeline progress. Are you sure?": "취소하면 파이프라인 진행률이 삭제됩니다. 계속하시겠습니까?", + "Ensuring resource group exists...": "리소스 그룹이 있는지 확인하는 중...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "페더레이션 자격 증명을 구성하는 중...", + "Workload identity configured": "워크로드 ID 구성됨", + "Configure Workload Identity": "워크로드 ID 구성", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "GitHub Actions 파이프라인이 AKS 클러스터를 사용하여 인증할 수 있도록 다음 Azure 리소스가 만들어집니다.", + "Managed Identity": "관리 ID", + "in resource group": "리소스 그룹에서", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "페더레이션 자격 증명", + "OIDC trust for": "OIDC 신뢰 대상", + "branch": "분기", + "Resource group where the managed identity will be created": "관리 ID가 생성될 리소스 그룹", + "Workload identity configured successfully.": "워크로드 ID를 구성했습니다.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "권한 문제일 수 있습니다. GitHub 앱 권한을 확인하고 다시 시도하세요.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "작업이 GitHub에서 계속 실행되고 있을 수 있습니다. 최신 상태는 위의 링크를 확인하세요.", + "Try again, or check GitHub for details.": "다시 시도하거나 GitHub에서 자세한 내용을 확인하세요.", + "Initializing...": "초기화하는 중...", + "Checking repository readiness...": "리포지토리 준비 상태를 확인하는 중...", + "Loading configuration...": "구성을 로드하는 중...", + "Unknown error": "알 수 없는 오류", + "Trigger Copilot Agent": "Copilot 에이전트 트리거", + "Create Setup PR": "설치 PR 만들기", + "Failed to fetch deployment status": "배포 상태를 가져오지 못함", + "Failed to fetch pod status": "Pod 상태를 가져오지 못함", + "Failed to fetch service status": "서비스 상태를 가져오지 못함", + "Failed to monitor deployment health": "배포 상태를 모니터링하지 못함", + "Convert Namespaces to AKS Projects": "네임스페이스를 AKS 프로젝트로 변환", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "이 레이블을 추가하여 다음 네임스페이스를 AKS 데스크톱 프로젝트로 변환합니다.", + "managed namespaces only": "관리되는 네임스페이스만", + "Namespaces to convert:": "변환할 네임스페이스:", + "Already AKS projects (will import directly):": "이미 AKS 프로젝트인 항목(직접 가져옴):", + "Converting": "변환 중", + "Confirm & Import": "확인 및 가져오기", "Please select at least one namespace to import": "가져올 네임스페이스를 하나 이상 선택하세요", - "Please sign in to Azure to continue.": "계속하려면 Azure에 로그인하세요.", - "Pod Details": "Pod 세부 정보", - "Pod Name": "Pod 이름", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "가용성과 내결함성을 높이기 위해 Pod를 우선적으로 서로 다른 노드에 배치합니다.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "가용성 및 내결함성을 개선하기 위해 다른 노드에 Pod를 예약하는 것이 좋습니다. 이렇게 하면 Pod가 클러스터 전반에 분산되도록 하는 데 도움이 됩니다.", - "Preview and basic validation before apply": "적용하기 전 미리 보기 및 기본 유효성 검사", - "Preview Features": "미리 보기 기능", - "Project '{{name}}' successfully imported": "'{{name}}' 프로젝트를 가져옴", - "Project Basics": "Project 기본 사항", - "Project Created Successfully!": "프로젝트를 만들었습니다!", - "Project creation completed successfully!": "프로젝트 만들기를 완료했습니다!", - "Project Creation Failed": "프로젝트 만들기 실패", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "프로젝트 만들기 시간이 10분 후 초과되었습니다. 네임스페이스가 만들어졌는지 확인하고 다시 시도하세요.", - "Project Description": "프로젝트 설명", - "Project Name": "프로젝트 이름", - "Project name is available": "프로젝트 이름을 사용할 수 있음", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "프로젝트 이름에는 소문자, 숫자, 하이픈만 포함해야 합니다(공백 없음).", - "Project Status": "프로젝트 상태", - "Pull requests": "끌어오기 요청", - "Push agent config files": "에이전트 구성 파일 푸시", - "Re-deploy": "다시 배포", - "Read only root filesystem": "읽기 전용 루트 파일 시스템", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "네임스페이스의 대부분의 개체에 대한 읽기 전용 액세스입니다. 역할, 역할 바인딩 또는 비밀을 볼 수 없습니다.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "네임스페이스의 대부분의 개체에 대한 읽기/쓰기 권한입니다. 역할 또는 역할 바인딩을 보거나 수정할 수 없습니다. 비밀에 액세스하고 네임스페이스에서 ServiceAccount로 Pod를 실행할 수 있습니다.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "네임스페이스의 대부분의 리소스에 대한 읽기/쓰기 권한입니다. 네임스페이스 내에서 역할 및 역할 바인딩을 만들 수 있습니다. 리소스 할당량이나 네임스페이스 자체에는 쓸 수 없습니다.", - "Readiness path": "준비 경로", - "Ready": "준비 완료", - "Refresh": "새로 고침", - "Refreshing": "새로 고치는 중", - "Register AKS Cluster": "AKS 클러스터 등록", - "Register Cluster": "클러스터 등록", - "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview 기능 등록", - "Registering": "등록 중", - "Registering cluster": "클러스터 등록 중", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "일반 네임스페이스를 가져오려면 먼저 {{clusterName}} 클러스터를 등록해야 합니다. 먼저 이 클러스터에서 관리되는 네임스페이스를 가져오세요.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "{{clusterName}} 클러스터 병합(네임스페이스 {{count}}개)", + "Failed to merge cluster: {{message}}": "클러스터를 병합하지 못 함: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "{{name}}을(를) AKS 프로젝트로 변환하는 중(다소 시간이 걸릴 수 있습니다)...", + "Failed to convert namespace: {{message}}": "네임스페이스 변환 실패: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}}/{{total}}개를 가져오는 중: {{clusterName}}의 {{name}}", + "Project '{{name}}' successfully imported": "'{{name}}' 프로젝트를 가져옴", + "Namespace '{{name}}' converted and imported as project": "'{{name}}' 네임스페이스를 변환하여 프로젝트로 가져옴", + "Successfully merged {{count}} cluster(s)_other": "클러스터를 {{count}}개를 병합함", + "with {{count}} project(s)_other": "프로젝트 {{count}}개 포함", + "{{count}} failed._other": "{{count}}개가 실패했습니다.", + "Failed to import any projects. See details below.": "프로젝트를 가져오지 못 했습니다. 아래 세부 정보를 확인하세요.", + "Import AKS Projects": "AKS 프로젝트 가져오기", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "기존 관리되는 네임스페이스와 일반 네임스페이스를 프로젝트로 가져옵니다. 아직 AKS 데스크톱 프로젝트가 아닌 네임스페이스는 필요한 프로젝트 레이블을 추가하여 변환됩니다.", + "Select Namespaces to Import": "가져올 네임스페이스 선택", + "{{count}} selected_other": "{{count}}개가 선택됨", + "Select All": "모두 선택", + "Deselect All": "모두 선택 취소", + "AKS Managed": "AKS 관리됨", "Regular": "일반", - "Regular Kubernetes namespace": "일반 Kubernetes 네임스페이스", - "remove": "제거", - "Remove assignee": "담당자 제거", - "Reopen install page": "설치 페이지 다시 열기", - "Replica Bounds": "복제본 범위", - "Replicas": "복제본", - "Request & error rate": "요청 및 오류 비율", + "AKS Project?": "AKS 프로젝트인가요?", + "Yes": "예", + "No": "아니요", + "Importing": "가져오는 중", + "Import Selected Projects": "선택한 프로젝트 가져오기", + "Failed to fetch managed namespaces": "관리되는 네임스페이스를 가져오지 못함", + "Failed to fetch managed namespace details": "관리형 네임스페이스 세부 정보를 가져오지 못 함", + "Failed to update managed namespace": "관리되는 네임스페이스를 업데이트하지 못 함", + "Updating": "업데이트 중", + "Update": "업데이트", + "AKS desktop logo": "AKS 데스크톱 로고", + "No Deployments Found": "배포를 찾을 수 없음", + "There are no deployments in this project namespace yet.": "이 프로젝트 네임스페이스에는 아직 배포가 없습니다.", + "Deploy an application to view logs.": "로그를 보려면 애플리케이션을 배포합니다.", + "Metrics": "메트릭", + "CPU Usage": "CPU 사용량", + "Memory Usage": "메모리 사용", "Request Rate": "요청 빈도", - "Requests": "요청", - "Required Permissions": "필요한 권한", - "Resource Group": "리소스 그룹", - "Resource group where the managed identity will be created": "관리 ID가 생성될 리소스 그룹", - "Resource Limits": "리소스 제한", - "Resource Usage": "리소스 사용량", - "Resources to be deployed ({{count}} object)_one": "배포할 리소스({{count}}개 개체)", - "Resources to be deployed ({{count}} object)_other": "배포할 리소스({{count}}개 개체)", + "Error Rate": "오류 비율", + "Metrics refreshed every 30 seconds": "메트릭이 30초마다 새로 고쳐짐", + "Select a deployment to view metrics": "메트릭을 볼 배포 선택", + "Metrics Unavailable": "메트릭을 사용할 수 없음", + "Application Metrics": "애플리케이션 메트릭", + "Request & error rate": "요청 및 오류 비율", + "No data available": "사용 가능한 데이터 없음", "Response Time": "응답 시간", + "Memory utilization": "메모리 사용률", + "Network I/O": "네트워크 I/O", + "Deploy an application to start viewing metrics.": "애플리케이션을 배포하여 메트릭 보기를 시작합니다.", + "Please select a deployment to view metrics": "메트릭을 보려면 배포를 선택하세요", + "Project Status": "프로젝트 상태", + "Total Pods": "총 Pod 수", + "Application Health": "애플리케이션 상태", + "Loading metrics": "메트릭 로드 중", + "Resource Usage": "리소스 사용량", + "Avg Response Time": "평균 응답 시간", + "No response time data available": "응답 시간 데이터를 사용할 수 없음", + "Absolute usage": "절대 사용량", + "Network In": "네트워크 입력", + "Network Out": "네트워크 출력", + "Pod Details": "Pod 세부 정보", + "Pod Name": "Pod 이름", "Restarts": "다시 시작", - "Retry": "다시 시도", - "Review": "검토", - "Review & Deploy": "검토 및 배포", - "Review & Merge": "검토 및 병합", - "Review and merge the setup PR to enable the Copilot agent.": "Copilot 에이전트를 활성화하려면 설정 PR을 검토하고 병합하세요.", - "Review on GitHub": "GitHub에서 검토", - "Review Project Configuration": "프로젝트 구성 검토", - "Role": "역할", - "Role Assignment": "역할 할당", - "Run as non root user": "루트가 아닌 사용자로 실행", - "Run deployment workflows": "배포 워크플로 실행", - "Save": "저장", - "Scaled down": "축소됨", - "Scaling": "크기 조정", + "No pods found for deployment \"{{name}}\"": "배포 \"{{name}}\"에 대한 Pod를 찾을 수 없음", + "Preview Features": "미리 보기 기능", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "아직 개발 중인 기능을 사용하거나 사용하지 않도록 설정합니다. 미리 보기 기능은 향후 릴리스에서 변경되거나 제거될 수 있습니다.", + "GitHub Pipelines": "GitHub 파이프라인", + "Enable GitHub-based deployment pipelines for AKS projects.": "AKS 프로젝트에 GitHub 기반 배포 파이프라인을 사용하도록 설정합니다.", + "Loading scaling metrics from Prometheus": "Prometheus에서 크기 조정 메트릭을 로드하는 중", "Scaling Chart Unavailable": "크기 조정 차트 사용 불가", - "Scaling History (Last 24 Hours)": "크기 조정 기록(지난 24시간)", + "No scaling data available": "사용 가능한 크기 조정 데이터 없음", + "Edit HPA Configuration": "HPA 구성 편집", + "Edit Manual Scaling Configuration": "수동 크기 조정 구성 편집", + "Minimum Replicas": "최소 복제본", + "Maximum Replicas": "최대 복제본", + "Target CPU Utilization (%)": "대상 CPU 사용률(%)", + "Number of Replicas": "복제본 수", + "Set the desired number of pod replicas for this deployment": "이 배포에 대해 원하는 Pod 복제본 수 설정", + "Save": "저장", "Scaling Mode": "크기 조정 모드", - "Scaling Overview": "크기 조정 개요", - "Search clusters": "클러스터 검색", - "Search subscriptions": "구독 검색", - "Select a cluster": "클러스터 선택", - "Select a deployment to view metrics": "메트릭을 볼 배포 선택", + "Current Replicas": "현재 복제본", + "Desired Replicas": "원하는 복제본", + "Configured Replicas": "구성된 복제본", + "Replica Bounds": "복제본 범위", + "Available Replicas": "사용 가능한 복제본", + "CPU Usage / Target": "CPU 사용량/목표", + "Scaling": "크기 조정", "Select a deployment to view scaling metrics": "크기 조정 메트릭을 볼 배포 선택", - "Select a subscription": "구독 선택", - "Select All": "모두 선택", - "Select an AKS cluster": "AKS 클러스터 선택", - "Select an Azure subscription": "Azure 구독을 선택합니다.", - "Select an option": "옵션 선택", + "Scaling Overview": "크기 조정 개요", + "Edit Configuration": "구성 편집", + "Scaling History (Last 24 Hours)": "크기 조정 기록(지난 24시간)", + "Copied!": "복사되었습니다.", + "Copy": "복사", + "Copy to clipboard": "클립보드에 복사", + "No deployments found": "배포를 찾을 수 없음", "Select Deployment": "배포 선택", - "Select Namespaces to Import": "가져올 네임스페이스 선택", - "Select repository": "리포지토리 선택", - "Select Source": "원본 선택", - "Selected Cluster Details": "선택한 클러스터 세부 정보", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "선택한 클러스터가 kubeconfig에 없습니다. 계속하기 전에 등록하세요.", - "Service port": "서비스 포트", - "Service type": "서비스 유형", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "CPU 및 메모리 요청(보장된 리소스) 및 제한(최대 리소스)을 설정하여 리소스 할당을 제어하고 컨테이너가 과도한 클러스터 리소스를 사용하지 못하도록 합니다.", - "Set quota limits to prevent overuse and maintain cluster stability": "할당량 제한을 설정하여 과도한 사용을 방지하고 클러스터 안정성 유지", - "Set security, communication and access rules for incoming and outgoing traffic": "들어오고 나가는 트래픽에 대한 보안, 통신 및 액세스 규칙 설정", - "Set the desired number of pod replicas for this deployment": "이 배포에 대해 원하는 Pod 복제본 수 설정", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "배포를 자동화하고 워크플로를 간소화하도록 CI/CD 파이프라인 설정", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "AKS(Azure Kubernetes Service)에서 새 프로젝트 설정 및 구성", - "Set up Copilot Agent": "Copilot 에이전트 설정", - "Set up your pipeline": "파이프라인 설정", - "Setting up Copilot agent...": "Copilot 에이전트를 설정하는 중...", - "Setup PR Created": "설치 PR 생성됨", - "Setup PR reviewed and merged": "설치 PR 검토 및 병합됨", - "Sign in": "로그인", - "Sign in to GitHub": "GitHub에 로그인", - "Sign in to GitHub to view pipeline runs.": "파이프라인 실행을 보려면 GitHub에 로그인합니다.", - "Sign in with Azure": "Azure로 로그인", - "Sign in with your Azure account to manage AKS clusters and resources": "AKS 클러스터와 리소스를 관리하려면 Azure 계정으로 로그인", - "Source": "원본", - "Starting project creation": "프로젝트 만들기 시작", - "Startup path": "시작 경로", - "Status": "상태", - "Subscription": "구독", + "Loading deployments": "배포를 로드하는 중", + "No cluster is associated with this project.": "이 프로젝트에 연결된 클러스터가 없습니다.", + "Please sign in to Azure to continue.": "계속하려면 Azure에 로그인하세요.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "필요한 Azure 컨텍스트가 없습니다. 로그인되어 있고 클러스터가 유효한 구독, 리소스 그룹 및 테넌트와 연결되어 있는지 확인하세요.", + "Failed to load Azure context": "Azure 컨텍스트를 로드하지 못함", + "just now": "방금", + "{{seconds}}s ago": "{{seconds}}초 전", + "{{minutes}} min ago": "{{minutes}}분 전", + "{{hours}}h ago": "{{hours}}시간 전", + "{{days}}d ago": "{{days}}일 전", + "{{weeks}}w ago": "{{weeks}}주 전", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}}개의 클러스터 숨김 - Azure Entra ID 없음", + "{{count}} eligible cluster(s) found._one": "{{count}}개의 적합한 클러스터를 찾았습니다.", + "{{count}} failed._one": "{{count}}개가 실패했습니다.", + "{{count}} min_one": "{{count}}분", + "{{count}} selected_one": "{{count}}개가 선택됨", + "Access Control ({{count}} assignee)_one": "액세스 제어(담당자 {{count}}명)", + "Applied {{count}} resource(s) successfully._one": "리소스 {{count}}개를 적용했습니다.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "{{clusterName}} 클러스터 병합(네임스페이스 {{count}}개)", + "Resources to be deployed ({{count}} object)_one": "배포할 리소스({{count}}개 개체)", "Successfully merged {{count}} cluster(s)_one": "클러스터를 {{count}}개를 병합함", - "Successfully merged {{count}} cluster(s)_other": "클러스터를 {{count}}개를 병합함", - "successThreshold": "successThreshold", - "Target CPU utilization": "대상 CPU 사용률", - "Target CPU Utilization (%)": "대상 CPU 사용률(%)", - "Target port": "대상 포트", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "에이전트가 배포 PR을 생성했습니다. 생성된 파일을 검토하고 병합하여 배포 파이프라인을 시작하세요.", - "The agent is creating the setup PR to enable the Copilot agent.": "에이전트가 Copilot 에이전트를 활성화하기 위한 설정 PR을 만드는 중입니다.", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "계속하려면 AKS Desktop GitHub 앱을 {{repoName}}에 설치해야 합니다.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "관리형 네임스페이스를 만드는 데 aks-preview 확장이 필요합니다. 계속하려면 설치하세요.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot 코딩 에이전트가 리포지토리를 분석하고 Dockerfile, Kubernetes 매니페스트, GitHub Actions 워크플로를 포함한 배포 PR을 생성하고 있습니다.", - "The following addons can be enabled on this cluster:": "이 클러스터에서 다음 추가 기능을 사용하도록 설정할 수 있습니다.", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "GitHub Actions 파이프라인이 AKS 클러스터를 사용하여 인증할 수 있도록 다음 Azure 리소스가 만들어집니다.", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "이 레이블을 추가하여 다음 네임스페이스를 AKS 데스크톱 프로젝트로 변환합니다.", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "활동성을 확인할 HTTP 경로(예: /healthz)입니다. 프로브는 이 경로에 대한 HTTP GET 요청을 수행합니다.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "준비 상태를 확인할 HTTP 경로(예: /ready)입니다. 프로브는 이 경로에 대한 HTTP GET 요청을 수행합니다.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "시작을 확인할 HTTP 경로(예: /startup)입니다. 프로브는 이 경로에 대한 HTTP GET 요청을 수행합니다.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "관리형 네임스페이스를 만들려면 ManagedNamespacePreview 기능을 등록해야 합니다.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "컨테이너에서 사용할 수 있는 최대 CPU 양입니다. 초과하면 컨테이너가 제한됩니다.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "컨테이너에서 사용할 수 있는 최대 메모리 양입니다. 초과하면 컨테이너가 종료됩니다(OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "CPU 사용량이 높을 때 HPA가 스케일 업할 수 있는 최대 Pod 복제본 수입니다.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "컨테이너에 보장되는 최소 CPU 용량입니다. Kubernetes는 최소한 이만큼의 CPU를 사용할 수 있는 노드에 Pod를 예약합니다.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "컨테이너에 보장되는 최소 메모리 용량입니다. Kubernetes는 최소한 이만큼의 메모리를 사용할 수 있는 노드에 Pod를 예약합니다.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "CPU 사용량이 낮아도 HPA가 유지하는 최소 Pod 복제본 수입니다.", - "The namespace will be created on the selected cluster and set up as a project": "선택한 클러스터에 네임스페이스가 생성되고 프로젝트로 설정됩니다.", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "실행할 Pod 복제본 수입니다. 복제본이 많을수록 가용성 및 부하 분산이 향상됩니다.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "작업이 GitHub에서 계속 실행되고 있을 수 있습니다. 최신 상태는 위의 링크를 확인하세요.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes 서비스에서 노출하는 포트 번호입니다. 이 포트에 대한 트래픽은 대상 포트로 전달됩니다.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "컨테이너가 수신 대기하는 포트 번호입니다. 애플리케이션이 실행되는 컨테이너 내의 포트입니다.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "모든 Pod의 목표 평균 CPU 사용률입니다. CPU 사용량이 이 값을 초과하면 HPA가 스케일 업되고, 이 값 아래로 떨어지면 스케일 다운됩니다.", - "There are no deployments in this project namespace yet.": "이 프로젝트 네임스페이스에는 아직 배포가 없습니다.", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "예상보다 오래 걸리고 있습니다. GitHub의 PR에서 최신 상태를 확인하세요.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "권한 문제일 수 있습니다. GitHub 앱 권한을 확인하고 다시 시도하세요.", - "This PR was closed without merging. You may need to restart the process.": "이 PR은 병합되지 않고 닫혔습니다. 프로세스를 다시 시작해야 할 수 있습니다.", - "This typically takes 10–25 minutes.": "일반적으로 10~25분이 걸립니다.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "총 Pod 수", - "Track agent progress": "에이전트 진행률 추적", - "Trigger": "트리거", - "Trigger Copilot Agent": "Copilot 에이전트 트리거", - "Triggering...": "트리거 중...", - "Try again, or check GitHub for details.": "다시 시도하거나 GitHub에서 자세한 내용을 확인하세요.", - "Type": "유형", - "Unknown error": "알 수 없는 오류", - "unnamed": "명명되지 않음", - "Up next": "다음 단계", - "Update": "업데이트", - "Updating": "업데이트 중", - "Updating local settings": "로컬 설정을 업데이트하는 중", - "Upload files": "파일 업로드", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "ClusterIP를 사용합니다. 클러스터 내에서만 연결할 수 있는 서비스에 가장 적합합니다.", - "Use custom service port": "사용자 지정 서비스 포트 사용", - "Use existing manifests for full control": "전체 제어를 위해 기존 매니페스트 사용", - "User assignment completed with errors": "사용자 할당이 완료되었지만 오류 발생", - "Validation failed": "유효성 검사 실패", - "Value": "값", - "View deployment": "배포 보기", - "View on GitHub": "GitHub에서 보기", - "View run on GitHub": "GitHub에서 실행 보기", - "View workflow run": "워크플로 실행 보기", - "VPA (Vertical Pod Autoscaler)": "VPA(세로 Pod 자동 크기 조정기)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "에이전트 워크플로 시작 대기 중...", - "Waiting for browser authorization...": "브라우저 권한 부여를 기다리는 중...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "로그인 완료를 기다리는 중... ({{minutes}}분 남음)", - "Waiting for namespace to be created": "네임스페이스가 만들어질 때까지 기다리는 중", - "Waiting for namespace to propagate": "네임스페이스가 전파되기를 기다리는 중", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "경고: 이 작업은 실행 취소할 수 없습니다. 이 네임스페이스의 모든 리소스는 영구적으로 삭제됩니다.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "프로브가 실패하면 Kubernetes는 컨테이너를 포기했다가 다시 시작하기 전에 이 작업을 여러 번 시도합니다.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "프로브가 실패하면 Kubernetes는 포기하기 전에 이 작업을 여러 번 시도합니다. 시작 프로브의 경우 다시 시작하기 전에 대기하는 시간을 결정합니다.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "프로브가 실패하면 Kubernetes는 Pod를 준비되지 않은 상태로 표시하기 전에 이 작업을 여러 번 시도합니다.", - "with {{count}} project(s)_one": "프로젝트 {{count}}개 포함", - "with {{count}} project(s)_other": "프로젝트 {{count}}개 포함", - "with the following parameters:": "다음 매개 변수를 사용합니다.", - "Wizard steps": "마법사 단계", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "워크플로 디스패치가 트리거되었습니다. 진행 상황은 GitHub Actions를 확인하세요.", - "workflow on": "다음에 대한 워크플로", - "Workflows": "워크플로", - "Workload identity configured": "워크로드 ID 구성됨", - "Workload identity configured successfully.": "워크로드 ID를 구성했습니다.", - "Workloads": "워크로드", - "Yes": "예", - "You can collapse this panel. Progress is saved and will resume when you return.": "이 패널은 축소할 수 있습니다. 진행 상황이 저장되며, 돌아오면 이어서 계속됩니다.", - "You need to be logged in to Azure to register AKS clusters.": "AKS 클러스터를 등록하려면 Azure에 로그인해야 합니다.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "AKS 프로젝트 \"{{projectName}}\"이(가) 만들어졌으며 사용할 준비가 되었습니다.", - "Your project \"{{projectName}}\" is ready to use.": "\"{{projectName}}\" 프로젝트를 사용할 준비가 완료되었습니다." + "with {{count}} project(s)_one": "프로젝트 {{count}}개 포함" } diff --git a/plugins/aks-desktop/locales/nl/translation.json b/plugins/aks-desktop/locales/nl/translation.json index 285e53397..0128d1dec 100644 --- a/plugins/aks-desktop/locales/nl/translation.json +++ b/plugins/aks-desktop/locales/nl/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "'Gebruikersrol van AKS-cluster' ligt binnen het bereik van de resourcegroep", - "(already enabled)": "(al ingeschakeld)", + "Failed to load subscriptions": "Kan de abonnementen niet laden", + "Failed to load AKS clusters": "Kan AKS-clusters niet laden", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Het cluster '{{cluster}}' is samengevoegd in kubeconfig", + "Failed to register cluster: {{message}}": "Kan cluster niet registreren: {{message}}", + "Register AKS Cluster": "AKS-cluster registreren", + "Checking authentication status": "Verificatiestatus controleren", + "You need to be logged in to Azure to register AKS clusters.": "Je moet zijn aangemeld bij Azure om AKS-clusters te registreren.", + "Subscription": "Abonnement", + "Select an Azure subscription": "Selecteer een Azure-abonnement", + "Loading subscriptions": "Abonnementen worden geladen", + "Loading AKS clusters": "AKS-clusters laden", + "No AKS clusters found in this subscription.": "Er zijn geen AKS-clusters gevonden in dit abonnement.", + "AKS Cluster": "AKS-cluster", + "Select an AKS cluster": "Een AKS-cluster selecteren", + "Selected Cluster Details": "Details van geselecteerde cluster", + "Name": "Naam", + "Resource Group": "Resourcegroep", + "Location": "Locatie", + "Kubernetes Version": "Kubernetes-versie", + "Done": "Gereed", + "Cancel": "Annuleren", + "Registering": "Registreren", + "Register Cluster": "Cluster registreren", + "Initiating Azure login": "Azure-aanmelding starten", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Rond de verificatie af in je browser. Dit venster wordt automatisch doorgestuurd zodra je bent ingelogd.", + "Login successful! Redirecting": "Je bent aangemeld! Omleiden", + "Login timeout. Please try again.": "Time-out voor aanmelding. Probeer het opnieuw.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Wachten op voltooiing van aanmelding... ({{minutes}} minuten resterend)", + "Failed to initiate login: {{message}}": "De aanmelding is niet geïnitieerd: {{message}}", + "Azure Authentication": "Azure-verificatie", + "Sign in with your Azure account to manage AKS clusters and resources": "Meld je aan met je Azure-account om AKS-clusters en -resources te beheren", + "Sign in with Azure": "Aanmelden met Azure", + "Loading Azure account information": "Azure-accountgegevens laden", + "Back": "Vorige", + "Azure Account": "Azure-account", + "Logged in as": "Aangemeld als", + "Add Cluster from Azure": "Cluster toevoegen vanuit Azure", + "Logging out": "Afmelden", + "Log out": "Afmelden", + "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview-vereisten niet voldaan", + "Dismiss": "Negeren", + "Configure Pipeline": "Pijplijn configureren", + "Loading Azure context...": "Azure-context laden...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Alleen-lezentoegang tot de meeste objecten in een naamruimte. Rollen, rolbindingen of geheimen worden niet weergegeven.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Lees-/schrijftoegang tot de meeste objecten in een naamruimte. Rollen of rolbindingen worden niet weergegeven of gewijzigd. Kan toegang krijgen tot geheimen en pods uitvoeren zoals elk ServiceAccount in de naamruimte.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Lees-/schrijftoegang tot de meeste resources in een naamruimte. Kan rollen en rolbindingen maken binnen de naamruimte. Kan niet schrijven naar resourcequotum of de naamruimte zelf.", + "Access": "Toegang", + "Assign permissions to users who need access to your namespace": "Wijs machtigingen toe aan gebruikers die toegang nodig hebben tot je naamruimte", + "Assignee": "Toegewezen gebruiker", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Rol", + "Remove assignee": "Toegewezen gebruiker verwijderen", + "Add assignee": "Toegewezen gebruiker toevoegen", + "Only clusters with Azure Entra ID authentication are shown.": "Alleen clusters met Azure Entra ID-verificatie worden weergegeven.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} cluster(s) verborgen, geen Azure Entra-id", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} cluster(s) verborgen, geen Azure Entra-id", + "No eligible clusters found in this subscription.": "Er zijn geen in aanmerking komende clusters gevonden in dit abonnement.", "{{count}} eligible cluster(s) found._one": "{{count}} in aanmerking komende cluster(s) gevonden.", "{{count}} eligible cluster(s) found._other": "{{count}} in aanmerking komende cluster(s) gevonden.", - "{{count}} failed._one": "{{count}} is mislukt.", - "{{count}} failed._other": "{{count}} is mislukt.", - "{{count}} min_one": "{{count}} minuut", - "{{count}} min_other": "{{count}} minuut", - "{{count}} selected_one": "{{count}} geselecteerd", - "{{count}} selected_other": "{{count}} geselecteerd", - "{{days}}d ago": "{{days}}d geleden", - "{{hours}}h ago": "{{hours}}u geleden", - "{{minutes}} min ago": "{{minutes}} min. geleden", - "{{seconds}}s ago": "{{seconds}}s geleden", - "{{weeks}}w ago": "{{weeks}}w geleden", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Er moet een cluster worden geselecteerd", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Er wordt een nieuwe naamruimte op het cluster gemaakt met toegepaste projectlabels. Deze verschijnt direct in je projectlijst.", - "Absolute usage": "Absoluut gebruik", - "Access": "Toegang", - "Access Control ({{count}} assignee)_one": "Toegangscontrole ({{count}} toegewezen gebruiker)", - "Access Control ({{count}} assignee)_other": "Toegangscontrole ({{count}} toegewezen gebruikers)", - "Actions": "Acties", - "Add assignee": "Toegewezen gebruiker toevoegen", - "Add Cluster from Azure": "Cluster toevoegen vanuit Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Voeg een of meer Kubernetes-manifesten toe. Upload bestanden om de editor te vullen of plak/bewerk ze direct hieronder.", - "Add variable": "Variabele toevoegen", - "Advanced": "Geavanceerd", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Na het samenvoegen analyseert de Copilot-agent je opslagplaats en maakt een implementatie-PR", - "Agent is working": "Agent is bezig", - "AKS Cluster": "AKS-cluster", - "AKS desktop logo": "AKS-desktoplogo", - "AKS Managed": "Door AKS beheerd", - "AKS Preview Extension installed successfully!": "De AKS Preview-extensie is geïnstalleerd.", - "AKS Preview Extension Required": "AKS Preview-extensie vereist", - "AKS Project?": "AKS-project?", - "All selected addons have been enabled successfully.": "Alle geselecteerde invoegtoepassingen zijn ingeschakeld.", - "All verifications completed successfully!": "Alle verificaties zijn succesvol afgerond!", - "Allow all traffic": "Al het netwerkverkeer toestaan", - "Allow privilege escalation": "Escalatie van bevoegdheden toestaan", - "Allow traffic within same namespace": "Verkeer binnen dezelfde naamruimte toestaan", - "Already AKS projects (will import directly):": "Al AKS-projecten (worden direct geïmporteerd):", - "Also delete the namespaces (this will remove all resources within them)": "Verwijder ook de naamruimten (hiermee worden alle resources erin verwijderd)", - "Another project already exists with same name. Please choose a different name.": "Er bestaat al een ander project met dezelfde naam. Kies een andere naam.", - "Application Health": "Status van de toepassing", - "Application Metrics": "Metrische toepassingsgegevens", - "Application name": "Naam van toepassing", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} resource(s) toegepast, maar {{failed}} mislukt:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} resource(s) toegepast.", - "Applied {{count}} resource(s) successfully._other": "{{count}} resource(s) toegepast.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Weet je zeker dat je het project {{projectId}} wilt verwijderen?", - "Assign permissions to users who need access to your namespace": "Wijs machtigingen toe aan gebruikers die toegang nodig hebben tot je naamruimte", - "Assignee": "Toegewezen gebruiker", - "Assigning AKS Cluster User Role...": "Gebruikersrol AKS-cluster toewijzen...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS Desktop autoriseren om implementatiepijplijnen te maken in uw opslagplaats.", - "Auto-generated Deployment and Service manifests": "Automatisch gegenereerde implementatie- en servicemanifesten", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Hiermee wordt het aantal pods automatisch geschaald op basis van CPU-gebruik. HPA verhoogt het aantal pods als het CPU-gebruik boven de doelwaarde komt en verlaagt het als het daaronder blijft.", - "Available Replicas": "Beschikbare replica's", - "Avg Response Time": "Gem. reactietijd", - "Azure Account": "Azure-account", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Azure-verificatie", - "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview-vereisten niet voldaan", - "Azure Monitor Metrics (Managed Prometheus)": "Metrische gegevens van Azure Monitor (beheerde Prometheus)", - "Back": "Vorige", - "Basics": "Basisinformatie", - "branch": "vertakking", - "Bring your own Kubernetes manifests to deploy": "Gebruik je eigen Kubernetes-manifesten om te implementeren", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Testen gebruiken standaard HTTP GET op het hoofdpad met standaardinstellingen. Schakel dit in om de Testinstellingen aan te passen.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Standaard komt de servicepoort overeen met de doelpoort. Schakel dit in om een andere poort voor de service te gebruiken.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Standaard worden de Azure beheerde naamruimte- en projectlabels verwijderd uit de volgende naamruimten:", - "Cancel": "Annuleren", - "Canceling will discard your pipeline progress. Are you sure?": "Als u annuleert, wordt de voortgang van de pijplijn verwijderd. Weet u het zeker?", - "Cancelled deletion of project {{ projectId }}.": "Verwijderen van project {{ projectId }} is geannuleerd.", - "Checking authentication status": "Verificatiestatus controleren", - "Checking for existing identity...": "Controleren op bestaande identiteit...", - "Checking if another project exists with same name": "Controleren of er een ander project met dezelfde naam bestaat", - "Checking merge status...": "Samenvoegstatus controleren...", - "Checking repository readiness...": "Gereedheid van opslagplaats controleren...", - "Checking...": "Controleren...", - "Choose a source for your deployment (container image, repo, etc.).": "Kies een bron voor je implementatie (containerafbeelding, opslagplaats, enzovoort).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "CI/CD-pijplijn voor {{repoFullName}} is klaar. Implementaties activeren vanaf het tabblad Implementeren.", - "Clear editor": "Editor wissen", - "Close": "Sluiten", - "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Het cluster '{{cluster}}' is samengevoegd in kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Cluster {{clusterName}} moet geregistreerd zijn voordat je gewone naamruimten kunt importeren. Importeer eerst een beheerde naamruimte van dit cluster.", - "Cluster Configuration": "Clusterconfiguratie", - "Cluster is being deleted. Cannot deploy to this cluster.": "Het cluster wordt verwijderd. Kan niet implementeren naar dit cluster.", "Cluster is currently updating. Deployment may fail.": "Het cluster wordt momenteel bijgewerkt. Implementatie kan mislukken.", - "Cluster is deallocated. Please start the cluster before deploying.": "De toewijzing van het cluster is ongedaan gemaakt. Start het cluster voordat je implementeert.", - "Cluster is in a failed state. Please check Azure portal.": "Het cluster heeft een foutstatus. Controleer de Azure-portal.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Het cluster wordt verwijderd. Kan niet implementeren naar dit cluster.", "Cluster is still being created. Please wait until creation completes.": "Het cluster wordt nog gemaakt. Wacht tot het maken is voltooid.", + "Cluster is in a failed state. Please check Azure portal.": "Het cluster heeft een foutstatus. Controleer de Azure-portal.", "Cluster is stopped. Please start the cluster before deploying.": "Cluster is gestopt. Start het cluster voordat je gaat implementeren.", + "Cluster is deallocated. Please start the cluster before deploying.": "De toewijzing van het cluster is ongedaan gemaakt. Start het cluster voordat je implementeert.", + "AKS Preview Extension Required": "AKS Preview-extensie vereist", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "De extensie aks-preview is vereist om beheerde naamruimten te maken. Installeer het om door te gaan.", + "Installing": "Installeren", + "Install Extension": "Extensie installeren", + "AKS Preview Extension installed successfully!": "De AKS Preview-extensie is geïnstalleerd.", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "De functie ManagedNamespacePreview moet zijn geregistreerd om beheerde naamruimten te maken.", + "Current state": "Huidige status", + "Please register it to continue.": "Registreer het om door te gaan.", + "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview-functie registreren", + "ManagedNamespacePreview feature registered successfully!": "De functie ManagedNamespacePreview is geregistreerd.", + "Project Name": "Projectnaam", + "Checking if another project exists with same name": "Controleren of er een ander project met dezelfde naam bestaat", + "Another project already exists with same name. Please choose a different name.": "Er bestaat al een ander project met dezelfde naam. Kies een andere naam.", + "Project name is available": "Projectnaam is beschikbaar", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Projectnaam mag alleen kleine letters, cijfers en afbreekstreepjes bevatten (geen spaties)", + "Project Description": "Projectbeschrijving", + "Enter project description": "Projectbeschrijving invoeren", + "Select a subscription": "Een abonnement selecteren", + "Search subscriptions": "Abonnementen zoeken", + "No subscriptions found": "Geen abonnementen gevonden", + "Retry": "Opnieuw proberen", + "Cluster": "Cluster", + "Please select a subscription first": "Selecteer eerst een abonnement", + "Loading clusters": "Clusters laden", + "Select a cluster": "Een cluster selecteren", + "Search clusters": "Clusters zoeken", + "No clusters with Azure Entra ID authentication found for this subscription": "Er zijn geen clusters met Azure Entra ID-verificatie gevonden voor dit abonnement", "Cluster Not Ready": "Cluster niet gereed", - "Collapse panel": "Deelvenster samenvouwen", - "Complete authorization on your browser screen": "Autorisatie voltooien op uw browserscherm", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Voltooi de installatie in uw browser. Dit wordt automatisch bijgewerkt zodra de app is geïnstalleerd op {{repoName}}.", - "Compute Quota": "Berekeningsquotum", - "Configuration Complete": "Configuratie voltooid", - "Configuration Error": "Configuratiefout", + "Refreshing": "Vernieuwen", + "Refresh": "Vernieuwen", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Het geselecteerde cluster ontbreekt in de kubeconfig. Registreer het voordat je verdergaat.", + "Registering cluster": "Cluster registreren", + "Wizard steps": "Wizardstappen", + "Azure Monitor Metrics (Managed Prometheus)": "Metrische gegevens van Azure Monitor (beheerde Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (automatisch schalen op basis van gebeurtenissen)", + "VPA (Vertical Pod Autoscaler)": "VPA (Vertical Pod Autoscaler)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "De configuratie duurt langer dan verwacht. Controleer de Azure Portal voor de huidige status van uw cluster.", - "Configure": "Configureren", - "Configure Cluster": "Cluster configureren", - "Configure Container Deployment": "Containerimplementatie configureren", - "Configure container health probes.": "Configureer containerstatustests.", - "Configure Pipeline": "Pijplijn configureren", - "Configure security context settings for the container.": "Stel beveiligingscontextinstellingen voor de container in.", - "Configure Workload Identity": "Workloadidentiteit configureren", - "Configured Replicas": "Geconfigureerde replica's", + "Failed to enable addons": "Kan invoegtoepassingen niet inschakelen", + "Failed to enable addon: {{error}}": "Invoegtoepassing is niet ingeschakeld: {{error}}", + "Cluster Configuration": "Clusterconfiguratie", + "(already enabled)": "(al ingeschakeld)", + "The following addons can be enabled on this cluster:": "De volgende invoegtoepassingen kunnen worden ingeschakeld op dit cluster:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "De netwerkbeleidsengine kan niet worden gewijzigd nadat het cluster is gemaakt. Maak een nieuw cluster met", + "for full network policy support.": "voor volledige ondersteuning van het netwerkbeleid.", + "Enabling these addons may incur additional Azure costs.": "Als u deze invoegtoepassingen inschakelt, worden mogelijk extra Azure-kosten in rekening gebracht.", + "Configuration Error": "Configuratiefout", + "Configuration Complete": "Configuratie voltooid", + "All selected addons have been enabled successfully.": "Alle geselecteerde invoegtoepassingen zijn ingeschakeld.", "Configuring cluster... This may take a few minutes.": "Cluster configureren... Dit kan enkele minuten duren.", - "Configuring federated credential...": "Federatieve referentie configureren...", + "Enabling Addons...": "Invoegtoepassingen inschakelen...", "Configuring...": "Configureren...", - "Confirm & Import": "Bevestigen en importeren", - "Connect": "Verbinding maken", - "Connect GitHub": "GitHub verbinden", - "Connect Source": "Verbinding maken met bron", - "Connect to GitHub": "Verbinding maken met GitHub", - "Connected": "Verbonden", - "Connected to '{{username}}'.": "Verbonden met {{username}}.", - "Connecting to GitHub...": "Met GitHub verbinding maken...", - "Connecting...": "Verbinden...", - "Container image": "Containerinstallatiekopie", - "Container Image": "Containerinstallatiekopie", - "Contents": "Inhoud", - "Continue": "Doorgaan", - "Controls whether a process can gain more privileges than its parent process.": "Hiermee bepaal je of een proces meer bevoegdheden kan krijgen dan het bovenliggende proces.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Hiermee wordt bepaald of een proces meer bevoegdheden kan krijgen dan het bovenliggende proces. Als u deze optie uitschakelt (aanbevolen), voorkomt u aanvallen voor de escalatie van bevoegdheden.", - "Convert Namespaces to AKS Projects": "Naamruimten converteren naar AKS-projecten", - "Converting": "Converteren", - "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} omzetten naar AKS-project (dit kan even duren)...", - "Copied!": "Gekopieerd!", - "Copilot agent": "Copilot-agent", - "Copilot agent reviewed your repo and generated deployment PR": "De Copilot-agent heeft je opslagplaats beoordeeld en een implementatie-PR gemaakt", - "Copy": "Kopiëren", - "Copy to clipboard": "Naar klembord kopiëren", - "CPU": "CPU", - "CPU limit": "CPU-limiet", - "CPU Limits": "CPU-limieten", - "CPU request": "CPU-aanvraag", - "CPU Requests": "CPU-aanvragen", + "Configure Cluster": "Cluster configureren", + "Compute Quota": "Berekeningsquotum", + "Set quota limits to prevent overuse and maintain cluster stability": "Stel quotumlimieten in om overbelasting te voorkomen en de stabiliteit van het cluster te waarborgen", "CPU Resources": "CPU-bronnen", - "CPU Usage": "CPU-gebruik", - "CPU Usage / Target": "CPU-gebruik/doel", - "Create a new namespace on an existing cluster and set it up as a project": "Maak een nieuwe naamruimte op een bestaand cluster en stel deze in als project", - "Create Application": "Toepassing maken", - "Create deployment PRs": "Implementatie-PR's maken", - "Create Namespace": "Naamruimte maken", - "Create New Namespace": "Nieuwe naamruimte maken", - "Create Project": "Project maken", - "Create Setup PR": "Pull-aanvraag voor installatie maken", - "Create setup workflow in .github/workflows/": "Maak een installatiewerkstroom in .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Maakt een LoadBalancer om de applicatie toegankelijk te maken via internet.", - "Creating managed identity...": "Beheerde identiteit maken...", - "Creating namespace": "Naamruimte maken", - "Creating Namespace": "Naamruimte maken", - "Creating Project": "Project maken", - "Creating setup PR...": "Pull-aanvraag voor installatie maken...", - "Creating the trigger issue for the Copilot coding agent.": "De trigger voor de Copilot-coderingsagent maken.", - "Current Replicas": "Huidige Replica's", - "Current state": "Huidige status", - "Degraded": "Gedegradeerd", - "Delete project": "Project verwijderen", + "CPU Requests": "CPU-aanvragen", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Gegarandeerde minimale CPU (1000m = 1 CPU-kern)", + "CPU Limits": "CPU-limieten", + "Maximum CPU allowed (1000m = 1 CPU core)": "Maximaal toegestaan CPU (1000m = 1 CPU-kern)", + "Memory Resources": "Geheugenbronnen", + "Memory Requests": "Geheugenaanvragen", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimaal gegarandeerd geheugen (1024 MiB = 1 GiB)", + "Memory Limits": "Geheugenlimieten", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximaal toegestaan geheugen (1024 MiB = 1 GiB)", + "Basics": "Basisinformatie", + "Networking Policies": "Netwerkbeleid", + "Review": "Beoordelen", + "New Project": "Nieuw project", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Stel een nieuw project in en configureer het in Azure Kubernetes Service (AKS)", + "Creating Project": "Project maken", + "Create Project": "Project maken", + "Loading": "Laden", + "Next": "Volgende", + "Project Created Successfully!": "Het project is gemaakt!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Je AKS-project {{projectName}} is gemaakt en is klaar voor gebruik.", + "Application name": "Naam van toepassing", + "Enter application name": "Toepassingsnaam invoeren", + "Enter a name for your first application to get started with deployment.": "Voer een naam in voor je eerste toepassing om aan de slag te gaan met de implementatie.", + "Create Application": "Toepassing maken", + "Project Creation Failed": "Project is niet gemaakt", + "Set security, communication and access rules for incoming and outgoing traffic": "Stel beveiligings-, communicatie- en toegangsregels in voor binnenkomend en uitgaand verkeer", + "Allow traffic within same namespace": "Verkeer binnen dezelfde naamruimte toestaan", + "Allow all traffic": "Al het netwerkverkeer toestaan", + "Deny all traffic": "Alle verkeer weigeren", + "Review Project Configuration": "Projectconfiguratie controleren", + "Please review all the settings before creating your AKS project": "Controleer alle instellingen voordat je je AKS-project maakt", + "Project Basics": "Projectbasis", + "Description": "Beschrijving", + "No description provided": "Er is geen beschrijving opgegeven", + "Ingress Policy": "Inkomend beleid", + "Egress Policy": "Beleid voor uitgaand verkeer", + "CPU": "CPU", + "Requests": "Aanvragen", + "Limits": "Limieten", + "Memory": "Geheugen", + "Access Control ({{count}} assignee)_one": "Toegangscontrole ({{count}} toegewezen gebruiker)", + "Access Control ({{count}} assignee)_other": "Toegangscontrole ({{count}} toegewezen gebruikers)", + "Not specified": "Niet opgegeven", + "Select an option": "Een optie selecteren", + "No options": "Geen opties", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Het maken van het project wordt gestart", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Er is na 10 minuten een time-out opgetreden bij het maken van het project. Controleer of de naamruimte is gemaakt en probeer het opnieuw.", + "Initiating managed namespace creation": "Maken van beheerde naamruimte starten", + "Namespace creation failed: {{message}}": "Kan de naamruimte niet maken: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Het maken van de naamruimte is gestart! Status van de aanmaak wordt gecontroleerd", + "Waiting for namespace to propagate": "Wachten tot naamruimte is doorgegeven", + "Namespace status check failed: {{message}}": "De statuscontrole van de naamruimte is mislukt: {{message}}", + "Waiting for namespace to be created": "Wachten op het maken van de naamruimte", + "Namespace status verification failed: {{message}}": "Verificatie van naamruimtestatus is mislukt: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "De API voor het maken van de naamruimte is voltooid en de gebruikerstoewijzingen worden voortgezet", + "Namespace creation completed successfully! Adding user access": "Het maken van de naamruimte is voltooid! Gebruikerstoegang toevoegen", + "User assignment completed with errors": "Gebruikerstoewijzing voltooid met fouten", + "Project creation completed successfully!": "Het maken van het project is voltooid!", + "Performing final status verification": "Definitieve statusverificatie uitvoeren", + "Final status check failed: {{message}}": "De definitieve statuscontrole is mislukt: {{message}}", + "Final status verification failed: {{message}}": "Verificatie van definitieve status is mislukt: {{message}}", + "All verifications completed successfully!": "Alle verificaties zijn succesvol afgerond!", + "Failed to create project": "Kan het project niet maken", + "A cluster must be selected": "Er moet een cluster worden geselecteerd", + "Namespace name is required": "Naam van naamruimte is verplicht", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Namen van naamruimte mogen alleen kleine letters, cijfers en koppeltekens bevatten en moeten beginnen en eindigen met een alfanumeriek teken", + "Namespace name must be 63 characters or fewer": "De naam van de naamruimte mag maximaal 63 tekens bevatten", + "Creating namespace": "Naamruimte maken", + "Updating local settings": "Lokale instellingen bijwerken", + "Namespace created successfully!": "Naamruimte gemaakt.", + "Failed to create namespace": "Kan naamruimte niet maken", + "No clusters found. Register a cluster first.": "Er zijn geen clusters gevonden. Registreer eerst een cluster.", + "Namespace Name": "Naam van naamruimte", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Mag alleen kleine letters, cijfers en koppeltekens bevatten, en moet beginnen en eindigen met een alfanumeriek teken", + "The namespace will be created on the selected cluster and set up as a project": "De naamruimte wordt op het geselecteerde cluster gemaakt en ingesteld als project", + "Type": "Type", + "Regular Kubernetes namespace": "Standaard Kubernetes-naamruimte", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Er wordt een nieuwe naamruimte op het cluster gemaakt met toegepaste projectlabels. Deze verschijnt direct in je projectlijst.", + "Create New Namespace": "Nieuwe naamruimte maken", + "Create a new namespace on an existing cluster and set it up as a project": "Maak een nieuwe naamruimte op een bestaand cluster en stel deze in als project", + "Creating Namespace": "Naamruimte maken", + "Namespace Creation Failed": "Kan de naamruimte niet maken", + "Namespace Created Successfully!": "Naamruimte gemaakt.", + "Your project \"{{projectName}}\" is ready to use.": "Je project '{{projectName}}' is klaar voor gebruik.", + "Go To Projects": "Ga naar Projecten", + "Create Namespace": "Naamruimte maken", + "Delete project": "Project verwijderen", "Delete Project": "Project verwijderen", + "Are you sure you want to delete project \"{{projectId}}\"?": "Weet je zeker dat je het project {{projectId}} wilt verwijderen?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Standaard worden de Azure beheerde naamruimte- en projectlabels verwijderd uit de volgende naamruimten:", + "Also delete the namespaces (this will remove all resources within them)": "Verwijder ook de naamruimten (hiermee worden alle resources erin verwijderd)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Waarschuwing: deze actie kan niet ongedaan worden gemaakt. Alle resources in deze naamruimten worden definitief verwijderd.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Opmerking: Voor door AKS beheerde naamruimten wordt Azure ARM-beheer automatisch verwijderd.", "Delete Project & Namespaces": "Project en naamruimten verwijderen", - "Deleted project {{ projectId }}.": "Project {{ projectId }} is verwijderd.", "Deleting project {{ projectId }}…": "Project {{ projectId }} verwijderen…", - "Deny all traffic": "Alle verkeer weigeren", - "Deploy": "Implementeren", - "Deploy {{repo}}": "{{repo}} implementeren", - "Deploy an application to start viewing metrics.": "Implementeer een app om metrische gegevens te bekijken.", - "Deploy an application to view logs.": "Implementeer een toepassing om logboeken weer te geven.", + "Cancelled deletion of project {{ projectId }}.": "Verwijderen van project {{ projectId }} is geannuleerd.", + "Deleted project {{ projectId }}.": "Project {{ projectId }} is verwijderd.", + "Error deleting project {{ projectId }}.": "Fout bij het verwijderen van project {{ projectId }}.", "Deploy Application": "Toepassing implementeren", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implementeren vanuit Azure Container Registry, Docker Hub of GHCR", + "Failed to load pipeline runs": "Pijplijnuitvoeringen zijn niet geladen", + "Pipeline": "Pijplijn", + "Set up your pipeline": "Uw pijplijn instellen", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Een CI/CD-pijplijn instellen om uw implementaties te automatiseren en uw werkstroom te stroomlijnen", + "Waiting for browser authorization...": "Wachten op browserautorisatie...", + "Sign in to GitHub to view pipeline runs.": "Meld u aan bij GitHub om pijplijnuitvoeringen weer te geven.", + "Connecting...": "Verbinden...", + "No pipeline runs yet.": "Er zijn nog geen pijplijnuitvoeringen.", + "View on GitHub": "Weergeven in GitHub", + "View run on GitHub": "Uitvoering weergeven in GitHub", + "Healthy": "Goed", + "Scaled down": "Omlaag geschaald", + "Degraded": "Gedegradeerd", + "VS Code": "VS-code", + "Manual": "Handmatig", + "Manual Deploy": "Handmatig implementeren", + "Deploy {{repo}}": "{{repo}} implementeren", "Deploy via Pipeline": "Implementeren via pijplijn", - "Deploying": "Implementeren...", + "No deployments found in this namespace.": "Er zijn geen implementaties gevonden in deze naamruimte.", "Deployment": "Implementatie", - "Deployment PR": "Implementatie-PR", - "Deployment PR Ready": "Pull-aanvraag voor implementatie gereed", - "Deployment PR reviewed and merged": "Implementatie-PR beoordeeld en samengevoegd", - "Deployment source": "Implementatiebron", - "Description": "Beschrijving", - "Deselect All": "Alle selecties opheffen", - "Desired Replicas": "Gewenste replica's", - "Discard": "Verwijderen", - "Dismiss": "Negeren", - "Distributes pods evenly across nodes to improve workload distribution.": "Verdeelt pods gelijkmatig over knooppunten om de workloaddistributie te verbeteren.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Hiermee worden pods gelijkmatig gedistribueerd over knooppunten, zones of andere topologiedomeinen om de distributie en beschikbaarheid van workloads te verbeteren.", - "Done": "Gereed", - "Edit Configuration": "Configuratie bewerken", + "Source": "Bron", + "Replicas": "Replica's", + "Ready": "Gereed", + "Status": "Status", + "Actions": "Acties", "Edit deployment": "Implementatie bewerken", - "Edit HPA Configuration": "HPA-configuratie bewerken", - "Edit Manual Scaling Configuration": "Handmatige schaalconfiguratie bewerken", - "Egress Policy": "Beleid voor uitgaand verkeer", + "View workflow run": "Werkstroomuitvoering weergeven", + "Re-deploy": "Opnieuw implementeren", + "Failed to trigger deployment": "Implementatie is niet geactiveerd", + "Trigger": "Trigger", + "workflow on": "werkstroom in", + "with the following parameters:": "met de volgende parameters:", + "Namespace": "Naamruimte", + "Sign in": "Aanmelden", + "GitHub authentication required to trigger deployment.": "GitHub-verificatie is vereist om de implementatie te activeren.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Verzenden van werkstroom is geactiveerd. Controleer GitHub Actions op voortgang.", + "Close": "Sluiten", + "Triggering...": "Activeren...", + "Deploy": "Implementeren", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "GitHub-pijplijnen inschakelen in Instellingen → Preview-functies om pijplijnimplementaties te gebruiken.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Schakel GitHub-gebaseerde implementatiepijplijnen in voor AKS-projecten.", - "Enable Horizontal Pod Autoscaler": "Horizontal Pod Autoscaler inschakelen", - "Enable liveness probe": "Activiteitstest inschakelen", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Schakel functies in of uit die nog in ontwikkeling zijn. Preview-functies kunnen in toekomstige versies wijzigen of verdwijnen.", - "Enable pod anti-affinity": "Antiaffiniteit voor pod inschakelen", - "Enable public access": "Openbare toegang inschakelen", - "Enable readiness probe": "Gereedheidstest inschakelen", - "Enable resource requests and limits": "Resourceaanvragen en -limieten inschakelen", - "Enable startup probe": "Opstarttest inschakelen", - "Enable topology spread constraints": "Spreidingsbeperkingen voor topologie inschakelen", - "Enabling Addons...": "Invoegtoepassingen inschakelen...", - "Enabling these addons may incur additional Azure costs.": "Als u deze invoegtoepassingen inschakelt, worden mogelijk extra Azure-kosten in rekening gebracht.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Zorg voor minimale ≤ maximale replica's en doel-CPU tussen 10% en 95%.", + "Workloads": "Werkbelastingen", + "No clusters in this project.": "Er zijn geen clusters in dit project.", + "Failed to fetch deployments": "Kan de implementaties niet ophalen", + "Failed to fetch cluster status": "Clusterstatus is niet opgehaald", + "Configure security context settings for the container.": "Stel beveiligingscontextinstellingen voor de container in.", + "Run as non root user": "Uitvoeren als niet-hoofdgebruiker", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Zorgt ervoor dat de container wordt uitgevoerd als een niet-hoofdgebruiker (UID != 0) voor betere beveiliging. Hiermee worden aanvallen voor de escalatie van bevoegdheden voorkomen.", "Ensures the container runs as a non-root user for better security.": "Zorgt ervoor dat de container wordt uitgevoerd als een niet-hoofdgebruiker voor betere beveiliging.", - "Ensuring resource group exists...": "Controleren of de resourcegroep bestaat...", - "Enter a name for your first application to get started with deployment.": "Voer een naam in voor je eerste toepassing om aan de slag te gaan met de implementatie.", - "Enter application name": "Toepassingsnaam invoeren", - "Enter project description": "Projectbeschrijving invoeren", - "Environment Variables": "Omgevingsvariabelen", - "Error deleting project {{ projectId }}.": "Fout bij het verwijderen van project {{ projectId }}.", - "Error Rate": "Foutfrequentie", - "Failed to apply": "Kan niet toepassen", - "Failed to apply resources.": "Kan de resources niet toepassen.", - "Failed to convert namespace: {{message}}": "Naamruimte kan niet worden geconverteerd: {{message}}", - "Failed to create namespace": "Kan naamruimte niet maken", - "Failed to create project": "Kan het project niet maken", - "Failed to enable addon: {{error}}": "Invoegtoepassing is niet ingeschakeld: {{error}}", - "Failed to enable addons": "Kan invoegtoepassingen niet inschakelen", - "Failed to fetch cluster status": "Clusterstatus is niet opgehaald", - "Failed to fetch deployment status": "Implementatiestatus is niet opgehaald", - "Failed to fetch deployments": "Kan de implementaties niet ophalen", - "Failed to fetch managed namespace details": "Kan details van beheerde naamruimte niet ophalen", - "Failed to fetch managed namespaces": "Kan de beheerde naamruimten niet ophalen", - "Failed to fetch pod status": "Podstatus is niet opgehaald", - "Failed to fetch service status": "Servicestatus is niet opgehaald", - "Failed to import any projects. See details below.": "Importeren van projecten mislukt. Zie details hieronder.", - "Failed to initiate login: {{message}}": "De aanmelding is niet geïnitieerd: {{message}}", - "Failed to load AKS clusters": "Kan AKS-clusters niet laden", - "Failed to load Azure context": "Azure-context is niet geladen", - "Failed to load pipeline runs": "Pijplijnuitvoeringen zijn niet geladen", - "Failed to load repositories": "Opslagplaatsen zijn niet geladen", - "Failed to load subscriptions": "Kan de abonnementen niet laden", - "Failed to merge cluster: {{message}}": "Kan cluster niet samenvoegen: {{message}}", - "Failed to monitor deployment health": "Implementatiestatus is niet gecontroleerd", - "Failed to register cluster: {{message}}": "Kan cluster niet registreren: {{message}}", - "Failed to trigger deployment": "Implementatie is niet geactiveerd", - "Failed to update managed namespace": "Kan de beheerde naamruimte niet bijwerken", - "failureThreshold": "failureThreshold", - "Features": "Functies", - "Federated Credential": "Federatieve referentie", - "Filter repositories": "Opslagplaatsen filteren", - "Final status check failed: {{message}}": "De definitieve statuscontrole is mislukt: {{message}}", - "Final status verification failed: {{message}}": "Verificatie van definitieve status is mislukt: {{message}}", - "for full network policy support.": "voor volledige ondersteuning van het netwerkbeleid.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Gegenereerde Kubernetes-manifesten (naamruimte: {{namespace}})", - "GitHub authentication required to trigger deployment.": "GitHub-verificatie is vereist om de implementatie te activeren.", - "GitHub Pipelines": "GitHub-pijplijnen", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Ga naar Projecten", - "Guided configuration for ports, replicas, env, and resources": "Begeleide configuratie voor poorten, replica's, env en resources", + "Read only root filesystem": "Alleen-lezen hoofdbestandssysteem", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Hiermee wordt het hoofdbestandssysteem van de container gekoppeld als alleen-lezen om schrijfbewerkingen te voorkomen. Dit verbetert de beveiliging doordat het voorkomt dat schadelijke code systeembestanden wijzigt.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Koppelt het hoofdbestandssysteem van de container als alleen-lezen om schrijfbewerkingen te voorkomen.", + "Allow privilege escalation": "Escalatie van bevoegdheden toestaan", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Hiermee wordt bepaald of een proces meer bevoegdheden kan krijgen dan het bovenliggende proces. Als u deze optie uitschakelt (aanbevolen), voorkomt u aanvallen voor de escalatie van bevoegdheden.", + "Controls whether a process can gain more privileges than its parent process.": "Hiermee bepaal je of een proces meer bevoegdheden kan krijgen dan het bovenliggende proces.", + "Enable pod anti-affinity": "Antiaffiniteit voor pod inschakelen", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Geef de voorkeur aan het plannen van pods op verschillende knooppunten om de beschikbaarheid en fouttolerantie te verbeteren. Dit helpt ervoor te zorgen dat pods over het cluster worden verdeeld.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Geef de voorkeur aan het plannen van pods op verschillende knooppunten om de beschikbaarheid en fouttolerantie te verbeteren.", + "Enable topology spread constraints": "Spreidingsbeperkingen voor topologie inschakelen", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Hiermee worden pods gelijkmatig gedistribueerd over knooppunten, zones of andere topologiedomeinen om de distributie en beschikbaarheid van workloads te verbeteren.", + "Distributes pods evenly across nodes to improve workload distribution.": "Verdeelt pods gelijkmatig over knooppunten om de workloaddistributie te verbeteren.", + "Container image": "Containerinstallatiekopie", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Het aantal podreplica's dat moet worden uitgevoerd. Meer replica's zorgen voor betere beschikbaarheid en belastingverdeling.", + "Continue": "Doorgaan", + "Configure Container Deployment": "Containerimplementatie configureren", + "Networking": "Netwerken", "Healthchecks": "Statuscontroles", - "Healthy": "Goed", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Hoe vaak (in seconden) de activiteitstest moet worden uitgevoerd. De standaardwaarde is 10 seconden.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Hoe vaak (in seconden) de gereedheidstest moet worden uitgevoerd. De standaardwaarde is 10 seconden.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Hoe vaak (in seconden) de opstarttest moet worden uitgevoerd. De standaardwaarde is 10 seconden.", - "HPA scales pods based on CPU utilization.": "HPA schaalt pods op basis van CPU-gebruik.", - "Identity Resource Group": "Resourcegroep voor identiteit", - "Import AKS Projects": "AKS-projecten importeren", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importeer bestaande beheerde en gewone naamruimten als projecten. Naamruimten die nog geen AKS Desktop-projecten zijn, worden omgezet door het vereiste projectlabel toe te voegen.", - "Import Selected Projects": "Geselecteerde projecten importeren", - "Importing": "Importeren", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}} van {{total}} importeren: {{name}} uit {{clusterName}}", - "in resource group": "in resourcegroep", + "Resource Limits": "Resourcelimieten", + "Environment Variables": "Omgevingsvariabelen", + "Workload Identity": "", + "Advanced": "Geavanceerd", "Information about {{label}}": "Informatie over {{label}}", - "Information about CPU limit": "Informatie over CPU-limiet", - "Information about CPU request": "Informatie over CPU-aanvraag", - "Information about memory limit": "Informatie over geheugenlimiet", - "Information about memory request": "Informatie over geheugenaanvraag", - "Information about target CPU utilization": "Informatie over doel-CPU-gebruik", - "Ingress Policy": "Inkomend beleid", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Initialiseren...", - "Initiating Azure login": "Azure-aanmelding starten", - "Initiating managed namespace creation": "Maken van beheerde naamruimte starten", - "Install Extension": "Extensie installeren", - "Install GitHub App": "GitHub-app installeren", - "Installing": "Installeren", - "Internal only": "Alleen intern", - "Invalid YAML": "Ongeldige YAML", - "Invalid YAML: List item missing required field (kind)": "Ongeldige YAML: vereist veld ontbreekt in lijstitem (kind)", - "Invalid YAML: List item missing required field (metadata.name)": "Ongeldige YAML: vereist veld ontbreekt in lijstitem (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "Ongeldige YAML: lijstresource moet een matrixveld \"items\" bevatten", - "Invalid YAML: missing required field (kind)": "Ongeldige YAML: vereist veld ontbreekt (kind)", - "Invalid YAML: missing required field (metadata.name)": "Ongeldige YAML: vereist veld ontbreekt (metadata.name)", - "Issue {{number}}": "Probleem {{number}}", - "Issues": "Problemen", - "just now": "zojuist", - "KEDA (Event-Driven Autoscaling)": "KEDA (automatisch schalen op basis van gebeurtenissen)", - "Keep Going": "Doorgaan", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Voeg een of meer Kubernetes-manifesten toe. Upload bestanden om de editor te vullen of plak/bewerk ze direct hieronder.", + "Upload files": "Bestanden uploaden", + "Clear editor": "Editor wissen", + "Review & Deploy": "Beoordelen en implementeren", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Gegenereerde Kubernetes-manifesten (naamruimte: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Resources die moeten worden geïmplementeerd ({{count}} object)", + "Resources to be deployed ({{count}} object)_other": "Resources die moeten worden geïmplementeerd ({{count}} object)", + "namespace: {{namespace}}": "naamruimte: {{namespace}}", + "Configure": "Configureren", + "Deploying": "Implementeren...", "Key": "Sleutel", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes start de container opnieuw als deze controle herhaaldelijk faalt.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Waarde", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "verwijderen", + "Add variable": "Variabele toevoegen", + "Configure container health probes.": "Configureer containerstatustests.", + "Manually configure settings": "Instellingen handmatig configureren", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Testen gebruiken standaard HTTP GET op het hoofdpad met standaardinstellingen. Schakel dit in om de Testinstellingen aan te passen.", + "Enable liveness probe": "Activiteitstest inschakelen", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes start de container opnieuw op als deze controle herhaaldelijk faalt. Wordt gebruikt om deadlocks of niet-reagerende containers te detecteren en te herstellen.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes schakelt de activiteit/gereedheid tijdelijk uit totdat het opstarten is geslaagd.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes schakelt de activiteit/gereedheid tijdelijk uit totdat het opstarten is geslaagd. Handig voor containers die lang nodig hebben om te starten.", - "Kubernetes Version": "Kubernetes-versie", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes stuurt geen verkeer naar de pod totdat deze controle slaagt.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes stuurt geen verkeer naar de pod totdat deze controle slaagt. Dit geeft aan wanneer een container klaar is om verkeer te accepteren.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "minder dan een minuut", - "Limits": "Limieten", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes start de container opnieuw als deze controle herhaaldelijk faalt.", "Liveness path": "Activiteitspad", - "Loading": "Laden", - "Loading AKS clusters": "AKS-clusters laden", - "Loading Azure account information": "Azure-accountgegevens laden", - "Loading Azure context...": "Azure-context laden...", - "Loading clusters": "Clusters laden", - "Loading configuration...": "Configuratie laden...", - "Loading deployments": "Implementaties laden", - "Loading metrics": "Metrische gegevens laden", - "Loading scaling metrics from Prometheus": "Metrische schaalgegevens laden vanuit Prometheus", - "Loading subscriptions": "Abonnementen worden geladen", - "Loading...": "Laden...", - "Location": "Locatie", - "Log out": "Afmelden", - "Logged in as": "Aangemeld als", - "Logging out": "Afmelden", - "Login successful! Redirecting": "Je bent aangemeld! Omleiden", - "Login timeout. Please try again.": "Time-out voor aanmelding. Probeer het opnieuw.", - "Managed Identity": "Beheerde identiteit", - "managed namespaces only": "alleen beheerde naamruimten", - "ManagedNamespacePreview feature registered successfully!": "De functie ManagedNamespacePreview is geregistreerd.", - "Manual": "Handmatig", - "Manual Deploy": "Handmatig implementeren", - "Manually configure settings": "Instellingen handmatig configureren", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Het HTTP-pad om te controleren op activiteit (bijvoorbeeld /healthz). De test voert een HTTP GET-aanvraag naar dit pad uit.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Aantal seconden nadat de container is gestart voordat activiteitstests worden gestart.", + "periodSeconds": "periodSeconden", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Hoe vaak (in seconden) de activiteitstest moet worden uitgevoerd. De standaardwaarde is 10 seconden.", + "timeoutSeconds": "TimeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Het aantal seconden totdat er een time-out optreedt voor de test. De standaardwaarde is 1 seconde.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Wanneer een test mislukt, probeert Kubernetes het vele keren voordat het wordt opgegeven en de container opnieuw wordt gestart.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimale opeenvolgende successen voor de test om te worden beschouwd als geslaagd nadat deze is mislukt. De standaardwaarde is 1.", + "Enable readiness probe": "Gereedheidstest inschakelen", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes stuurt geen verkeer naar de pod totdat deze controle slaagt. Dit geeft aan wanneer een container klaar is om verkeer te accepteren.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes stuurt geen verkeer naar de pod totdat deze controle slaagt.", + "Readiness path": "Gereedheidspad", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Het HTTP-pad om te controleren op gereedheid (bijvoorbeeld /ready). De test voert een HTTP GET-aanvraag naar dit pad uit.", + "Number of seconds after the container has started before readiness probes are initiated.": "Aantal seconden nadat de container is gestart voordat gereedheidstests worden gestart.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Hoe vaak (in seconden) de gereedheidstest moet worden uitgevoerd. De standaardwaarde is 10 seconden.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Wanneer een test mislukt, probeert Kubernetes het vele keren voordat de pod wordt gemarkeerd als niet gereed.", + "Enable startup probe": "Opstarttest inschakelen", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes schakelt de activiteit/gereedheid tijdelijk uit totdat het opstarten is geslaagd. Handig voor containers die lang nodig hebben om te starten.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes schakelt de activiteit/gereedheid tijdelijk uit totdat het opstarten is geslaagd.", + "Startup path": "Opstartpad", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Het HTTP-pad dat moet worden gecontroleerd op opstarten (bijvoorbeeld /startup). De test voert een HTTP GET-aanvraag naar dit pad uit.", + "Number of seconds after the container has started before startup probes are initiated.": "Aantal seconden nadat de container is gestart voordat opstarttests worden gestart.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Hoe vaak (in seconden) de opstarttest moet worden uitgevoerd. De standaardwaarde is 10 seconden.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Wanneer een test mislukt, probeert Kubernetes het vele keren voordat het wordt opgegeven. Voor opstarttests wordt hiermee bepaald hoe lang moet worden gewacht voordat opnieuw wordt gestart.", + "Enable Horizontal Pod Autoscaler": "Horizontal Pod Autoscaler inschakelen", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Hiermee wordt het aantal pods automatisch geschaald op basis van CPU-gebruik. HPA verhoogt het aantal pods als het CPU-gebruik boven de doelwaarde komt en verlaagt het als het daaronder blijft.", + "HPA scales pods based on CPU utilization.": "HPA schaalt pods op basis van CPU-gebruik.", + "Min replicas": "Minimum aantal replica's", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Het minimum aantal podreplica's dat HPA onderhoudt, zelfs wanneer het CPU-gebruik laag is.", "Max replicas": "Maximum aantal replica's", - "Maximum CPU allowed (1000m = 1 CPU core)": "Maximaal toegestaan CPU (1000m = 1 CPU-kern)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximaal toegestaan geheugen (1024 MiB = 1 GiB)", - "Maximum Replicas": "Maximum aantal replica's", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Het maximum aantal podreplica's dat HPA omhoog kan schalen wanneer het CPU-gebruik hoog is.", + "Target CPU utilization": "CPU-doelgebruik", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Het doelgemiddelde CPU-gebruikspercentage over alle pods. HPA schaalt omhoog als het CPU-gebruik deze waarde overschrijdt en schaalt omlaag als het eronder ligt.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Zorg voor minimale ≤ maximale replica's en doel-CPU tussen 10% en 95%.", + "Target port": "Doelpoort", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Het poortnummer waarop de container luistert. Dit is de poort in de container waar uw toepassing wordt uitgevoerd.", + "Service port": "Servicepoort", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Het poortnummer dat wordt weergegeven door de Kubernetes-service. Verkeer naar deze poort wordt doorgestuurd naar de doelpoort.", + "Use custom service port": "Aangepaste servicepoort gebruiken", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Standaard komt de servicepoort overeen met de doelpoort. Schakel dit in om een andere poort voor de service te gebruiken.", + "Service type": "Servicetype", + "Internal only": "Alleen intern", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Gebruik ClusterIP. Het meest geschikt voor services die alleen bereikbaar zijn binnen het cluster.", + "Enable public access": "Openbare toegang inschakelen", + "Creates a LoadBalancer to expose the application to the internet.": "Maakt een LoadBalancer om de applicatie toegankelijk te maken via internet.", + "Enable resource requests and limits": "Resourceaanvragen en -limieten inschakelen", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "CPU- en geheugenaanvragen (gegarandeerde resources) en limieten (maximum aantal resources) instellen om de toewijzing van resources te beheren en te voorkomen dat containers clusterresources overmatig gebruiken.", + "CPU request": "CPU-aanvraag", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "De minimale hoeveelheid CPU die is gegarandeerd voor de container. Kubernetes plant de pod op een knooppunt met ten minste zoveel CPU beschikbaar.", + "millicores": "millicores", + "CPU limit": "CPU-limiet", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "De maximale CPU-hoeveelheid die de container kan gebruiken. Als de container wordt overschreden, wordt deze beperkt.", + "Memory request": "Geheugenaanvraag", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "De minimale hoeveelheid geheugen die aan de container is gegarandeerd. Kubernetes plant de pod op een knooppunt met minstens zoveel beschikbaar geheugen.", "mebibytes": "mebibytes", - "Memory": "Geheugen", "Memory limit": "Geheugenlimiet", - "Memory Limits": "Geheugenlimieten", - "Memory request": "Geheugenaanvraag", - "Memory Requests": "Geheugenaanvragen", - "Memory Resources": "Geheugenbronnen", - "Memory Usage": "Geheugengebruik", - "Memory utilization": "Geheugengebruik", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Cluster {{clusterName}} ({{count}} naamruimte(s)) samenvoegen", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Cluster {{clusterName}} ({{count}} naamruimte(s)) samenvoegen", - "Metrics": "Metrieken", - "Metrics refreshed every 30 seconds": "Metrische gegevens elke 30 seconden vernieuwd", - "Metrics Unavailable": "Metrische gegevens niet beschikbaar", - "millicores": "millicores", - "Min replicas": "Minimum aantal replica's", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimale opeenvolgende successen voor de test om te worden beschouwd als geslaagd nadat deze is mislukt. De standaardwaarde is 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Gegarandeerde minimale CPU (1000m = 1 CPU-kern)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimaal gegarandeerd geheugen (1024 MiB = 1 GiB)", - "Minimum Replicas": "Minimum aantal replica's", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Vereiste Azure-context ontbreekt. Zorg ervoor dat u bent aangemeld en dat het cluster is gekoppeld aan een geldig abonnement, resourcegroep en tenant.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Koppelt het hoofdbestandssysteem van de container als alleen-lezen om schrijfbewerkingen te voorkomen.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Hiermee wordt het hoofdbestandssysteem van de container gekoppeld als alleen-lezen om schrijfbewerkingen te voorkomen. Dit verbetert de beveiliging doordat het voorkomt dat schadelijke code systeembestanden wijzigt.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Ondersteuning voor meerdere bestanden (implementaties, services, inkomend verkeer, enzovoort)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Mag alleen kleine letters, cijfers en koppeltekens bevatten, en moet beginnen en eindigen met een alfanumeriek teken", - "Name": "Naam", - "Namespace": "Naamruimte", - "Namespace '{{name}}' converted and imported as project": "Naamruimte '{{name}}' geconverteerd en geïmporteerd als project", - "Namespace created successfully!": "Naamruimte gemaakt.", - "Namespace Created Successfully!": "Naamruimte gemaakt.", - "Namespace creation API succeeded, proceeding with user assignments": "De API voor het maken van de naamruimte is voltooid en de gebruikerstoewijzingen worden voortgezet", - "Namespace creation completed successfully! Adding user access": "Het maken van de naamruimte is voltooid! Gebruikerstoegang toevoegen", - "Namespace Creation Failed": "Kan de naamruimte niet maken", - "Namespace creation failed: {{message}}": "Kan de naamruimte niet maken: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Het maken van de naamruimte is gestart! Status van de aanmaak wordt gecontroleerd", - "Namespace Name": "Naam van naamruimte", - "Namespace name is required": "Naam van naamruimte is verplicht", - "Namespace name must be 63 characters or fewer": "De naam van de naamruimte mag maximaal 63 tekens bevatten", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Namen van naamruimte mogen alleen kleine letters, cijfers en koppeltekens bevatten en moeten beginnen en eindigen met een alfanumeriek teken", - "Namespace status check failed: {{message}}": "De statuscontrole van de naamruimte is mislukt: {{message}}", - "Namespace status verification failed: {{message}}": "Verificatie van naamruimtestatus is mislukt: {{message}}", - "namespace: {{namespace}}": "naamruimte: {{namespace}}", - "Namespaces to convert:": "Naamruimten om te converteren:", - "Network I/O": "Netwerk-I/O", - "Network In": "Netwerk - inkomend", - "Network Out": "Netwerk - uitgaand", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "De netwerkbeleidsengine kan niet worden gewijzigd nadat het cluster is gemaakt. Maak een nieuw cluster met", - "Networking": "Netwerken", - "Networking Policies": "Netwerkbeleid", - "New Project": "Nieuw project", - "Next": "Volgende", - "No": "Nee", - "No AKS clusters found in this subscription.": "Er zijn geen AKS-clusters gevonden in dit abonnement.", - "No cluster is associated with this project.": "Er is geen cluster gekoppeld aan dit project.", - "No clusters found. Register a cluster first.": "Er zijn geen clusters gevonden. Registreer eerst een cluster.", - "No clusters in this project.": "Er zijn geen clusters in dit project.", - "No clusters with Azure Entra ID authentication found for this subscription": "Er zijn geen clusters met Azure Entra ID-verificatie gevonden voor dit abonnement", - "No data available": "Geen gegevens beschikbaar", - "No deployments found": "Geen implementaties gevonden", - "No Deployments Found": "Geen implementaties gevonden", - "No deployments found in this namespace.": "Er zijn geen implementaties gevonden in deze naamruimte.", - "No description provided": "Er is geen beschrijving opgegeven", - "No eligible clusters found in this subscription.": "Er zijn geen in aanmerking komende clusters gevonden in dit abonnement.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "De maximale hoeveelheid geheugen die de container kan gebruiken. Als de container wordt overschreden, wordt deze beëindigd (OOMKilled).", + "Container Image": "Containerinstallatiekopie", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implementeren vanuit Azure Container Registry, Docker Hub of GHCR", + "Auto-generated Deployment and Service manifests": "Automatisch gegenereerde implementatie- en servicemanifesten", + "Guided configuration for ports, replicas, env, and resources": "Begeleide configuratie voor poorten, replica's, env en resources", "No Kubernetes expertise required to get started": "Er is geen Kubernetes-expertise vereist om aan de slag te gaan", - "No options": "Geen opties", - "No pipeline runs yet.": "Er zijn nog geen pijplijnuitvoeringen.", - "No pods found for deployment \"{{name}}\"": "Er zijn geen pods gevonden voor implementatie {{name}}", - "No repositories found": "Geen opslagplaatsen gevonden", - "No repositories match your filter": "Er zijn geen opslagplaatsen die overeenkomen met uw filter", - "No response time data available": "Er zijn geen gegevens over reactietijd beschikbaar", - "No scaling data available": "Er zijn geen schaalgegevens beschikbaar", - "No subscriptions found": "Geen abonnementen gevonden", - "Not specified": "Niet opgegeven", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Opmerking: Voor door AKS beheerde naamruimten wordt Azure ARM-beheer automatisch verwijderd.", - "Number of Replicas": "Aantal replica's", - "Number of seconds after the container has started before liveness probes are initiated.": "Aantal seconden nadat de container is gestart voordat activiteitstests worden gestart.", - "Number of seconds after the container has started before readiness probes are initiated.": "Aantal seconden nadat de container is gestart voordat gereedheidstests worden gestart.", - "Number of seconds after the container has started before startup probes are initiated.": "Aantal seconden nadat de container is gestart voordat opstarttests worden gestart.", - "Number of seconds after which the probe times out. Default is 1 second.": "Het aantal seconden totdat er een time-out optreedt voor de test. De standaardwaarde is 1 seconde.", - "OIDC trust for": "OIDC-vertrouwen voor", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Zodra de agent de implementatie-PR heeft gemaakt, controleer je de gegenereerde bestanden en voeg je ze samen om de implementatiepijplijn te starten", - "Only clusters with Azure Entra ID authentication are shown.": "Alleen clusters met Azure Entra ID-verificatie worden weergegeven.", - "Performing final status verification": "Definitieve statusverificatie uitvoeren", - "periodSeconds": "periodSeconden", - "Pipeline": "Pijplijn", - "Pipeline configured": "Pijplijn geconfigureerd", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Rond de verificatie af in je browser. Dit venster wordt automatisch doorgestuurd zodra je bent ingelogd.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Registreer het om door te gaan.", - "Please review all the settings before creating your AKS project": "Controleer alle instellingen voordat je je AKS-project maakt", - "Please select a deployment to view metrics": "Selecteer een implementatie om metrische gegevens weer te geven", - "Please select a subscription first": "Selecteer eerst een abonnement", - "Please select at least one namespace to import": "Selecteer ten minste één naamruimte om te importeren", - "Please sign in to Azure to continue.": "Meld je aan bij Azure om door te gaan.", - "Pod Details": "Poddetails", - "Pod Name": "Podnaam", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Geef de voorkeur aan het plannen van pods op verschillende knooppunten om de beschikbaarheid en fouttolerantie te verbeteren.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Geef de voorkeur aan het plannen van pods op verschillende knooppunten om de beschikbaarheid en fouttolerantie te verbeteren. Dit helpt ervoor te zorgen dat pods over het cluster worden verdeeld.", + "Bring your own Kubernetes manifests to deploy": "Gebruik je eigen Kubernetes-manifesten om te implementeren", + "Use existing manifests for full control": "Bestaande manifesten gebruiken voor volledig beheer", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Ondersteuning voor meerdere bestanden (implementaties, services, inkomend verkeer, enzovoort)", "Preview and basic validation before apply": "Voorbeeld en basisvalidatie voordat je deze toepast", - "Preview Features": "Preview-functies", - "Project '{{name}}' successfully imported": "Project '{{name}}' geïmporteerd", - "Project Basics": "Projectbasis", - "Project Created Successfully!": "Het project is gemaakt!", - "Project creation completed successfully!": "Het maken van het project is voltooid!", - "Project Creation Failed": "Project is niet gemaakt", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Er is na 10 minuten een time-out opgetreden bij het maken van het project. Controleer of de naamruimte is gemaakt en probeer het opnieuw.", - "Project Description": "Projectbeschrijving", - "Project Name": "Projectnaam", - "Project name is available": "Projectnaam is beschikbaar", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Projectnaam mag alleen kleine letters, cijfers en afbreekstreepjes bevatten (geen spaties)", - "Project Status": "Projectstatus", - "Pull requests": "Pull-aanvragen", + "Select Source": "Bron selecteren", + "Choose a source for your deployment (container image, repo, etc.).": "Kies een bron voor je implementatie (containerafbeelding, opslagplaats, enzovoort).", + "Deployment source": "Implementatiebron", + "Features": "Functies", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Resourcegroep voor identiteit", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Controleren op bestaande identiteit...", + "Creating managed identity...": "Beheerde identiteit maken...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Ongeldige YAML: vereist veld ontbreekt (kind)", + "Invalid YAML: List resource must have an array \"items\" field": "Ongeldige YAML: lijstresource moet een matrixveld \"items\" bevatten", + "Invalid YAML: List item missing required field (kind)": "Ongeldige YAML: vereist veld ontbreekt in lijstitem (kind)", + "Invalid YAML: List item missing required field (metadata.name)": "Ongeldige YAML: vereist veld ontbreekt in lijstitem (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "Ongeldige YAML: vereist veld ontbreekt (metadata.name)", + "Invalid YAML": "Ongeldige YAML", + "Validation failed": "Validatie mislukt", + "Failed to apply": "Kan niet toepassen", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} resource(s) toegepast, maar {{failed}} mislukt:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "{{count}} resource(s) toegepast.", + "Applied {{count}} resource(s) successfully._other": "{{count}} resource(s) toegepast.", + "Failed to apply resources.": "Kan de resources niet toepassen.", + "unnamed": "naamloos", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Inhoud", "Push agent config files": "Configuratiebestanden voor pushagent", - "Re-deploy": "Opnieuw implementeren", - "Read only root filesystem": "Alleen-lezen hoofdbestandssysteem", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Alleen-lezentoegang tot de meeste objecten in een naamruimte. Rollen, rolbindingen of geheimen worden niet weergegeven.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Lees-/schrijftoegang tot de meeste objecten in een naamruimte. Rollen of rolbindingen worden niet weergegeven of gewijzigd. Kan toegang krijgen tot geheimen en pods uitvoeren zoals elk ServiceAccount in de naamruimte.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Lees-/schrijftoegang tot de meeste resources in een naamruimte. Kan rollen en rolbindingen maken binnen de naamruimte. Kan niet schrijven naar resourcequotum of de naamruimte zelf.", - "Readiness path": "Gereedheidspad", - "Ready": "Gereed", - "Refresh": "Vernieuwen", - "Refreshing": "Vernieuwen", - "Register AKS Cluster": "AKS-cluster registreren", - "Register Cluster": "Cluster registreren", - "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview-functie registreren", - "Registering": "Registreren", - "Registering cluster": "Cluster registreren", - "Regular": "Standaard", - "Regular Kubernetes namespace": "Standaard Kubernetes-naamruimte", - "remove": "verwijderen", - "Remove assignee": "Toegewezen gebruiker verwijderen", - "Reopen install page": "Installatiepagina opnieuw openen", - "Replica Bounds": "Replicagrenzen", - "Replicas": "Replica's", - "Request & error rate": "Frequentie van aanvragen en fouten", - "Request Rate": "Aanvraagsnelheid", - "Requests": "Aanvragen", - "Required Permissions": "Vereiste machtigingen", - "Resource Group": "Resourcegroep", - "Resource group where the managed identity will be created": "Resourcegroep waarin de beheerde identiteit wordt gemaakt", - "Resource Limits": "Resourcelimieten", - "Resource Usage": "Resourcegebruik", - "Resources to be deployed ({{count}} object)_one": "Resources die moeten worden geïmplementeerd ({{count}} object)", - "Resources to be deployed ({{count}} object)_other": "Resources die moeten worden geïmplementeerd ({{count}} object)", - "Response Time": "Reactietijd", - "Restarts": "Opnieuw opstarten", - "Retry": "Opnieuw proberen", - "Review": "Beoordelen", - "Review & Deploy": "Beoordelen en implementeren", - "Review & Merge": "Beoordelen en samenvoegen", - "Review and merge the setup PR to enable the Copilot agent.": "Controleer de pull-aanvraag voor installatie en voeg deze samen om de Copilot-agent in te schakelen.", - "Review on GitHub": "Controleren op GitHub", - "Review Project Configuration": "Projectconfiguratie controleren", - "Role": "Rol", - "Role Assignment": "Roltoewijzing", - "Run as non root user": "Uitvoeren als niet-hoofdgebruiker", + "Workflows": "Werkstromen", + "Create setup workflow in .github/workflows/": "Maak een installatiewerkstroom in .github/workflows/", + "Pull requests": "Pull-aanvragen", + "Create deployment PRs": "Implementatie-PR's maken", + "Issues": "Problemen", + "Track agent progress": "Voortgang van agent bijhouden", "Run deployment workflows": "Implementatiewerkstromen uitvoeren", - "Save": "Opslaan", - "Scaled down": "Omlaag geschaald", - "Scaling": "Schalen", - "Scaling Chart Unavailable": "Schaalgrafiek niet beschikbaar", - "Scaling History (Last 24 Hours)": "Schaalgeschiedenis (afgelopen 24 uur)", - "Scaling Mode": "Schaalmodus", - "Scaling Overview": "Schaaloverzicht", - "Search clusters": "Clusters zoeken", - "Search subscriptions": "Abonnementen zoeken", - "Select a cluster": "Een cluster selecteren", - "Select a deployment to view metrics": "Selecteer een implementatie om metrische gegevens te bekijken", - "Select a deployment to view scaling metrics": "Een implementatie selecteren om metrische schaalgegevens weer te geven", - "Select a subscription": "Een abonnement selecteren", - "Select All": "Alles selecteren", - "Select an AKS cluster": "Een AKS-cluster selecteren", - "Select an Azure subscription": "Selecteer een Azure-abonnement", - "Select an option": "Een optie selecteren", - "Select Deployment": "Implementatie selecteren", - "Select Namespaces to Import": "Naamruimten selecteren om te importeren", + "Connect to GitHub": "Verbinding maken met GitHub", + "Connected to '{{username}}'.": "Verbonden met {{username}}.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS Desktop autoriseren om implementatiepijplijnen te maken in uw opslagplaats.", + "Required Permissions": "Vereiste machtigingen", + "Complete authorization on your browser screen": "Autorisatie voltooien op uw browserscherm", + "Connect": "Verbinding maken", "Select repository": "Opslagplaats selecteren", - "Select Source": "Bron selecteren", - "Selected Cluster Details": "Details van geselecteerde cluster", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Het geselecteerde cluster ontbreekt in de kubeconfig. Registreer het voordat je verdergaat.", - "Service port": "Servicepoort", - "Service type": "Servicetype", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "CPU- en geheugenaanvragen (gegarandeerde resources) en limieten (maximum aantal resources) instellen om de toewijzing van resources te beheren en te voorkomen dat containers clusterresources overmatig gebruiken.", - "Set quota limits to prevent overuse and maintain cluster stability": "Stel quotumlimieten in om overbelasting te voorkomen en de stabiliteit van het cluster te waarborgen", - "Set security, communication and access rules for incoming and outgoing traffic": "Stel beveiligings-, communicatie- en toegangsregels in voor binnenkomend en uitgaand verkeer", - "Set the desired number of pod replicas for this deployment": "Stel het gewenste aantal podreplica's in voor deze implementatie", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Een CI/CD-pijplijn instellen om uw implementaties te automatiseren en uw werkstroom te stroomlijnen", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Stel een nieuw project in en configureer het in Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Copilot-agent instellen", - "Set up your pipeline": "Uw pijplijn instellen", - "Setting up Copilot agent...": "Copilot-agent instellen...", - "Setup PR Created": "Pull-aanvraag voor installatie gemaakt", - "Setup PR reviewed and merged": "Installatie-PR beoordeeld en samengevoegd", - "Sign in": "Aanmelden", - "Sign in to GitHub": "Aanmelden bij GitHub", - "Sign in to GitHub to view pipeline runs.": "Meld u aan bij GitHub om pijplijnuitvoeringen weer te geven.", - "Sign in with Azure": "Aanmelden met Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Meld je aan met je Azure-account om AKS-clusters en -resources te beheren", - "Source": "Bron", - "Starting project creation": "Het maken van het project wordt gestart", - "Startup path": "Opstartpad", - "Status": "Status", - "Subscription": "Abonnement", - "Successfully merged {{count}} cluster(s)_one": "{{count}} cluster(s) samengevoegd", - "Successfully merged {{count}} cluster(s)_other": "{{count}} cluster(s) samengevoegd", - "successThreshold": "successThreshold", - "Target CPU utilization": "CPU-doelgebruik", - "Target CPU Utilization (%)": "CPU-doelgebruik (%)", - "Target port": "Doelpoort", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "De agent heeft de implementatie-PR gemaakt. Controleer de gegenereerde bestanden en voeg ze samen om de implementatiepijplijn te starten.", - "The agent is creating the setup PR to enable the Copilot agent.": "De agent maakt de installatie-PR om de Copilot-agent in te schakelen.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Voltooi de installatie in uw browser. Dit wordt automatisch bijgewerkt zodra de app is geïnstalleerd op {{repoName}}.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "De AKS Desktop GitHub-app moet zijn geïnstalleerd op {{repoName}} om door te gaan.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "De extensie aks-preview is vereist om beheerde naamruimten te maken. Installeer het om door te gaan.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "De Copilot-coderingsagent analyseert je opslagplaats en genereert een implementatie-PR met Dockerfile, Kubernetes-manifesten en een GitHub Actions-werkstroom.", - "The following addons can be enabled on this cluster:": "De volgende invoegtoepassingen kunnen worden ingeschakeld op dit cluster:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "De volgende Azure-resources worden gemaakt om uw GitHub Actions-pijplijn in te schakelen voor verificatie bij uw AKS-cluster:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "De volgende naamruimten worden omgezet naar AKS Desktop-projecten door deze labels toe te voegen:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Het HTTP-pad om te controleren op activiteit (bijvoorbeeld /healthz). De test voert een HTTP GET-aanvraag naar dit pad uit.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Het HTTP-pad om te controleren op gereedheid (bijvoorbeeld /ready). De test voert een HTTP GET-aanvraag naar dit pad uit.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Het HTTP-pad dat moet worden gecontroleerd op opstarten (bijvoorbeeld /startup). De test voert een HTTP GET-aanvraag naar dit pad uit.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "De functie ManagedNamespacePreview moet zijn geregistreerd om beheerde naamruimten te maken.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "De maximale CPU-hoeveelheid die de container kan gebruiken. Als de container wordt overschreden, wordt deze beperkt.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "De maximale hoeveelheid geheugen die de container kan gebruiken. Als de container wordt overschreden, wordt deze beëindigd (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Het maximum aantal podreplica's dat HPA omhoog kan schalen wanneer het CPU-gebruik hoog is.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "De minimale hoeveelheid CPU die is gegarandeerd voor de container. Kubernetes plant de pod op een knooppunt met ten minste zoveel CPU beschikbaar.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "De minimale hoeveelheid geheugen die aan de container is gegarandeerd. Kubernetes plant de pod op een knooppunt met minstens zoveel beschikbaar geheugen.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Het minimum aantal podreplica's dat HPA onderhoudt, zelfs wanneer het CPU-gebruik laag is.", - "The namespace will be created on the selected cluster and set up as a project": "De naamruimte wordt op het geselecteerde cluster gemaakt en ingesteld als project", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Het aantal podreplica's dat moet worden uitgevoerd. Meer replica's zorgen voor betere beschikbaarheid en belastingverdeling.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "De bewerking wordt mogelijk nog steeds uitgevoerd in GitHub. Controleer de bovenstaande koppeling voor de meest recente status.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Het poortnummer dat wordt weergegeven door de Kubernetes-service. Verkeer naar deze poort wordt doorgestuurd naar de doelpoort.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Het poortnummer waarop de container luistert. Dit is de poort in de container waar uw toepassing wordt uitgevoerd.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Het doelgemiddelde CPU-gebruikspercentage over alle pods. HPA schaalt omhoog als het CPU-gebruik deze waarde overschrijdt en schaalt omlaag als het eronder ligt.", - "There are no deployments in this project namespace yet.": "Er zijn nog geen implementaties in deze projectnaamruimte.", + "Reopen install page": "Installatiepagina opnieuw openen", + "Install GitHub App": "GitHub-app installeren", + "Checking...": "Controleren...", + "Connecting to GitHub...": "Met GitHub verbinding maken...", + "Connect GitHub": "GitHub verbinden", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Verbonden", + "Sign in to GitHub": "Aanmelden bij GitHub", + "Failed to load repositories": "Opslagplaatsen zijn niet geladen", + "Filter repositories": "Opslagplaatsen filteren", + "No repositories match your filter": "Er zijn geen opslagplaatsen die overeenkomen met uw filter", + "No repositories found": "Geen opslagplaatsen gevonden", + "less than a minute": "minder dan een minuut", + "{{count}} min_one": "{{count}} minuut", + "{{count}} min_other": "{{count}} minuut", + "Up next": "Volgende", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "Samenvoegstatus controleren...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Dit duurt langer dan verwacht. Controleer de PR op GitHub voor de meest recente status.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Dit kan een machtigingsprobleem zijn. Controleer uw GitHub-app-machtigingen en probeer het opnieuw.", "This PR was closed without merging. You may need to restart the process.": "Deze pull-aanvraag is gesloten zonder samenvoegen. Mogelijk moet u het proces opnieuw starten.", + "Review on GitHub": "Controleren op GitHub", + "Agent is working": "Agent is bezig", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "De Copilot-coderingsagent analyseert je opslagplaats en genereert een implementatie-PR met Dockerfile, Kubernetes-manifesten en een GitHub Actions-werkstroom.", + "Issue {{number}}": "Probleem {{number}}", + "Waiting for agent workflow to start...": "Wachten tot de agentwerkstroom is gestart...", "This typically takes 10–25 minutes.": "Dit duurt doorgaans 10-25 minuten.", - "timeoutSeconds": "TimeoutSeconds", - "Total Pods": "Totaal aantal pods", - "Track agent progress": "Voortgang van agent bijhouden", - "Trigger": "Trigger", - "Trigger Copilot Agent": "Copilot-agent activeren", - "Triggering...": "Activeren...", + "Pipeline configured": "Pijplijn geconfigureerd", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "CI/CD-pijplijn voor {{repoFullName}} is klaar. Implementaties activeren vanaf het tabblad Implementeren.", + "Setup PR reviewed and merged": "Installatie-PR beoordeeld en samengevoegd", + "Copilot agent reviewed your repo and generated deployment PR": "De Copilot-agent heeft je opslagplaats beoordeeld en een implementatie-PR gemaakt", + "Deployment PR reviewed and merged": "Implementatie-PR beoordeeld en samengevoegd", + "View deployment": "Implementatie weergeven", + "You can collapse this panel. Progress is saved and will resume when you return.": "Je kunt dit paneel inklappen. De voortgang wordt opgeslagen en hervat wanneer je terugkomt.", + "Creating setup PR...": "Pull-aanvraag voor installatie maken...", + "The agent is creating the setup PR to enable the Copilot agent.": "De agent maakt de installatie-PR om de Copilot-agent in te schakelen.", + "Setup PR Created": "Pull-aanvraag voor installatie gemaakt", + "Review and merge the setup PR to enable the Copilot agent.": "Controleer de pull-aanvraag voor installatie en voeg deze samen om de Copilot-agent in te schakelen.", + "Setting up Copilot agent...": "Copilot-agent instellen...", + "Creating the trigger issue for the Copilot coding agent.": "De trigger voor de Copilot-coderingsagent maken.", + "Deployment PR Ready": "Pull-aanvraag voor implementatie gereed", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "De agent heeft de implementatie-PR gemaakt. Controleer de gegenereerde bestanden en voeg ze samen om de implementatiepijplijn te starten.", + "Copilot agent": "Copilot-agent", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Na het samenvoegen analyseert de Copilot-agent je opslagplaats en maakt een implementatie-PR", + "Deployment PR": "Implementatie-PR", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Zodra de agent de implementatie-PR heeft gemaakt, controleer je de gegenereerde bestanden en voeg je ze samen om de implementatiepijplijn te starten", + "Connect Source": "Verbinding maken met bron", + "Set up Copilot Agent": "Copilot-agent instellen", + "Review & Merge": "Beoordelen en samenvoegen", + "Collapse panel": "Deelvenster samenvouwen", + "Keep Going": "Doorgaan", + "Discard": "Verwijderen", + "Canceling will discard your pipeline progress. Are you sure?": "Als u annuleert, wordt de voortgang van de pijplijn verwijderd. Weet u het zeker?", + "Ensuring resource group exists...": "Controleren of de resourcegroep bestaat...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Federatieve referentie configureren...", + "Workload identity configured": "Workloadidentiteit geconfigureerd", + "Configure Workload Identity": "Workloadidentiteit configureren", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "De volgende Azure-resources worden gemaakt om uw GitHub Actions-pijplijn in te schakelen voor verificatie bij uw AKS-cluster:", + "Managed Identity": "Beheerde identiteit", + "in resource group": "in resourcegroep", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Federatieve referentie", + "OIDC trust for": "OIDC-vertrouwen voor", + "branch": "vertakking", + "Resource group where the managed identity will be created": "Resourcegroep waarin de beheerde identiteit wordt gemaakt", + "Workload identity configured successfully.": "Workloadidentiteit is geconfigureerd.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Dit kan een machtigingsprobleem zijn. Controleer uw GitHub-app-machtigingen en probeer het opnieuw.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "De bewerking wordt mogelijk nog steeds uitgevoerd in GitHub. Controleer de bovenstaande koppeling voor de meest recente status.", "Try again, or check GitHub for details.": "Probeer het opnieuw of raadpleeg GitHub voor meer informatie.", - "Type": "Type", + "Initializing...": "Initialiseren...", + "Checking repository readiness...": "Gereedheid van opslagplaats controleren...", + "Loading configuration...": "Configuratie laden...", "Unknown error": "Onbekende fout", - "unnamed": "naamloos", - "Up next": "Volgende", - "Update": "Bijwerken", - "Updating": "Bijwerken...", - "Updating local settings": "Lokale instellingen bijwerken", - "Upload files": "Bestanden uploaden", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Gebruik ClusterIP. Het meest geschikt voor services die alleen bereikbaar zijn binnen het cluster.", - "Use custom service port": "Aangepaste servicepoort gebruiken", - "Use existing manifests for full control": "Bestaande manifesten gebruiken voor volledig beheer", - "User assignment completed with errors": "Gebruikerstoewijzing voltooid met fouten", - "Validation failed": "Validatie mislukt", - "Value": "Waarde", - "View deployment": "Implementatie weergeven", - "View on GitHub": "Weergeven in GitHub", - "View run on GitHub": "Uitvoering weergeven in GitHub", - "View workflow run": "Werkstroomuitvoering weergeven", - "VPA (Vertical Pod Autoscaler)": "VPA (Vertical Pod Autoscaler)", - "VS Code": "VS-code", - "Waiting for agent workflow to start...": "Wachten tot de agentwerkstroom is gestart...", - "Waiting for browser authorization...": "Wachten op browserautorisatie...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Wachten op voltooiing van aanmelding... ({{minutes}} minuten resterend)", - "Waiting for namespace to be created": "Wachten op het maken van de naamruimte", - "Waiting for namespace to propagate": "Wachten tot naamruimte is doorgegeven", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Waarschuwing: deze actie kan niet ongedaan worden gemaakt. Alle resources in deze naamruimten worden definitief verwijderd.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Wanneer een test mislukt, probeert Kubernetes het vele keren voordat het wordt opgegeven en de container opnieuw wordt gestart.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Wanneer een test mislukt, probeert Kubernetes het vele keren voordat het wordt opgegeven. Voor opstarttests wordt hiermee bepaald hoe lang moet worden gewacht voordat opnieuw wordt gestart.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Wanneer een test mislukt, probeert Kubernetes het vele keren voordat de pod wordt gemarkeerd als niet gereed.", + "Trigger Copilot Agent": "Copilot-agent activeren", + "Create Setup PR": "Pull-aanvraag voor installatie maken", + "Failed to fetch deployment status": "Implementatiestatus is niet opgehaald", + "Failed to fetch pod status": "Podstatus is niet opgehaald", + "Failed to fetch service status": "Servicestatus is niet opgehaald", + "Failed to monitor deployment health": "Implementatiestatus is niet gecontroleerd", + "Convert Namespaces to AKS Projects": "Naamruimten converteren naar AKS-projecten", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "De volgende naamruimten worden omgezet naar AKS Desktop-projecten door deze labels toe te voegen:", + "managed namespaces only": "alleen beheerde naamruimten", + "Namespaces to convert:": "Naamruimten om te converteren:", + "Already AKS projects (will import directly):": "Al AKS-projecten (worden direct geïmporteerd):", + "Converting": "Converteren", + "Confirm & Import": "Bevestigen en importeren", + "Please select at least one namespace to import": "Selecteer ten minste één naamruimte om te importeren", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Cluster {{clusterName}} moet geregistreerd zijn voordat je gewone naamruimten kunt importeren. Importeer eerst een beheerde naamruimte van dit cluster.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Cluster {{clusterName}} ({{count}} naamruimte(s)) samenvoegen", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Cluster {{clusterName}} ({{count}} naamruimte(s)) samenvoegen", + "Failed to merge cluster: {{message}}": "Kan cluster niet samenvoegen: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} omzetten naar AKS-project (dit kan even duren)...", + "Failed to convert namespace: {{message}}": "Naamruimte kan niet worden geconverteerd: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}} van {{total}} importeren: {{name}} uit {{clusterName}}", + "Project '{{name}}' successfully imported": "Project '{{name}}' geïmporteerd", + "Namespace '{{name}}' converted and imported as project": "Naamruimte '{{name}}' geconverteerd en geïmporteerd als project", + "Successfully merged {{count}} cluster(s)_one": "{{count}} cluster(s) samengevoegd", + "Successfully merged {{count}} cluster(s)_other": "{{count}} cluster(s) samengevoegd", "with {{count}} project(s)_one": "met {{count}} project(en)", "with {{count}} project(s)_other": "met {{count}} project(en)", - "with the following parameters:": "met de volgende parameters:", - "Wizard steps": "Wizardstappen", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Verzenden van werkstroom is geactiveerd. Controleer GitHub Actions op voortgang.", - "workflow on": "werkstroom in", - "Workflows": "Werkstromen", - "Workload identity configured": "Workloadidentiteit geconfigureerd", - "Workload identity configured successfully.": "Workloadidentiteit is geconfigureerd.", - "Workloads": "Werkbelastingen", + "{{count}} failed._one": "{{count}} is mislukt.", + "{{count}} failed._other": "{{count}} is mislukt.", + "Failed to import any projects. See details below.": "Importeren van projecten mislukt. Zie details hieronder.", + "Import AKS Projects": "AKS-projecten importeren", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importeer bestaande beheerde en gewone naamruimten als projecten. Naamruimten die nog geen AKS Desktop-projecten zijn, worden omgezet door het vereiste projectlabel toe te voegen.", + "Select Namespaces to Import": "Naamruimten selecteren om te importeren", + "{{count}} selected_one": "{{count}} geselecteerd", + "{{count}} selected_other": "{{count}} geselecteerd", + "Select All": "Alles selecteren", + "Deselect All": "Alle selecties opheffen", + "AKS Managed": "Door AKS beheerd", + "Regular": "Standaard", + "AKS Project?": "AKS-project?", "Yes": "Ja", - "You can collapse this panel. Progress is saved and will resume when you return.": "Je kunt dit paneel inklappen. De voortgang wordt opgeslagen en hervat wanneer je terugkomt.", - "You need to be logged in to Azure to register AKS clusters.": "Je moet zijn aangemeld bij Azure om AKS-clusters te registreren.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Je AKS-project {{projectName}} is gemaakt en is klaar voor gebruik.", - "Your project \"{{projectName}}\" is ready to use.": "Je project '{{projectName}}' is klaar voor gebruik." + "No": "Nee", + "Importing": "Importeren", + "Import Selected Projects": "Geselecteerde projecten importeren", + "Failed to fetch managed namespaces": "Kan de beheerde naamruimten niet ophalen", + "Failed to fetch managed namespace details": "Kan details van beheerde naamruimte niet ophalen", + "Failed to update managed namespace": "Kan de beheerde naamruimte niet bijwerken", + "Updating": "Bijwerken...", + "Update": "Bijwerken", + "AKS desktop logo": "AKS-desktoplogo", + "No Deployments Found": "Geen implementaties gevonden", + "There are no deployments in this project namespace yet.": "Er zijn nog geen implementaties in deze projectnaamruimte.", + "Deploy an application to view logs.": "Implementeer een toepassing om logboeken weer te geven.", + "Metrics": "Metrieken", + "CPU Usage": "CPU-gebruik", + "Memory Usage": "Geheugengebruik", + "Request Rate": "Aanvraagsnelheid", + "Error Rate": "Foutfrequentie", + "Metrics refreshed every 30 seconds": "Metrische gegevens elke 30 seconden vernieuwd", + "Select a deployment to view metrics": "Selecteer een implementatie om metrische gegevens te bekijken", + "Metrics Unavailable": "Metrische gegevens niet beschikbaar", + "Application Metrics": "Metrische toepassingsgegevens", + "Request & error rate": "Frequentie van aanvragen en fouten", + "No data available": "Geen gegevens beschikbaar", + "Response Time": "Reactietijd", + "Memory utilization": "Geheugengebruik", + "Network I/O": "Netwerk-I/O", + "Deploy an application to start viewing metrics.": "Implementeer een app om metrische gegevens te bekijken.", + "Please select a deployment to view metrics": "Selecteer een implementatie om metrische gegevens weer te geven", + "Project Status": "Projectstatus", + "Total Pods": "Totaal aantal pods", + "Application Health": "Status van de toepassing", + "Loading metrics": "Metrische gegevens laden", + "Resource Usage": "Resourcegebruik", + "Avg Response Time": "Gem. reactietijd", + "No response time data available": "Er zijn geen gegevens over reactietijd beschikbaar", + "Absolute usage": "Absoluut gebruik", + "Network In": "Netwerk - inkomend", + "Network Out": "Netwerk - uitgaand", + "Pod Details": "Poddetails", + "Pod Name": "Podnaam", + "Restarts": "Opnieuw opstarten", + "No pods found for deployment \"{{name}}\"": "Er zijn geen pods gevonden voor implementatie {{name}}", + "Preview Features": "Preview-functies", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Schakel functies in of uit die nog in ontwikkeling zijn. Preview-functies kunnen in toekomstige versies wijzigen of verdwijnen.", + "GitHub Pipelines": "GitHub-pijplijnen", + "Enable GitHub-based deployment pipelines for AKS projects.": "Schakel GitHub-gebaseerde implementatiepijplijnen in voor AKS-projecten.", + "Loading scaling metrics from Prometheus": "Metrische schaalgegevens laden vanuit Prometheus", + "Scaling Chart Unavailable": "Schaalgrafiek niet beschikbaar", + "No scaling data available": "Er zijn geen schaalgegevens beschikbaar", + "Edit HPA Configuration": "HPA-configuratie bewerken", + "Edit Manual Scaling Configuration": "Handmatige schaalconfiguratie bewerken", + "Minimum Replicas": "Minimum aantal replica's", + "Maximum Replicas": "Maximum aantal replica's", + "Target CPU Utilization (%)": "CPU-doelgebruik (%)", + "Number of Replicas": "Aantal replica's", + "Set the desired number of pod replicas for this deployment": "Stel het gewenste aantal podreplica's in voor deze implementatie", + "Save": "Opslaan", + "Scaling Mode": "Schaalmodus", + "Current Replicas": "Huidige Replica's", + "Desired Replicas": "Gewenste replica's", + "Configured Replicas": "Geconfigureerde replica's", + "Replica Bounds": "Replicagrenzen", + "Available Replicas": "Beschikbare replica's", + "CPU Usage / Target": "CPU-gebruik/doel", + "Scaling": "Schalen", + "Select a deployment to view scaling metrics": "Een implementatie selecteren om metrische schaalgegevens weer te geven", + "Scaling Overview": "Schaaloverzicht", + "Edit Configuration": "Configuratie bewerken", + "Scaling History (Last 24 Hours)": "Schaalgeschiedenis (afgelopen 24 uur)", + "Copied!": "Gekopieerd!", + "Copy": "Kopiëren", + "Copy to clipboard": "Naar klembord kopiëren", + "No deployments found": "Geen implementaties gevonden", + "Select Deployment": "Implementatie selecteren", + "Loading deployments": "Implementaties laden", + "No cluster is associated with this project.": "Er is geen cluster gekoppeld aan dit project.", + "Please sign in to Azure to continue.": "Meld je aan bij Azure om door te gaan.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Vereiste Azure-context ontbreekt. Zorg ervoor dat u bent aangemeld en dat het cluster is gekoppeld aan een geldig abonnement, resourcegroep en tenant.", + "Failed to load Azure context": "Azure-context is niet geladen", + "just now": "zojuist", + "{{seconds}}s ago": "{{seconds}}s geleden", + "{{minutes}} min ago": "{{minutes}} min. geleden", + "{{hours}}h ago": "{{hours}}u geleden", + "{{days}}d ago": "{{days}}d geleden", + "{{weeks}}w ago": "{{weeks}}w geleden" } diff --git a/plugins/aks-desktop/locales/pl/translation.json b/plugins/aks-desktop/locales/pl/translation.json index 773fa7558..c8b3a9e5e 100644 --- a/plugins/aks-desktop/locales/pl/translation.json +++ b/plugins/aks-desktop/locales/pl/translation.json @@ -1,629 +1,693 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "„Rola użytkownika klastra usługi AKS” jest ograniczona zakresem do grupy zasobów", - "(already enabled)": "(już włączone)", + "Failed to load subscriptions": "Nie można załadować subskrypcji", + "Failed to load AKS clusters": "Nie można załadować klastrów usługi AKS", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Klaster „{{cluster}}” został pomyślnie scalony w pliku kubeconfig", + "Failed to register cluster: {{message}}": "Nie można zarejestrować klastra: {{message}}", + "Register AKS Cluster": "Rejestrowanie klastra usługi AKS", + "Checking authentication status": "Sprawdzanie stanu uwierzytelniania", + "You need to be logged in to Azure to register AKS clusters.": "Aby zarejestrować klastry usługi AKS, musisz zalogować się na platformie Azure.", + "Subscription": "Subskrypcja", + "Select an Azure subscription": "Wybierz subskrypcję platform Azure", + "Loading subscriptions": "Ładowanie subskrypcji", + "Loading AKS clusters": "Ładowanie klastrów usługi AKS", + "No AKS clusters found in this subscription.": "Nie znaleziono klastrów usługi AKS w tej subskrypcji.", + "AKS Cluster": "Klaster środowiska AKS", + "Select an AKS cluster": "Wybierz klaster usługi AKS", + "Selected Cluster Details": "Szczegóły wybranego klastra", + "Name": "Nazwa", + "Resource Group": "Grupa zasobów", + "Location": "Lokalizacja", + "Kubernetes Version": "Wersja platformy Kubernetes", + "Done": "Gotowe", + "Cancel": "Anuluj", + "Registering": "Rejestrowanie", + "Register Cluster": "Zarejestruj klaster", + "Initiating Azure login": "Inicjowanie logowania do platformy Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Ukończ uwierzytelnianie w przeglądarce. To okno zostanie automatycznie przekierowane po zakończeniu logowania.", + "Login successful! Redirecting": "Logowanie pomyślne! Przekierowywanie", + "Login timeout. Please try again.": "Limit czasu logowania. Spróbuj ponownie.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Trwa oczekiwanie na ukończenie logowania... (pozostałe minuty {{minutes}})", + "Failed to initiate login: {{message}}": "Nie można zainicjować logowania: {{message}}", + "Azure Authentication": "Uwierzytelnianie platformy Azure", + "Sign in with your Azure account to manage AKS clusters and resources": "Zaloguj się przy użyciu konta platformy Azure, aby zarządzać klastrami i zasobami usługi AKS", + "Sign in with Azure": "Zaloguj się za pomocą usługi Azure", + "Loading Azure account information": "Ładowanie informacji o koncie platformy Azure", + "Back": "Wstecz", + "Azure Account": "Konto platformy Azure", + "Logged in as": "Zalogowano jako", + "Add Cluster from Azure": "Dodawanie klastra z platformy Azure", + "Logging out": "Wylogowywanie", + "Log out": "Wyloguj", + "Azure CLI/aks-preview requirements not met": "Wymagania interfejsu CLI/aks-preview usługi Azure nie zostały spełnione", + "Dismiss": "Odrzuć", + "Configure Pipeline": "Konfigurowanie potoku", + "Loading Azure context...": "Trwa ładowanie kontekstu platformy Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Dostęp tylko do odczytu do większości obiektów w przestrzeni nazw. Nie można wyświetlić ról, powiązań ról ani wpisów tajnych.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Dostęp do odczytu/zapisu do większości obiektów w przestrzeni nazw. Nie można wyświetlić lub zmodyfikować ról ani powiązań ról. Może uzyskiwać dostęp do wpisów tajnych i uruchamiać zasobniki jako dowolne konto usługi w przestrzeni nazw.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Prawo do odczytu/zapisu większości zasobów w przestrzeni nazw. Może tworzyć role i powiązania ról w przestrzeni nazw. Nie można zapisać limitu przydziału zasobów lub samej przestrzeni nazw.", + "Access": "Dostęp", + "Assign permissions to users who need access to your namespace": "Przypisywanie uprawnień użytkownikom, którzy potrzebują dostępu do twojej przestrzeni nazw", + "Assignee": "Osoba przydzielona", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Rola", + "Remove assignee": "Usuń osoby przydzielone", + "Add assignee": "Dodaj osoby przydzielone", + "Only clusters with Azure Entra ID authentication are shown.": "Wyświetlane są tylko klastry z uwierzytelnianiem Azure Entra ID.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "Ukryte klastry: {{count}} — brak usługi Azure Entra ID", + "{{count}} cluster(s) hidden — no Azure Entra ID_few": "", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "Ukryte klastry: {{count}} — brak usługi Azure Entra ID", + "No eligible clusters found in this subscription.": "Nie znaleziono kwalifikujących się klastrów w tej subskrypcji.", "{{count}} eligible cluster(s) found._one": "Liczba znalezionych kwalifikujących się klastrów: {{count}}", + "{{count}} eligible cluster(s) found._few": "", + "{{count}} eligible cluster(s) found._many": "", "{{count}} eligible cluster(s) found._other": "Liczba znalezionych kwalifikujących się klastrów: {{count}}", - "{{count}} failed._one": "Zakończone niepowodzeniem: {{count}}.", - "{{count}} failed._other": "Zakończone niepowodzeniem: {{count}}.", - "{{count}} min_one": "{{count}} min", - "{{count}} min_other": "{{count}} min", - "{{count}} selected_one": "Wybrano: {{count}}", - "{{count}} selected_other": "Wybrano: {{count}}", - "{{days}}d ago": "{{days}} dni temu", - "{{hours}}h ago": "{{hours}} godz. temu", - "{{minutes}} min ago": "{{minutes}} min temu", - "{{seconds}}s ago": "{{seconds}}s temu", - "{{weeks}}w ago": "{{weeks}} tyg. temu", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Należy wybrać klaster", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "W klastrze zostanie utworzona nowa przestrzeń nazw z zastosowanymi etykietami projektu. Zostanie ona natychmiast wyświetlona na liście projektów.", - "Absolute usage": "Użycie bezwzględne", - "Access": "Dostęp", - "Access Control ({{count}} assignee)_one": "Kontrola dostępu ({{count}} osoba przydzielona)", - "Access Control ({{count}} assignee)_other": "Kontrola dostępu (liczba osób przydzielonych: {{count}})", - "Actions": "Akcje", - "Add assignee": "Dodaj osoby przydzielone", - "Add Cluster from Azure": "Dodawanie klastra z platformy Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Dodaj co najmniej jeden manifest platformy Kubernetes. Przekaż pliki, aby wypełnić edytor lub wkleić/edytować bezpośrednio poniżej.", - "Add variable": "Dodaj zmienną", - "Advanced": "Zaawansowane", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Po scaleniu agent funkcji Copilot przeanalizuje repozytorium i utworzy żądanie ściągnięcia wdrożenia", - "Agent is working": "Agent działa", - "AKS Cluster": "Klaster środowiska AKS", - "AKS desktop logo": "Logo pulpitu usługi AKS", - "AKS Managed": "Zarządzane przez usługę AKS", - "AKS Preview Extension installed successfully!": "Rozszerzenie usługi AKS w wersji zapoznawczej zostało pomyślnie zainstalowane!", - "AKS Preview Extension Required": "Wymagane rozszerzenie wersji zapoznawczej usługi AKS", - "AKS Project?": "Projekt AKS?", - "All selected addons have been enabled successfully.": "Pomyślnie włączono wszystkie wybrane dodatki.", - "All verifications completed successfully!": "Wszystkie weryfikacje zostały ukończone pomyślnie!", - "Allow all traffic": "Zezwalaj na cały ruch", - "Allow privilege escalation": "Zezwalanie na eskalację uprawnień", - "Allow traffic within same namespace": "Zezwalaj na ruch w tej samej przestrzeni nazw", - "Already AKS projects (will import directly):": "Są już projekty usługi AKS (zostaną zaimportowane bezpośrednio):", - "Also delete the namespaces (this will remove all resources within them)": "Usuń również przestrzenie nazw (spowoduje to usunięcie wszystkich znajdujących się w nich zasobów)", - "Another project already exists with same name. Please choose a different name.": "Istnieje już inny projekt o tej samej nazwie. Wybierz inną nazwę.", - "Application Health": "Kondycja aplikacji", - "Application Metrics": "Metryki aplikacji", - "Application name": "Nazwa aplikacji", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Zastosowano następująca liczbę zasobów: {{applied}}, ale zasoby w liczbie{{failed}} zakończyły się niepowodzeniem:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Pomyślnie zastosowano następującą liczbę zasobów: {{count}}.", - "Applied {{count}} resource(s) successfully._other": "Pomyślnie zastosowano następującą liczbę zasobów: {{count}}.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Czy na pewno chcesz usunąć projekt „{{projectId}}”?", - "Assign permissions to users who need access to your namespace": "Przypisywanie uprawnień użytkownikom, którzy potrzebują dostępu do twojej przestrzeni nazw", - "Assignee": "Osoba przydzielona", - "Assigning AKS Cluster User Role...": "Trwa przypisywanie roli użytkownika klastra usługi AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autoryzuj pulpit usługi AKS do tworzenia potoków wdrażania w repozytorium.", - "Auto-generated Deployment and Service manifests": "Automatycznie generowane manifesty wdrażania i usługi", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automatycznie skaluje liczbę zasobników na podstawie użycia procesora. Zasób HPA zwiększy zasobniki, gdy użycie procesora przekroczy wartość docelową i zmniejszy się, gdy będzie ono poniżej tej wartości.", - "Available Replicas": "Dostępne repliki", - "Avg Response Time": "Średni czas odpowiedzi", - "Azure Account": "Konto platformy Azure", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Uwierzytelnianie platformy Azure", - "Azure CLI/aks-preview requirements not met": "Wymagania interfejsu CLI/aks-preview usługi Azure nie zostały spełnione", - "Azure Monitor Metrics (Managed Prometheus)": "Metryki usługi Azure Monitor (zarządzany zestaw narzędzi Prometheus)", - "Back": "Wstecz", - "Basics": "Podstawy", - "branch": "rozgałęzienie", - "Bring your own Kubernetes manifests to deploy": "Wdrażanie własnych manifestów platformy Kubernetes", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Domyślnie sondy używają protokołu HTTP GET na ścieżce głównej z rozsądnymi wartościami domyślnymi. Włącz tę opcję, aby dostosować ustawienia sondy.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Domyślnie port usługi jest zgodny z portem docelowym. Włącz tę opcję, aby użyć innego portu dla usługi.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Domyślnie spowoduje to usunięcie zarządzanej przestrzeni nazw platformy Azure i etykiet projektów z następujących przestrzeni nazw:", - "Cancel": "Anuluj", - "Canceling will discard your pipeline progress. Are you sure?": "Anulowanie spowoduje odrzucenie postępu potoku. Czy na pewno?", - "Cancelled deletion of project {{ projectId }}.": "Anulowano usuwanie projektu {{ projectId }}.", - "Checking authentication status": "Sprawdzanie stanu uwierzytelniania", - "Checking for existing identity...": "Trwa sprawdzanie istniejącej tożsamości...", - "Checking if another project exists with same name": "Sprawdzanie, czy istnieje inny projekt o tej samej nazwie", - "Checking merge status...": "Trwa sprawdzanie stanu scalania...", - "Checking repository readiness...": "Trwa sprawdzanie gotowości repozytorium...", - "Checking...": "Trwa sprawdzanie...", - "Choose a source for your deployment (container image, repo, etc.).": "Wybierz źródło wdrożenia (obraz kontenera, repozytorium itp.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Potok ciągłej integracji/ciągłego wdrażania dla repozytorium {{repoFullName}} jest gotowy. Wyzwalanie wdrożeń z poziomu karty Wdrażanie.", - "Clear editor": "Wyczyść edytor", - "Close": "Zamknij", - "Cluster": "Klaster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Klaster „{{cluster}}” został pomyślnie scalony w pliku kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Klaster {{clusterName}} musi zostać zarejestrowany przed zaimportowaniem zwykłych przestrzeni nazw. Najpierw zaimportuj zarządzaną przestrzeń nazw z tego klastra.", - "Cluster Configuration": "Konfiguracja klastra", - "Cluster is being deleted. Cannot deploy to this cluster.": "Trwa usuwanie klastra. Nie można wdrożyć w tym klastrze.", "Cluster is currently updating. Deployment may fail.": "Trwa aktualizowanie klastra. Wdrożenie może zakończyć się niepowodzeniem.", - "Cluster is deallocated. Please start the cluster before deploying.": "Cofnięto przydział klastra. Uruchom klaster przed wdrożeniem.", - "Cluster is in a failed state. Please check Azure portal.": "Klaster jest w stanie niepowodzenia. Sprawdź witrynę Azure Portal.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Trwa usuwanie klastra. Nie można wdrożyć w tym klastrze.", "Cluster is still being created. Please wait until creation completes.": "Trwa tworzenie klastra. Zaczekaj na zakończenie tworzenia.", + "Cluster is in a failed state. Please check Azure portal.": "Klaster jest w stanie niepowodzenia. Sprawdź witrynę Azure Portal.", "Cluster is stopped. Please start the cluster before deploying.": "Klaster jest zatrzymany. Uruchom klaster przed wdrożeniem.", + "Cluster is deallocated. Please start the cluster before deploying.": "Cofnięto przydział klastra. Uruchom klaster przed wdrożeniem.", + "AKS Preview Extension Required": "Wymagane rozszerzenie wersji zapoznawczej usługi AKS", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Rozszerzenie aks-preview jest wymagane do tworzenia zarządzanych przestrzeni nazw. Zainstaluj go, aby kontynuować.", + "Installing": "Instalowanie", + "Install Extension": "Zainstaluj rozszerzenie", + "AKS Preview Extension installed successfully!": "Rozszerzenie usługi AKS w wersji zapoznawczej zostało pomyślnie zainstalowane!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Aby utworzyć zarządzane przestrzenie nazw, należy zarejestrować funkcję ManagedNamespacePreview.", + "Current state": "Stan bieżący", + "Please register it to continue.": "Zarejestruj go, aby kontynuować.", + "Register ManagedNamespacePreview Feature": "Zarejestruj funkcję ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "Funkcja ManagedNamespacePreview została pomyślnie zarejestrowana!", + "Project Name": "Nazwa projektu", + "Checking if another project exists with same name": "Sprawdzanie, czy istnieje inny projekt o tej samej nazwie", + "Another project already exists with same name. Please choose a different name.": "Istnieje już inny projekt o tej samej nazwie. Wybierz inną nazwę.", + "Project name is available": "Nazwa projektu jest dostępna", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Nazwa projektu może zawierać tylko małe litery, cyfry i łączniki (bez spacji)", + "Project Description": "Opis projektu", + "Enter project description": "Wprowadź opis projektu", + "Select a subscription": "Wybierz subskrypcję", + "Search subscriptions": "Wyszukaj subskrypcje", + "No subscriptions found": "Nie znaleziono żadnych subskrypcji", + "Retry": "Ponów próbę", + "Cluster": "Klaster", + "Please select a subscription first": "Najpierw wybierz subskrypcję", + "Loading clusters": "Ładowanie klastrów", + "Select a cluster": "Wybierz klaster", + "Search clusters": "Wyszukaj klastry", + "No clusters with Azure Entra ID authentication found for this subscription": "Nie znaleziono klastrów z uwierzytelnianiem Azure Entra ID dla tej subskrypcji", "Cluster Not Ready": "Klaster nie jest gotowy", - "Collapse panel": "Zwiń panel", - "Complete authorization on your browser screen": "Ukończ autoryzację na ekranie przeglądarki", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Ukończ instalację w przeglądarce. Spowoduje to wykonanie automatycznej aktualizacji po zainstalowaniu aplikacji w repozytorium {{repoName}}.", - "Compute Quota": "Limit przydziału dla obliczeń", - "Configuration Complete": "Konfiguracja ukończona", - "Configuration Error": "Błąd konfiguracji", + "Refreshing": "Odświeżanie", + "Refresh": "Odśwież", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Brak wybranego klastra w pliku kubeconfig. Zarejestruj go przed kontynuowaniem.", + "Registering cluster": "Rejestrowanie klastra", + "Wizard steps": "Kroki kreatora", + "Azure Monitor Metrics (Managed Prometheus)": "Metryki usługi Azure Monitor (zarządzany zestaw narzędzi Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (skalowanie automatyczne na podstawie zdarzeń)", + "VPA (Vertical Pod Autoscaler)": "VPA (automatyczne skalowanie zasobników pionowych)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Konfiguracja trwa dłużej niż oczekiwano. Sprawdź portal Azure Portal pod kątem bieżącego stanu klastra.", - "Configure": "Konfiguruj", - "Configure Cluster": "Konfiguruj klaster", - "Configure Container Deployment": "Konfigurowanie wdrożenia kontenera", - "Configure container health probes.": "Skonfiguruj sondy kondycji kontenera.", - "Configure Pipeline": "Konfigurowanie potoku", - "Configure security context settings for the container.": "Skonfiguruj ustawienia kontekstu zabezpieczeń dla kontenera.", - "Configure Workload Identity": "Konfigurowanie tożsamości obciążenia", - "Configured Replicas": "Skonfigurowane repliki", + "Failed to enable addons": "Nie można włączyć dodatków", + "Failed to enable addon: {{error}}": "Nie można włączyć dodatku: {{error}}", + "Cluster Configuration": "Konfiguracja klastra", + "(already enabled)": "(już włączone)", + "The following addons can be enabled on this cluster:": "W tym klastrze można włączyć następujące dodatki:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Nie można zmienić aparatu zasad sieciowych po utworzeniu klastra. Tworzenie nowego klastra za pomocą", + "for full network policy support.": "w celu zapewnienia pełnej obsługi zasad sieciowych.", + "Enabling these addons may incur additional Azure costs.": "Włączenie tych dodatków może spowodować dodatkowe koszty platformy Azure.", + "Configuration Error": "Błąd konfiguracji", + "Configuration Complete": "Konfiguracja ukończona", + "All selected addons have been enabled successfully.": "Pomyślnie włączono wszystkie wybrane dodatki.", "Configuring cluster... This may take a few minutes.": "Trwa konfigurowanie klastra... Może to potrwać kilka minut.", - "Configuring federated credential...": "Trwa konfigurowanie poświadczeń federacyjnych...", + "Enabling Addons...": "Trwa włączanie dodatków...", "Configuring...": "Trwa konfigurowanie...", - "Confirm & Import": "Potwierdź i zaimportuj", - "Connect": "Połącz", - "Connect GitHub": "Łączenie z usługą GitHub", - "Connect Source": "Łączenie źródła", - "Connect to GitHub": "Połączenie z usługą GitHub", - "Connected": "Połączono", - "Connected to '{{username}}'.": "Połączono z użytkownikiem „{{username}}”.", - "Connecting to GitHub...": "Trwa łączenie z usługą GitHub...", - "Connecting...": "Trwa łączenie...", - "Container image": "Obraz kontenera", - "Container Image": "Obraz kontenera", - "Contents": "Zawartość", - "Continue": "Kontynuuj", - "Controls whether a process can gain more privileges than its parent process.": "Określa, czy proces może uzyskać więcej uprawnień niż jego proces nadrzędny.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Określa, czy proces może uzyskać więcej uprawnień niż jego proces nadrzędny. Wyłączenie tego (proponowanego) zapobiega atakom z użyciem eskalacji uprawnień.", - "Convert Namespaces to AKS Projects": "Konwertuj przestrzenie nazw na projekty usługi AKS", - "Converting": "Konwertowanie", - "Converting {{name}} to AKS project (this may take a moment)...": "Trwa konwertowanie {{name}} na projekt usługi AKS (może to chwilę potrwać)...", - "Copied!": "Skopiowano!", - "Copilot agent": "Agent funkcji Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "Agent funkcji Copilot przejrzał Twoje repozytorium i wygenerował żądanie ściągnięcia wdrożenia", - "Copy": "Kopiuj", - "Copy to clipboard": "Kopiuj do schowka", - "CPU": "Procesor CPU", - "CPU limit": "Limit procesora", - "CPU Limits": "Limity procesora", - "CPU request": "Żądanie procesora", - "CPU Requests": "Żądania procesora", + "Configure Cluster": "Konfiguruj klaster", + "Compute Quota": "Limit przydziału dla obliczeń", + "Set quota limits to prevent overuse and maintain cluster stability": "Ustaw limity przydziału, aby zapobiec nadmiernemu użyciu i zachować stabilność klastra.", "CPU Resources": "Zasoby procesora", - "CPU Usage": "Użycie procesora", - "CPU Usage / Target": "Użycie procesora CPU/cel", - "Create a new namespace on an existing cluster and set it up as a project": "Utwórz nową przestrzeń nazw w istniejącym klastrze i skonfiguruj ją jako projekt", - "Create Application": "Utwórz aplikację", - "Create deployment PRs": "Tworzenie żądań ściągnięcia wdrożenia", - "Create Namespace": "Tworzenie przestrzeni nazw", - "Create New Namespace": "Utwórz nową przestrzeń nazw", - "Create Project": "Tworzenie projektu", - "Create Setup PR": "Tworzenie żądania ściągnięcia konfiguracji", - "Create setup workflow in .github/workflows/": "Tworzenie przepływu pracy konfiguracji w .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Tworzy moduł LoadBalancer, aby uwidocznić aplikację w Internecie.", - "Creating managed identity...": "Trwa tworzenie tożsamości zarządzanej...", - "Creating namespace": "Tworzenie przestrzeni nazw", - "Creating Namespace": "Tworzenie przestrzeni nazw", - "Creating Project": "Tworzenie projektu", - "Creating setup PR...": "Trwa tworzenie żądania ściągnięcia konfiguracji...", - "Creating the trigger issue for the Copilot coding agent.": "Tworzenie problemu z wyzwalaczem dla agenta kodowania funkcji Copilot.", - "Current Replicas": "Bieżące repliki", - "Current state": "Stan bieżący", - "Degraded": "Obniżona sprawność", - "Delete project": "Usuwanie projektu", + "CPU Requests": "Żądania procesora", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimalna gwarantowana liczba procesorów CPU (1000m = 1 rdzeń procesora CPU)", + "CPU Limits": "Limity procesora", + "Maximum CPU allowed (1000m = 1 CPU core)": "Maksymalna dozwolona liczba procesorów CPU (1000m = 1 rdzeń procesora CPU)", + "Memory Resources": "Zasoby pamięci", + "Memory Requests": "Żądania pamięci", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimalna gwarantowana pamięć (1024 MiB = 1 GiB)", + "Memory Limits": "Limity pamięci", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Maksymalna dozwolona pamięć (1024 MiB = 1 GiB)", + "Basics": "Podstawy", + "Networking Policies": "Zasady sieci", + "Review": "Przegląd", + "New Project": "Nowy projekt", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Konfigurowanie i konfigurowanie nowego projektu w usłudze Azure Kubernetes Service (AKS)", + "Creating Project": "Tworzenie projektu", + "Create Project": "Tworzenie projektu", + "Loading": "Ładowanie", + "Next": "Dalej", + "Project Created Successfully!": "Pomyślnie utworzono projekt!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Projekt usługi AKS „{{projectName}}” został utworzony i jest gotowy do użycia.", + "Application name": "Nazwa aplikacji", + "Enter application name": "Wprowadź nazwę aplikacji", + "Enter a name for your first application to get started with deployment.": "Wprowadź nazwę pierwszej aplikacji, aby rozpocząć wdrażanie.", + "Create Application": "Utwórz aplikację", + "Project Creation Failed": "Tworzenie projektu nie powiodło się", + "Set security, communication and access rules for incoming and outgoing traffic": "Ustaw reguły zabezpieczeń, komunikacji i dostępu dla ruchu przychodzącego i wychodzącego", + "Allow traffic within same namespace": "Zezwalaj na ruch w tej samej przestrzeni nazw", + "Allow all traffic": "Zezwalaj na cały ruch", + "Deny all traffic": "Odmów całego ruchu", + "Review Project Configuration": "Przejrzyj konfigurację projektu", + "Please review all the settings before creating your AKS project": "Przejrzyj wszystkie ustawienia przed utworzeniem projektu usługi AKS", + "Project Basics": "Podstawowe informacje o programie Project", + "Description": "Opis", + "No description provided": "Nie podano opisu", + "Ingress Policy": "Zasady ruchu przychodzącego", + "Egress Policy": "Zasady ruchu wychodzącego", + "CPU": "Procesor CPU", + "Requests": "Żądania", + "Limits": "Limity", + "Memory": "Pamięć", + "Access Control ({{count}} assignee)_one": "Kontrola dostępu ({{count}} osoba przydzielona)", + "Access Control ({{count}} assignee)_few": "", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Kontrola dostępu (liczba osób przydzielonych: {{count}})", + "Not specified": "Nie określono", + "Select an option": "Wybierz opcję", + "No options": "Brak opcji", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Rozpoczynanie tworzenia projektu", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Upłynął limit czasu tworzenia projektu po 10 minutach. Sprawdź, czy przestrzeń nazw została utworzona, i spróbuj ponownie.", + "Initiating managed namespace creation": "Inicjowanie tworzenia zarządzanej przestrzeni nazw", + "Namespace creation failed: {{message}}": "Tworzenie przestrzeni nazw nie powiodło się: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Zainicjowano tworzenie przestrzeni nazw! Stan tworzenia monitorowania", + "Waiting for namespace to propagate": "Oczekiwanie na propagację przestrzeni nazw", + "Namespace status check failed: {{message}}": "Sprawdzanie stanu przestrzeni nazw nie powiodło się: {{message}}", + "Waiting for namespace to be created": "Oczekiwanie na utworzenie przestrzeni nazw", + "Namespace status verification failed: {{message}}": "Weryfikacja stanu przestrzeni nazw nie powiodła się: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "Interfejs API tworzenia przestrzeni nazw zakończył się pomyślnie, kontynuowanie przypisywania użytkowników", + "Namespace creation completed successfully! Adding user access": "Tworzenie przestrzeni nazw zakończyło się pomyślnie! Dodawanie dostępu użytkownika", + "User assignment completed with errors": "Przypisanie użytkownika zostało ukończone z błędami", + "Project creation completed successfully!": "Tworzenie projektu zakończyło się pomyślnie!", + "Performing final status verification": "Przeprowadzanie weryfikacji stanu końcowego", + "Final status check failed: {{message}}": "Sprawdzanie stanu końcowego nie powiodło się: {{message}}", + "Final status verification failed: {{message}}": "Weryfikacja stanu końcowego nie powiodła się: {{message}}", + "All verifications completed successfully!": "Wszystkie weryfikacje zostały ukończone pomyślnie!", + "Failed to create project": "Tworzenie projektu zakończyło się niepowodzeniem", + "A cluster must be selected": "Należy wybrać klaster", + "Namespace name is required": "Nazwa przestrzeni nazw jest wymagana", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Nazwa przestrzeni nazw musi zawierać tylko małe litery, cyfry i łączniki oraz musi zaczynać się i kończyć znakiem alfanumerycznym", + "Namespace name must be 63 characters or fewer": "Długość nazwy przestrzeni nazw nie może być mniejsza niż 63 znaki", + "Creating namespace": "Tworzenie przestrzeni nazw", + "Updating local settings": "Aktualizowanie ustawień lokalnych", + "Namespace created successfully!": "Pomyślnie utworzono przestrzeń nazw!", + "Failed to create namespace": "Nie można utworzyć przestrzeni nazw", + "No clusters found. Register a cluster first.": "Nie znaleziono żadnych klastrów. Najpierw zarejestruj klaster.", + "Namespace Name": "Nazwa obszaru nazw", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Musi zawierać tylko małe litery, cyfry i łączniki, zaczynać się i kończyć znakiem alfanumerycznym", + "The namespace will be created on the selected cluster and set up as a project": "Przestrzeń nazw zostanie utworzona w wybranym klastrze i skonfigurowana jako projekt", + "Type": "Typ", + "Regular Kubernetes namespace": "Zwykła przestrzeń nazw Kubernetes", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "W klastrze zostanie utworzona nowa przestrzeń nazw z zastosowanymi etykietami projektu. Zostanie ona natychmiast wyświetlona na liście projektów.", + "Create New Namespace": "Utwórz nową przestrzeń nazw", + "Create a new namespace on an existing cluster and set it up as a project": "Utwórz nową przestrzeń nazw w istniejącym klastrze i skonfiguruj ją jako projekt", + "Creating Namespace": "Tworzenie przestrzeni nazw", + "Namespace Creation Failed": "Tworzenie przestrzeni nazw nie powiodło się", + "Namespace Created Successfully!": "Pomyślnie utworzono przestrzeń nazw!", + "Your project \"{{projectName}}\" is ready to use.": "Projekt „{{projectName}}” jest gotowy do użycia.", + "Go To Projects": "Przejdź do projektów", + "Create Namespace": "Tworzenie przestrzeni nazw", + "Delete project": "Usuwanie projektu", "Delete Project": "Usuń projekt", + "Are you sure you want to delete project \"{{projectId}}\"?": "Czy na pewno chcesz usunąć projekt „{{projectId}}”?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Domyślnie spowoduje to usunięcie zarządzanej przestrzeni nazw platformy Azure i etykiet projektów z następujących przestrzeni nazw:", + "Also delete the namespaces (this will remove all resources within them)": "Usuń również przestrzenie nazw (spowoduje to usunięcie wszystkich znajdujących się w nich zasobów)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Ostrzeżenie: tej akcji nie można cofnąć. Wszystkie zasoby w tych przestrzeniach nazw zostaną trwale usunięte.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Uwaga: w przypadku zarządzanych przestrzeni nazw usługi AKS zarządzanie usługą Azure ARM zostanie usunięte automatycznie.", "Delete Project & Namespaces": "Usuń projekt i przestrzenie nazw", - "Deleted project {{ projectId }}.": "Usunięty projekt {{ projectId }}.", "Deleting project {{ projectId }}…": "Trwa usuwanie projektu {{ projectId }}...", - "Deny all traffic": "Odmów całego ruchu", - "Deploy": "Wdróż", - "Deploy {{repo}}": "Wdróż {{repo}}", - "Deploy an application to start viewing metrics.": "Wdróż aplikację, aby rozpocząć wyświetlanie metryk.", - "Deploy an application to view logs.": "Wdróż aplikację, aby wyświetlić dzienniki.", + "Cancelled deletion of project {{ projectId }}.": "Anulowano usuwanie projektu {{ projectId }}.", + "Deleted project {{ projectId }}.": "Usunięty projekt {{ projectId }}.", + "Error deleting project {{ projectId }}.": "Błąd podczas usuwania projektu {{ projectId }}.", "Deploy Application": "Wdróż aplikację", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Wdrażanie z usługi Azure Container Registry, Docker Hub lub GHCR", + "Failed to load pipeline runs": "Nie można załadować przebiegów potoku", + "Pipeline": "Potok", + "Set up your pipeline": "Konfigurowanie potoku", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Konfigurowanie potoku ciągłej integracji/ciągłego wdrażania w celu zautomatyzowania wdrożeń i usprawnienia przepływu pracy", + "Waiting for browser authorization...": "Trwa oczekiwanie na autoryzację przeglądarki...", + "Sign in to GitHub to view pipeline runs.": "Zaloguj się do usługi GitHub, aby wyświetlić uruchomienia potoków.", + "Connecting...": "Trwa łączenie...", + "No pipeline runs yet.": "Nie uruchomiono jeszcze potoku.", + "View on GitHub": "Wyświetl w usłudze GitHub", + "View run on GitHub": "Wyświetl przebieg w usłudze GitHub", + "Healthy": "Dobra kondycja", + "Scaled down": "Przeskalowano w dół", + "Degraded": "Obniżona sprawność", + "VS Code": "VS Code", + "Manual": "Ręczne", + "Manual Deploy": "Wdrażanie ręczne", + "Deploy {{repo}}": "Wdróż {{repo}}", "Deploy via Pipeline": "Wdrażanie za pośrednictwem potoku", - "Deploying": "Wdrażanie", + "No deployments found in this namespace.": "Nie znaleziono wdrożeń w tej przestrzeni nazw.", "Deployment": "Wdrożenie", - "Deployment PR": "Żądanie ściągnięcia wdrożenia", - "Deployment PR Ready": "Żądanie ściągnięcia wdrożenia jest gotowe", - "Deployment PR reviewed and merged": "Żądanie ściągnięcia wdrożenia zostało przejrzane i scalone", - "Deployment source": "Źródło wdrożenia", - "Description": "Opis", - "Deselect All": "Usuń zaznaczenie wszystkich", - "Desired Replicas": "Pożądane repliki", - "Discard": "Odrzuć", - "Dismiss": "Odrzuć", - "Distributes pods evenly across nodes to improve workload distribution.": "Dystrybuuje zasobniki równomiernie między węzłami, aby zwiększyć dystrybucję obciążeń.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Równomiernie rozpowszechniaj zasobniki między węzłami, strefami lub innymi domenami topologii, aby zwiększać dystrybucję i dostępność obciążeń.", - "Done": "Gotowe", - "Edit Configuration": "Edytuj konfigurację", + "Source": "Źródło", + "Replicas": "Repliki", + "Ready": "Gotowa", + "Status": "Stan", + "Actions": "Akcje", "Edit deployment": "Edytowanie wdrożenia", - "Edit HPA Configuration": "Edytuj konfigurację HPA", - "Edit Manual Scaling Configuration": "Edytuj konfigurację ręcznego skalowania", - "Egress Policy": "Zasady ruchu wychodzącego", + "View workflow run": "Wyświetl przebieg przepływu pracy", + "Re-deploy": "Ponowne wdrażanie", + "Failed to trigger deployment": "Nie można wyzwolić wdrożenia", + "Trigger": "Wyzwalacz", + "workflow on": "przepływ pracy włączony", + "with the following parameters:": "z następującymi parametrami:", + "Namespace": "Obszar nazw", + "Sign in": "Zaloguj się", + "GitHub authentication required to trigger deployment.": "Do wyzwolenia wdrożenia wymagane jest uwierzytelnianie usługi GitHub.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Wysyłanie przepływu pracy zostało wyzwolone pomyślnie. Sprawdź, czy funkcja GitHub Actions pod kątem postępów.", + "Close": "Zamknij", + "Triggering...": "Trwa wyzwalanie...", + "Deploy": "Wdróż", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Włącz potoki usługi GitHub w obszarze Ustawienia → Funkcji w wersji zapoznawczej, aby korzystać z wdrożeń potoków.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Włącz potoki wdrażania oparte na usłudze GitHub dla projektów usługi AKS.", - "Enable Horizontal Pod Autoscaler": "Włączanie modułu skalowania automatycznego zasobnika poziomego", - "Enable liveness probe": "Włącz sondę żywotności", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Włącz lub wyłącz funkcje, które są nadal opracowywane. Funkcje w wersji zapoznawczej mogą ulec zmianie lub zostać usunięte w przyszłych wersjach.", - "Enable pod anti-affinity": "Włącz anty koligację zasobnika", - "Enable public access": "Włącz dostęp publiczny", - "Enable readiness probe": "Włącz sondę gotowości", - "Enable resource requests and limits": "Włączanie żądań i limitów zasobów", - "Enable startup probe": "Włącz sondę uruchamiania", - "Enable topology spread constraints": "Włącz ograniczenia rozprzestrzeniania topologii", - "Enabling Addons...": "Trwa włączanie dodatków...", - "Enabling these addons may incur additional Azure costs.": "Włączenie tych dodatków może spowodować dodatkowe koszty platformy Azure.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Upewnij się, że minimalna ≤ maksymalna liczba replik i docelowy procesor CPU z zakresu od 10% do 95%.", + "Workloads": "Pakiety robocze", + "No clusters in this project.": "Brak klastrów w tym projekcie.", + "Failed to fetch deployments": "Nie można pobrać wdrożeń", + "Failed to fetch cluster status": "Nie można pobrać stanu klastra", + "Configure security context settings for the container.": "Skonfiguruj ustawienia kontekstu zabezpieczeń dla kontenera.", + "Run as non root user": "Uruchom jako użytkownik inny niż główny", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Zapewnia, że kontener działa jako użytkownik niebędący użytkownikiem głównym (UID != 0) w celu zapewnienia lepszego bezpieczeństwa. Zapobiega to atakom z eskalacją uprawnień.", "Ensures the container runs as a non-root user for better security.": "Zapewnia, że kontener działa jako użytkownik niebędący użytkownikiem głównym w celu zwiększenia bezpieczeństwa.", - "Ensuring resource group exists...": "Trwa sprawdzanie, czy grupa zasobów istnieje...", - "Enter a name for your first application to get started with deployment.": "Wprowadź nazwę pierwszej aplikacji, aby rozpocząć wdrażanie.", - "Enter application name": "Wprowadź nazwę aplikacji", - "Enter project description": "Wprowadź opis projektu", - "Environment Variables": "Zmienne środowiskowe", - "Error deleting project {{ projectId }}.": "Błąd podczas usuwania projektu {{ projectId }}.", - "Error Rate": "Częstotliwość błędów", - "Failed to apply": "Nie można zastosować", - "Failed to apply resources.": "Nie można zastosować zasobów.", - "Failed to convert namespace: {{message}}": "Nie można przekonwertować przestrzeni nazw: {{message}}", - "Failed to create namespace": "Nie można utworzyć przestrzeni nazw", - "Failed to create project": "Tworzenie projektu zakończyło się niepowodzeniem", - "Failed to enable addon: {{error}}": "Nie można włączyć dodatku: {{error}}", - "Failed to enable addons": "Nie można włączyć dodatków", - "Failed to fetch cluster status": "Nie można pobrać stanu klastra", - "Failed to fetch deployment status": "Nie można pobrać stanu wdrożenia", - "Failed to fetch deployments": "Nie można pobrać wdrożeń", - "Failed to fetch managed namespace details": "Nie można pobrać szczegółów zarządzanej przestrzeni nazw", - "Failed to fetch managed namespaces": "Nie można pobrać zarządzanych przestrzeni nazw", - "Failed to fetch pod status": "Nie można pobrać stanu zasobnika", - "Failed to fetch service status": "Nie można pobrać stanu usługi", - "Failed to import any projects. See details below.": "Nie można zaimportować żadnych projektów. Zobacz szczegóły poniżej.", - "Failed to initiate login: {{message}}": "Nie można zainicjować logowania: {{message}}", - "Failed to load AKS clusters": "Nie można załadować klastrów usługi AKS", - "Failed to load Azure context": "Nie można załadować kontekstu platformy Azure", - "Failed to load pipeline runs": "Nie można załadować przebiegów potoku", - "Failed to load repositories": "Nie można załadować repozytoriów", - "Failed to load subscriptions": "Nie można załadować subskrypcji", - "Failed to merge cluster: {{message}}": "Nie można scalić klastra: {{message}}", - "Failed to monitor deployment health": "Nie można monitorować stanu kondycji wdrożenia", - "Failed to register cluster: {{message}}": "Nie można zarejestrować klastra: {{message}}", - "Failed to trigger deployment": "Nie można wyzwolić wdrożenia", - "Failed to update managed namespace": "Nie można zaktualizować zarządzanej przestrzeni nazw", - "failureThreshold": "failureThreshold", - "Features": "Funkcje", - "Federated Credential": "Poświadczenie federacyjne", - "Filter repositories": "Filtrowanie repozytoriów", - "Final status check failed: {{message}}": "Sprawdzanie stanu końcowego nie powiodło się: {{message}}", - "Final status verification failed: {{message}}": "Weryfikacja stanu końcowego nie powiodła się: {{message}}", - "for full network policy support.": "w celu zapewnienia pełnej obsługi zasad sieciowych.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Wygenerowane manifesty platformy Kubernetes (przestrzeń nazw: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Do wyzwolenia wdrożenia wymagane jest uwierzytelnianie usługi GitHub.", - "GitHub Pipelines": "Potoki usługi GitHub", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Przejdź do projektów", - "Guided configuration for ports, replicas, env, and resources": "Konfiguracja z przewodnikiem dla portów, replik, środowiska env i zasobów", + "Read only root filesystem": "Główny system plików tylko do odczytu", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Instaluje główny system plików kontenera w postaci tylko do odczytu, aby zapobiec operacjom zapisu. Zwiększa to bezpieczeństwo, uniemożliwiając złośliwemu kodowi modyfikowanie plików systemowych.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Instaluje główny system plików kontenera jako tylko do odczytu, aby zapobiec operacjom zapisu.", + "Allow privilege escalation": "Zezwalanie na eskalację uprawnień", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Określa, czy proces może uzyskać więcej uprawnień niż jego proces nadrzędny. Wyłączenie tego (proponowanego) zapobiega atakom z użyciem eskalacji uprawnień.", + "Controls whether a process can gain more privileges than its parent process.": "Określa, czy proces może uzyskać więcej uprawnień niż jego proces nadrzędny.", + "Enable pod anti-affinity": "Włącz anty koligację zasobnika", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Preferuj planowanie zasobników w przypadku różnych węzłów w celu zwiększenia dostępności i odporności na błędy. Pomaga to zapewnić rozpowszechnienie zasobników w klastrze.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Preferuj planowanie zasobników w różnych węzłach w celu zwiększenia dostępności i odporności na uszkodzenia.", + "Enable topology spread constraints": "Włącz ograniczenia rozprzestrzeniania topologii", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Równomiernie rozpowszechniaj zasobniki między węzłami, strefami lub innymi domenami topologii, aby zwiększać dystrybucję i dostępność obciążeń.", + "Distributes pods evenly across nodes to improve workload distribution.": "Dystrybuuje zasobniki równomiernie między węzłami, aby zwiększyć dystrybucję obciążeń.", + "Container image": "Obraz kontenera", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Liczba replik zasobników do uruchomienia. Więcej replik zapewnia lepszą dostępność i dystrybucję obciążenia.", + "Continue": "Kontynuuj", + "Configure Container Deployment": "Konfigurowanie wdrożenia kontenera", + "Networking": "Sieć", "Healthchecks": "Healthchecks", - "Healthy": "Dobra kondycja", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Częstotliwość (w sekundach) wykonywania sondy żywotności. Wartość domyślna wynosi 10 sekund.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Częstotliwość (w sekundach) wykonywania sondy gotowości. Wartość domyślna wynosi 10 sekund.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Częstotliwość (w sekundach) wykonywania sondy uruchamiania. Wartość domyślna wynosi 10 sekund.", - "HPA scales pods based on CPU utilization.": "Narzędzie HPA skaluje zasobniki na podstawie użycia procesora CPU.", - "Identity Resource Group": "Grupa zasobów tożsamości", - "Import AKS Projects": "Importowanie projektów usługi AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importuj istniejące zarządzane przestrzenie nazw i zwykłe przestrzenie nazw jako projekty. Przestrzenie nazw, które nie są jeszcze projektami pulpitu usługi AKS, zostaną przekonwertowane przez dodanie wymaganej etykiety projektu.", - "Import Selected Projects": "Importuj wybrane projekty", - "Importing": "Importowanie", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importowanie {{current}} : {{total}} {{name}} z {{clusterName}}", - "in resource group": "w grupie zasobów", + "Resource Limits": "Limity zasobów", + "Environment Variables": "Zmienne środowiskowe", + "Workload Identity": "", + "Advanced": "Zaawansowane", "Information about {{label}}": "Informacje o {{label}}", - "Information about CPU limit": "Informacje o limicie procesora", - "Information about CPU request": "Informacje o żądaniu procesora", - "Information about memory limit": "Informacje o limicie pamięci", - "Information about memory request": "Informacje o żądaniu pamięci", - "Information about target CPU utilization": "Informacje o docelowym wykorzystaniu procesora", - "Ingress Policy": "Zasady ruchu przychodzącego", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Trwa inicjowanie...", - "Initiating Azure login": "Inicjowanie logowania do platformy Azure", - "Initiating managed namespace creation": "Inicjowanie tworzenia zarządzanej przestrzeni nazw", - "Install Extension": "Zainstaluj rozszerzenie", - "Install GitHub App": "Instalowanie aplikacji GitHub", - "Installing": "Instalowanie", - "Internal only": "Tylko wewnętrzne", - "Invalid YAML": "Nieprawidłowy plik YAML", - "Invalid YAML: List item missing required field (kind)": "Nieprawidłowy kod YAML: element listy nie zawiera wymaganego pola (rodzaj)", - "Invalid YAML: List item missing required field (metadata.name)": "Nieprawidłowy kod YAML: element listy nie ma wymaganego pola (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "Nieprawidłowy kod YAML: zasób listy musi mieć pole „items” tablicy", - "Invalid YAML: missing required field (kind)": "Nieprawidłowy kod YAML: brak wymaganego pola (rodzaj)", - "Invalid YAML: missing required field (metadata.name)": "Nieprawidłowy kod YAML: brak wymaganego pola (metadata.name)", - "Issue {{number}}": "Problem {{number}}", - "Issues": "Problemy", - "just now": "teraz", - "KEDA (Event-Driven Autoscaling)": "KEDA (skalowanie automatyczne na podstawie zdarzeń)", - "Keep Going": "Kontynuuj", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Dodaj co najmniej jeden manifest platformy Kubernetes. Przekaż pliki, aby wypełnić edytor lub wkleić/edytować bezpośrednio poniżej.", + "Upload files": "Przekaż pliki", + "Clear editor": "Wyczyść edytor", + "Review & Deploy": "Przejrzyj i wdróż", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Wygenerowane manifesty platformy Kubernetes (przestrzeń nazw: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Zasoby do wdrożenia ({{count}} obiekt)", + "Resources to be deployed ({{count}} object)_few": "", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Zasoby do wdrożenia ({{count}} obiekt)", + "namespace: {{namespace}}": "przestrzeń nazw: {{namespace}}", + "Configure": "Konfiguruj", + "Deploying": "Wdrażanie", "Key": "Klucz", - "Kubernetes restarts the container if this check fails repeatedly.": "Platforma Kubernetes ponownie uruchamia kontener, jeśli to sprawdzenie nie powiedzie się wielokrotnie.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Wartość", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "usunąć", + "Add variable": "Dodaj zmienną", + "Configure container health probes.": "Skonfiguruj sondy kondycji kontenera.", + "Manually configure settings": "Ręczne konfigurowanie ustawień", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Domyślnie sondy używają protokołu HTTP GET na ścieżce głównej z rozsądnymi wartościami domyślnymi. Włącz tę opcję, aby dostosować ustawienia sondy.", + "Enable liveness probe": "Włącz sondę żywotności", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Platforma Kubernetes ponownie uruchamia kontener, jeśli to sprawdzenie wielokrotnie zakończy się niepowodzeniem. Służy do wykrywania i odzyskiwania po zakleszczeniach lub nieodpowiadających kontenerach.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Platforma Kubernetes tymczasowo wyłącza żywotność/gotowość do momentu powodzenia uruchamiania.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Platforma Kubernetes tymczasowo wyłącza żywotność/gotowość do momentu powodzenia uruchamiania. Przydatne w przypadku kontenerów, w przypadku których uruchamianie trwa długo.", - "Kubernetes Version": "Wersja platformy Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "Platforma Kubernetes nie będzie wysyłać ruchu do zasobnika, dopóki ten test nie przejdzie pomyślnie.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Platforma Kubernetes nie będzie wysyłać ruchu do zasobnika, dopóki ten test nie zakończy się powodzeniem. Służy do wskazywania, kiedy kontener jest gotowy do akceptowania ruchu.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "mniej niż minutę", - "Limits": "Limity", + "Kubernetes restarts the container if this check fails repeatedly.": "Platforma Kubernetes ponownie uruchamia kontener, jeśli to sprawdzenie nie powiedzie się wielokrotnie.", "Liveness path": "Ścieżka żywotności", - "Loading": "Ładowanie", - "Loading AKS clusters": "Ładowanie klastrów usługi AKS", - "Loading Azure account information": "Ładowanie informacji o koncie platformy Azure", - "Loading Azure context...": "Trwa ładowanie kontekstu platformy Azure...", - "Loading clusters": "Ładowanie klastrów", - "Loading configuration...": "Trwa ładowanie konfiguracji...", - "Loading deployments": "Ładowanie wdrożeń", - "Loading metrics": "Ładowanie metryk", - "Loading scaling metrics from Prometheus": "Ładowanie metryk skalowania z rozwiązania Prometheus", - "Loading subscriptions": "Ładowanie subskrypcji", - "Loading...": "Trwa ładowanie...", - "Location": "Lokalizacja", - "Log out": "Wyloguj", - "Logged in as": "Zalogowano jako", - "Logging out": "Wylogowywanie", - "Login successful! Redirecting": "Logowanie pomyślne! Przekierowywanie", - "Login timeout. Please try again.": "Limit czasu logowania. Spróbuj ponownie.", - "Managed Identity": "Tożsamość zarządzana", - "managed namespaces only": "tylko zarządzane przestrzenie nazw", - "ManagedNamespacePreview feature registered successfully!": "Funkcja ManagedNamespacePreview została pomyślnie zarejestrowana!", - "Manual": "Ręczne", - "Manual Deploy": "Wdrażanie ręczne", - "Manually configure settings": "Ręczne konfigurowanie ustawień", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Ścieżka HTTP umożliwiająca sprawdzenie żywotności (np. /healthz). Sonda wykonuje żądanie HTTP GET do tej ścieżki.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Liczba sekund do uruchomienia kontenera przed zainicjowaniem sond żywotności.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Częstotliwość (w sekundach) wykonywania sondy żywotności. Wartość domyślna wynosi 10 sekund.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Liczba sekund do przekroczenia limitu czasu sondy. Wartość domyślna wynosi 1 sekundę.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Gdy sonda zakończy się niepowodzeniem, platforma Kubernetes spróbuje wykonać tę próbę wiele razy przed rezygnacją i ponownym uruchomieniem kontenera.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimalna liczba kolejnych operacji zakończonych powodzeniem w przypadku sondy, która ma zostać uznana za sondę będącą w dobrej kondycji po operacji zakończonej niepowodzeniem. Wartość domyślna to 1.", + "Enable readiness probe": "Włącz sondę gotowości", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Platforma Kubernetes nie będzie wysyłać ruchu do zasobnika, dopóki ten test nie zakończy się powodzeniem. Służy do wskazywania, kiedy kontener jest gotowy do akceptowania ruchu.", + "Kubernetes won't send traffic to the pod until this check passes.": "Platforma Kubernetes nie będzie wysyłać ruchu do zasobnika, dopóki ten test nie przejdzie pomyślnie.", + "Readiness path": "Ścieżka gotowości", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Ścieżka HTTP do sprawdzania gotowości (np. /ready). Sonda wykonuje żądanie HTTP GET do tej ścieżki.", + "Number of seconds after the container has started before readiness probes are initiated.": "Liczba sekund po uruchomieniu kontenera przed zainicjowaniem sond gotowości.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Częstotliwość (w sekundach) wykonywania sondy gotowości. Wartość domyślna wynosi 10 sekund.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Jeśli sonda nie powiedzie się, platforma Kubernetes spróbuje wykonać tę próbę wiele razy przed oznaczeniem zasobnika jako niegotowego.", + "Enable startup probe": "Włącz sondę uruchamiania", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Platforma Kubernetes tymczasowo wyłącza żywotność/gotowość do momentu powodzenia uruchamiania. Przydatne w przypadku kontenerów, w przypadku których uruchamianie trwa długo.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Platforma Kubernetes tymczasowo wyłącza żywotność/gotowość do momentu powodzenia uruchamiania.", + "Startup path": "Ścieżka uruchamiania", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Ścieżka HTTP do sprawdzenia pod kątem uruchamiania (np. /startup). Sonda wykonuje żądanie HTTP GET do tej ścieżki.", + "Number of seconds after the container has started before startup probes are initiated.": "Liczba sekund po uruchomieniu kontenera przed zainicjowaniem sond uruchamiania.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Częstotliwość (w sekundach) wykonywania sondy uruchamiania. Wartość domyślna wynosi 10 sekund.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Jeśli sonda nie powiedzie się, platforma Kubernetes spróbuje wykonać tę próbę wielokrotnie przed rezygnacją. W przypadku sond uruchamiania określa to czas oczekiwania przed ponownym uruchomieniem.", + "Enable Horizontal Pod Autoscaler": "Włączanie modułu skalowania automatycznego zasobnika poziomego", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Automatycznie skaluje liczbę zasobników na podstawie użycia procesora. Zasób HPA zwiększy zasobniki, gdy użycie procesora przekroczy wartość docelową i zmniejszy się, gdy będzie ono poniżej tej wartości.", + "HPA scales pods based on CPU utilization.": "Narzędzie HPA skaluje zasobniki na podstawie użycia procesora CPU.", + "Min replicas": "Minimalna liczba replik", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Minimalna liczba replik zasobników, które będzie obsługiwać zasób HPA, nawet jeśli użycie procesora jest niskie.", "Max replicas": "Maksymalna liczba replik", - "Maximum CPU allowed (1000m = 1 CPU core)": "Maksymalna dozwolona liczba procesorów CPU (1000m = 1 rdzeń procesora CPU)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Maksymalna dozwolona pamięć (1024 MiB = 1 GiB)", - "Maximum Replicas": "Maksymalna liczba replik", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Maksymalna liczba replik zasobników, które można skalować w górę, gdy użycie procesora jest wysokie.", + "Target CPU utilization": "Docelowe użycie procesora CPU", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Docelowy średni procent wykorzystania procesora CPU we wszystkich zasobnikach. Obliczenia HPA będą skalowane w górę, gdy użycie procesora przekroczy tę wartość, i będzie skalowane w dół, gdy będzie poniżej.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Upewnij się, że minimalna ≤ maksymalna liczba replik i docelowy procesor CPU z zakresu od 10% do 95%.", + "Target port": "Port docelowy", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Numer portu, na którym nasłuchuje kontener. Jest to port wewnątrz kontenera, w którym działa aplikacja.", + "Service port": "Port usługi", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Numer portu uwidaczniany przez usługę Kubernetes. Ruch do tego portu jest przekazywany do portu docelowego.", + "Use custom service port": "Użyj niestandardowego portu usługi", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Domyślnie port usługi jest zgodny z portem docelowym. Włącz tę opcję, aby użyć innego portu dla usługi.", + "Service type": "Typ usługi", + "Internal only": "Tylko wewnętrzne", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Użyj funkcji ClusterIP. Najlepsze dla usług, które są osiągalne tylko w klastrze.", + "Enable public access": "Włącz dostęp publiczny", + "Creates a LoadBalancer to expose the application to the internet.": "Tworzy moduł LoadBalancer, aby uwidocznić aplikację w Internecie.", + "Enable resource requests and limits": "Włączanie żądań i limitów zasobów", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Ustaw żądania procesora i pamięci (zasoby gwarantowane) oraz limity (maksymalna liczba zasobów), aby kontrolować alokację zasobów i zapobiegać nadmiernemu zużyciu zasobów klastra przez kontenery.", + "CPU request": "Żądanie procesora", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Minimalna ilość procesora CPU gwarantowana dla kontenera. Platforma Kubernetes zaplanuje zasobnik w węźle z co najmniej tak dużą ilością dostępnego procesora CPU.", + "millicores": "mili-rdzenie", + "CPU limit": "Limit procesora", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Maksymalna ilość procesora CPU, z którego może korzystać kontener. W przypadku przekroczenia limit kontenera zostanie ograniczony.", + "Memory request": "Żądanie pamięci", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Minimalna ilość pamięci gwarantowana dla kontenera. Platforma Kubernetes zaplanuje zasobnik w węźle z co najmniej tak dużą ilością dostępnej pamięci.", "mebibytes": "mebibajty", - "Memory": "Pamięć", "Memory limit": "Limit pamięci", - "Memory Limits": "Limity pamięci", - "Memory request": "Żądanie pamięci", - "Memory Requests": "Żądania pamięci", - "Memory Resources": "Zasoby pamięci", - "Memory Usage": "Użycie pamięci", - "Memory utilization": "Użycie pamięci", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Scalanie klastra {{clusterName}} (liczba przestrzeni nazw: {{count}})", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Scalanie klastra {{clusterName}} (liczba przestrzeni nazw: {{count}})", - "Metrics": "Metryki", - "Metrics refreshed every 30 seconds": "Metryki odświeżane co 30 sekund", - "Metrics Unavailable": "Metryki niedostępne", - "millicores": "mili-rdzenie", - "Min replicas": "Minimalna liczba replik", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minimalna liczba kolejnych operacji zakończonych powodzeniem w przypadku sondy, która ma zostać uznana za sondę będącą w dobrej kondycji po operacji zakończonej niepowodzeniem. Wartość domyślna to 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minimalna gwarantowana liczba procesorów CPU (1000m = 1 rdzeń procesora CPU)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minimalna gwarantowana pamięć (1024 MiB = 1 GiB)", - "Minimum Replicas": "Minimalna liczba replik", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Brak wymaganego kontekstu platformy Azure. Upewnij się, że zalogowano się, a klaster jest skojarzony z prawidłową subskrypcją, grupą zasobów i dzierżawą.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Instaluje główny system plików kontenera jako tylko do odczytu, aby zapobiec operacjom zapisu.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Instaluje główny system plików kontenera w postaci tylko do odczytu, aby zapobiec operacjom zapisu. Zwiększa to bezpieczeństwo, uniemożliwiając złośliwemu kodowi modyfikowanie plików systemowych.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Obsługa wielu plików (wdrożenia, usługi, ruch przychodzący itp.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Musi zawierać tylko małe litery, cyfry i łączniki, zaczynać się i kończyć znakiem alfanumerycznym", - "Name": "Nazwa", - "Namespace": "Obszar nazw", - "Namespace '{{name}}' converted and imported as project": "Przestrzeń nazw „{{name}}” została przekonwertowana i zaimportowana jako projekt", - "Namespace created successfully!": "Pomyślnie utworzono przestrzeń nazw!", - "Namespace Created Successfully!": "Pomyślnie utworzono przestrzeń nazw!", - "Namespace creation API succeeded, proceeding with user assignments": "Interfejs API tworzenia przestrzeni nazw zakończył się pomyślnie, kontynuowanie przypisywania użytkowników", - "Namespace creation completed successfully! Adding user access": "Tworzenie przestrzeni nazw zakończyło się pomyślnie! Dodawanie dostępu użytkownika", - "Namespace Creation Failed": "Tworzenie przestrzeni nazw nie powiodło się", - "Namespace creation failed: {{message}}": "Tworzenie przestrzeni nazw nie powiodło się: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Zainicjowano tworzenie przestrzeni nazw! Stan tworzenia monitorowania", - "Namespace Name": "Nazwa obszaru nazw", - "Namespace name is required": "Nazwa przestrzeni nazw jest wymagana", - "Namespace name must be 63 characters or fewer": "Długość nazwy przestrzeni nazw nie może być mniejsza niż 63 znaki", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Nazwa przestrzeni nazw musi zawierać tylko małe litery, cyfry i łączniki oraz musi zaczynać się i kończyć znakiem alfanumerycznym", - "Namespace status check failed: {{message}}": "Sprawdzanie stanu przestrzeni nazw nie powiodło się: {{message}}", - "Namespace status verification failed: {{message}}": "Weryfikacja stanu przestrzeni nazw nie powiodła się: {{message}}", - "namespace: {{namespace}}": "przestrzeń nazw: {{namespace}}", - "Namespaces to convert:": "Przestrzenie nazw do przekonwertowania:", - "Network I/O": "We/Wy sieci", - "Network In": "Ruch przychodzący w sieci", - "Network Out": "Ruch wychodzący w sieci", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Nie można zmienić aparatu zasad sieciowych po utworzeniu klastra. Tworzenie nowego klastra za pomocą", - "Networking": "Sieć", - "Networking Policies": "Zasady sieci", - "New Project": "Nowy projekt", - "Next": "Dalej", - "No": "Nie", - "No AKS clusters found in this subscription.": "Nie znaleziono klastrów usługi AKS w tej subskrypcji.", - "No cluster is associated with this project.": "Z tym projektem nie jest skojarzony żaden klaster.", - "No clusters found. Register a cluster first.": "Nie znaleziono żadnych klastrów. Najpierw zarejestruj klaster.", - "No clusters in this project.": "Brak klastrów w tym projekcie.", - "No clusters with Azure Entra ID authentication found for this subscription": "Nie znaleziono klastrów z uwierzytelnianiem Azure Entra ID dla tej subskrypcji", - "No data available": "Brak dostępnych danych", - "No deployments found": "Nie znaleziono żadnych wdrożeń", - "No Deployments Found": "Nie odnaleziono wdrożeń", - "No deployments found in this namespace.": "Nie znaleziono wdrożeń w tej przestrzeni nazw.", - "No description provided": "Nie podano opisu", - "No eligible clusters found in this subscription.": "Nie znaleziono kwalifikujących się klastrów w tej subskrypcji.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Maksymalna ilość pamięci, która może być używana przez kontener. W przypadku przekroczenia kontener zostanie zakończony (OOMKilled).", + "Container Image": "Obraz kontenera", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Wdrażanie z usługi Azure Container Registry, Docker Hub lub GHCR", + "Auto-generated Deployment and Service manifests": "Automatycznie generowane manifesty wdrażania i usługi", + "Guided configuration for ports, replicas, env, and resources": "Konfiguracja z przewodnikiem dla portów, replik, środowiska env i zasobów", "No Kubernetes expertise required to get started": "Do rozpoczęcia pracy nie jest wymagana wiedza na temat platformy Kubernetes", - "No options": "Brak opcji", - "No pipeline runs yet.": "Nie uruchomiono jeszcze potoku.", - "No pods found for deployment \"{{name}}\"": "Nie znaleziono zasobników dla wdrożenia „{{name}}”", - "No repositories found": "Nie znaleziono żadnych repozytoriów", - "No repositories match your filter": "Żadne repozytoria nie pasują do filtru", - "No response time data available": "Brak dostępnych danych czasu odpowiedzi", - "No scaling data available": "Brak dostępnych danych skalowania", - "No subscriptions found": "Nie znaleziono żadnych subskrypcji", - "Not specified": "Nie określono", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Uwaga: w przypadku zarządzanych przestrzeni nazw usługi AKS zarządzanie usługą Azure ARM zostanie usunięte automatycznie.", - "Number of Replicas": "Liczba replik", - "Number of seconds after the container has started before liveness probes are initiated.": "Liczba sekund do uruchomienia kontenera przed zainicjowaniem sond żywotności.", - "Number of seconds after the container has started before readiness probes are initiated.": "Liczba sekund po uruchomieniu kontenera przed zainicjowaniem sond gotowości.", - "Number of seconds after the container has started before startup probes are initiated.": "Liczba sekund po uruchomieniu kontenera przed zainicjowaniem sond uruchamiania.", - "Number of seconds after which the probe times out. Default is 1 second.": "Liczba sekund do przekroczenia limitu czasu sondy. Wartość domyślna wynosi 1 sekundę.", - "OIDC trust for": "Zaufanie OIDC dla", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Po utworzeniu żądania ściągnięcia wdrożenia przez agenta przejrzyj wygenerowane pliki i scal, aby uruchomić potok wdrażania", - "Only clusters with Azure Entra ID authentication are shown.": "Wyświetlane są tylko klastry z uwierzytelnianiem Azure Entra ID.", - "Performing final status verification": "Przeprowadzanie weryfikacji stanu końcowego", - "periodSeconds": "periodSeconds", - "Pipeline": "Potok", - "Pipeline configured": "Skonfigurowano potok", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Ukończ uwierzytelnianie w przeglądarce. To okno zostanie automatycznie przekierowane po zakończeniu logowania.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Zarejestruj go, aby kontynuować.", - "Please review all the settings before creating your AKS project": "Przejrzyj wszystkie ustawienia przed utworzeniem projektu usługi AKS", - "Please select a deployment to view metrics": "Wybierz wdrożenie, aby wyświetlić metryki", - "Please select a subscription first": "Najpierw wybierz subskrypcję", - "Please select at least one namespace to import": "Wybierz co najmniej jedną przestrzeń nazw do zaimportowania", - "Please sign in to Azure to continue.": "Zaloguj się na platformie Azure, aby kontynuować.", - "Pod Details": "Szczegóły zasobnika", - "Pod Name": "Nazwa zasobnika", - "PR {{number}}": "Żądanie ściągnięcia {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Preferuj planowanie zasobników w różnych węzłach w celu zwiększenia dostępności i odporności na uszkodzenia.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Preferuj planowanie zasobników w przypadku różnych węzłów w celu zwiększenia dostępności i odporności na błędy. Pomaga to zapewnić rozpowszechnienie zasobników w klastrze.", + "Bring your own Kubernetes manifests to deploy": "Wdrażanie własnych manifestów platformy Kubernetes", + "Use existing manifests for full control": "Użyj istniejących manifestów, aby uzyskać pełną kontrolę", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Obsługa wielu plików (wdrożenia, usługi, ruch przychodzący itp.)", "Preview and basic validation before apply": "Wersja zapoznawcza i podstawowa weryfikacja przed zastosowaniem", - "Preview Features": "Funkcje w wersji zapoznawczej", - "Project '{{name}}' successfully imported": "Projekt „{{name}}” został pomyślnie zaimportowany", - "Project Basics": "Podstawowe informacje o programie Project", - "Project Created Successfully!": "Pomyślnie utworzono projekt!", - "Project creation completed successfully!": "Tworzenie projektu zakończyło się pomyślnie!", - "Project Creation Failed": "Tworzenie projektu nie powiodło się", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Upłynął limit czasu tworzenia projektu po 10 minutach. Sprawdź, czy przestrzeń nazw została utworzona, i spróbuj ponownie.", - "Project Description": "Opis projektu", - "Project Name": "Nazwa projektu", - "Project name is available": "Nazwa projektu jest dostępna", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Nazwa projektu może zawierać tylko małe litery, cyfry i łączniki (bez spacji)", - "Project Status": "Stan projektu", - "Pull requests": "Żądania ściągnięcia", + "Select Source": "Wybierz element źródłowy", + "Choose a source for your deployment (container image, repo, etc.).": "Wybierz źródło wdrożenia (obraz kontenera, repozytorium itp.).", + "Deployment source": "Źródło wdrożenia", + "Features": "Funkcje", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Grupa zasobów tożsamości", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Trwa sprawdzanie istniejącej tożsamości...", + "Creating managed identity...": "Trwa tworzenie tożsamości zarządzanej...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Nieprawidłowy kod YAML: brak wymaganego pola (rodzaj)", + "Invalid YAML: List resource must have an array \"items\" field": "Nieprawidłowy kod YAML: zasób listy musi mieć pole „items” tablicy", + "Invalid YAML: List item missing required field (kind)": "Nieprawidłowy kod YAML: element listy nie zawiera wymaganego pola (rodzaj)", + "Invalid YAML: List item missing required field (metadata.name)": "Nieprawidłowy kod YAML: element listy nie ma wymaganego pola (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "Nieprawidłowy kod YAML: brak wymaganego pola (metadata.name)", + "Invalid YAML": "Nieprawidłowy plik YAML", + "Validation failed": "Niepowodzenie weryfikacji", + "Failed to apply": "Nie można zastosować", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Zastosowano następująca liczbę zasobów: {{applied}}, ale zasoby w liczbie{{failed}} zakończyły się niepowodzeniem:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "Pomyślnie zastosowano następującą liczbę zasobów: {{count}}.", + "Applied {{count}} resource(s) successfully._few": "", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "Pomyślnie zastosowano następującą liczbę zasobów: {{count}}.", + "Failed to apply resources.": "Nie można zastosować zasobów.", + "unnamed": "bez nazwy", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Zawartość", "Push agent config files": "Wypychanie plików konfiguracji agenta", - "Re-deploy": "Ponowne wdrażanie", - "Read only root filesystem": "Główny system plików tylko do odczytu", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Dostęp tylko do odczytu do większości obiektów w przestrzeni nazw. Nie można wyświetlić ról, powiązań ról ani wpisów tajnych.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Dostęp do odczytu/zapisu do większości obiektów w przestrzeni nazw. Nie można wyświetlić lub zmodyfikować ról ani powiązań ról. Może uzyskiwać dostęp do wpisów tajnych i uruchamiać zasobniki jako dowolne konto usługi w przestrzeni nazw.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Prawo do odczytu/zapisu większości zasobów w przestrzeni nazw. Może tworzyć role i powiązania ról w przestrzeni nazw. Nie można zapisać limitu przydziału zasobów lub samej przestrzeni nazw.", - "Readiness path": "Ścieżka gotowości", - "Ready": "Gotowa", - "Refresh": "Odśwież", - "Refreshing": "Odświeżanie", - "Register AKS Cluster": "Rejestrowanie klastra usługi AKS", - "Register Cluster": "Zarejestruj klaster", - "Register ManagedNamespacePreview Feature": "Zarejestruj funkcję ManagedNamespacePreview", - "Registering": "Rejestrowanie", - "Registering cluster": "Rejestrowanie klastra", - "Regular": "Standardowy", - "Regular Kubernetes namespace": "Zwykła przestrzeń nazw Kubernetes", - "remove": "usunąć", - "Remove assignee": "Usuń osoby przydzielone", - "Reopen install page": "Ponownie otwórz stronę instalacji", - "Replica Bounds": "Granice repliki", - "Replicas": "Repliki", - "Request & error rate": "Współczynnik błędów żądań", - "Request Rate": "Liczba żądań", - "Requests": "Żądania", - "Required Permissions": "Wymagane uprawnienia", - "Resource Group": "Grupa zasobów", - "Resource group where the managed identity will be created": "Grupa zasobów, w której zostanie utworzona tożsamość zarządzana", - "Resource Limits": "Limity zasobów", - "Resource Usage": "Użycie zasobu", - "Resources to be deployed ({{count}} object)_one": "Zasoby do wdrożenia ({{count}} obiekt)", - "Resources to be deployed ({{count}} object)_other": "Zasoby do wdrożenia ({{count}} obiekt)", - "Response Time": "Czas odpowiedzi", - "Restarts": "Ponowne uruchamia", - "Retry": "Ponów próbę", - "Review": "Przegląd", - "Review & Deploy": "Przejrzyj i wdróż", - "Review & Merge": "Przejrzyj i scal", - "Review and merge the setup PR to enable the Copilot agent.": "Przejrzyj i scal żądanie ściągnięcia konfiguracji, aby włączyć agenta funkcji Copilot.", - "Review on GitHub": "Przejrzyj w usłudze GitHub", - "Review Project Configuration": "Przejrzyj konfigurację projektu", - "Role": "Rola", - "Role Assignment": "Przypisanie roli", - "Run as non root user": "Uruchom jako użytkownik inny niż główny", + "Workflows": "Przepływy pracy", + "Create setup workflow in .github/workflows/": "Tworzenie przepływu pracy konfiguracji w .github/workflows/", + "Pull requests": "Żądania ściągnięcia", + "Create deployment PRs": "Tworzenie żądań ściągnięcia wdrożenia", + "Issues": "Problemy", + "Track agent progress": "Śledzenie postępu agenta", "Run deployment workflows": "Uruchamianie przepływów pracy wdrażania", - "Save": "Zapisz", - "Scaled down": "Przeskalowano w dół", - "Scaling": "Skalowanie", - "Scaling Chart Unavailable": "Wykres skalowania jest niedostępny", - "Scaling History (Last 24 Hours)": "Historia skalowania (ostatnie 24 godziny)", - "Scaling Mode": "Tryb skalowania", - "Scaling Overview": "Omówienie skalowania", - "Search clusters": "Wyszukaj klastry", - "Search subscriptions": "Wyszukaj subskrypcje", - "Select a cluster": "Wybierz klaster", - "Select a deployment to view metrics": "Wybierz wdrożenie, aby wyświetlić metryki", - "Select a deployment to view scaling metrics": "Wybierz wdrożenie, aby wyświetlić metryki skalowania", - "Select a subscription": "Wybierz subskrypcję", - "Select All": "Zaznacz wszystkie", - "Select an AKS cluster": "Wybierz klaster usługi AKS", - "Select an Azure subscription": "Wybierz subskrypcję platform Azure", - "Select an option": "Wybierz opcję", - "Select Deployment": "Wybierz wdrożenie", - "Select Namespaces to Import": "Wybierz przestrzenie nazw do zaimportowania", + "Connect to GitHub": "Połączenie z usługą GitHub", + "Connected to '{{username}}'.": "Połączono z użytkownikiem „{{username}}”.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autoryzuj pulpit usługi AKS do tworzenia potoków wdrażania w repozytorium.", + "Required Permissions": "Wymagane uprawnienia", + "Complete authorization on your browser screen": "Ukończ autoryzację na ekranie przeglądarki", + "Connect": "Połącz", "Select repository": "Wybierz repozytorium", - "Select Source": "Wybierz element źródłowy", - "Selected Cluster Details": "Szczegóły wybranego klastra", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Brak wybranego klastra w pliku kubeconfig. Zarejestruj go przed kontynuowaniem.", - "Service port": "Port usługi", - "Service type": "Typ usługi", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Ustaw żądania procesora i pamięci (zasoby gwarantowane) oraz limity (maksymalna liczba zasobów), aby kontrolować alokację zasobów i zapobiegać nadmiernemu zużyciu zasobów klastra przez kontenery.", - "Set quota limits to prevent overuse and maintain cluster stability": "Ustaw limity przydziału, aby zapobiec nadmiernemu użyciu i zachować stabilność klastra.", - "Set security, communication and access rules for incoming and outgoing traffic": "Ustaw reguły zabezpieczeń, komunikacji i dostępu dla ruchu przychodzącego i wychodzącego", - "Set the desired number of pod replicas for this deployment": "Ustaw żądaną liczbę replik zasobników dla tego wdrożenia", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Konfigurowanie potoku ciągłej integracji/ciągłego wdrażania w celu zautomatyzowania wdrożeń i usprawnienia przepływu pracy", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Konfigurowanie i konfigurowanie nowego projektu w usłudze Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Konfigurowanie agenta funkcji Copilot", - "Set up your pipeline": "Konfigurowanie potoku", - "Setting up Copilot agent...": "Trwa konfigurowanie agenta funkcji Copilot...", - "Setup PR Created": "Utworzono żądanie ściągnięcia konfiguracji", - "Setup PR reviewed and merged": "Przejrzano i scalono żądanie ściągnięcia konfiguracji", - "Sign in": "Zaloguj się", - "Sign in to GitHub": "Zaloguj się w witrynie GitHub", - "Sign in to GitHub to view pipeline runs.": "Zaloguj się do usługi GitHub, aby wyświetlić uruchomienia potoków.", - "Sign in with Azure": "Zaloguj się za pomocą usługi Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Zaloguj się przy użyciu konta platformy Azure, aby zarządzać klastrami i zasobami usługi AKS", - "Source": "Źródło", - "Starting project creation": "Rozpoczynanie tworzenia projektu", - "Startup path": "Ścieżka uruchamiania", - "Status": "Stan", - "Subscription": "Subskrypcja", - "Successfully merged {{count}} cluster(s)_one": "Pomyślnie scalono następującą liczbę klastrów: {{count}}", - "Successfully merged {{count}} cluster(s)_other": "Pomyślnie scalono następującą liczbę klastrów: {{count}}", - "successThreshold": "successThreshold", - "Target CPU utilization": "Docelowe użycie procesora CPU", - "Target CPU Utilization (%)": "Docelowe wykorzystanie procesora CPU (%)", - "Target port": "Port docelowy", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agent utworzył żądanie ściągnięcia wdrożenia. Przejrzyj wygenerowane pliki i scal, aby uruchomić potok wdrażania.", - "The agent is creating the setup PR to enable the Copilot agent.": "Agent tworzy żądanie ściągnięcia konfiguracji w celu włączenia agenta funkcji Copilot.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Ukończ instalację w przeglądarce. Spowoduje to wykonanie automatycznej aktualizacji po zainstalowaniu aplikacji w repozytorium {{repoName}}.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Aby kontynuować, należy zainstalować w repozytorium {{repoName}} zainstalować klasyczną aplikację GitHub usługi AKS.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Rozszerzenie aks-preview jest wymagane do tworzenia zarządzanych przestrzeni nazw. Zainstaluj go, aby kontynuować.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Agent kodowania funkcji Copilot analizuje repozytorium i generuje żądanie ściągnięcia wdrożenia za pomocą pliku Dockerfile, manifestów platformy Kubernetes i przepływu pracy funkcji GitHub Actions.", - "The following addons can be enabled on this cluster:": "W tym klastrze można włączyć następujące dodatki:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Zostaną utworzone następujące zasoby platformy Azure, aby umożliwić uwierzytelnianie potoku funkcji GitHub Actions za pomocą klastra usługi AKS:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Następujące przestrzenie nazw zostaną przekonwertowane na projekty pulpitu usługi AKS, dodając następujące etykiety:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Ścieżka HTTP umożliwiająca sprawdzenie żywotności (np. /healthz). Sonda wykonuje żądanie HTTP GET do tej ścieżki.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Ścieżka HTTP do sprawdzania gotowości (np. /ready). Sonda wykonuje żądanie HTTP GET do tej ścieżki.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Ścieżka HTTP do sprawdzenia pod kątem uruchamiania (np. /startup). Sonda wykonuje żądanie HTTP GET do tej ścieżki.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Aby utworzyć zarządzane przestrzenie nazw, należy zarejestrować funkcję ManagedNamespacePreview.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Maksymalna ilość procesora CPU, z którego może korzystać kontener. W przypadku przekroczenia limit kontenera zostanie ograniczony.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Maksymalna ilość pamięci, która może być używana przez kontener. W przypadku przekroczenia kontener zostanie zakończony (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Maksymalna liczba replik zasobników, które można skalować w górę, gdy użycie procesora jest wysokie.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Minimalna ilość procesora CPU gwarantowana dla kontenera. Platforma Kubernetes zaplanuje zasobnik w węźle z co najmniej tak dużą ilością dostępnego procesora CPU.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Minimalna ilość pamięci gwarantowana dla kontenera. Platforma Kubernetes zaplanuje zasobnik w węźle z co najmniej tak dużą ilością dostępnej pamięci.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Minimalna liczba replik zasobników, które będzie obsługiwać zasób HPA, nawet jeśli użycie procesora jest niskie.", - "The namespace will be created on the selected cluster and set up as a project": "Przestrzeń nazw zostanie utworzona w wybranym klastrze i skonfigurowana jako projekt", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Liczba replik zasobników do uruchomienia. Więcej replik zapewnia lepszą dostępność i dystrybucję obciążenia.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Operacja może być nadal uruchomiona w usłudze GitHub. Sprawdź powyższy link, aby uzyskać najnowszy stan.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Numer portu uwidaczniany przez usługę Kubernetes. Ruch do tego portu jest przekazywany do portu docelowego.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Numer portu, na którym nasłuchuje kontener. Jest to port wewnątrz kontenera, w którym działa aplikacja.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Docelowy średni procent wykorzystania procesora CPU we wszystkich zasobnikach. Obliczenia HPA będą skalowane w górę, gdy użycie procesora przekroczy tę wartość, i będzie skalowane w dół, gdy będzie poniżej.", - "There are no deployments in this project namespace yet.": "W tej przestrzeni nazw projektu nie ma jeszcze żadnych wdrożeń.", + "Reopen install page": "Ponownie otwórz stronę instalacji", + "Install GitHub App": "Instalowanie aplikacji GitHub", + "Checking...": "Trwa sprawdzanie...", + "Connecting to GitHub...": "Trwa łączenie z usługą GitHub...", + "Connect GitHub": "Łączenie z usługą GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Połączono", + "Sign in to GitHub": "Zaloguj się w witrynie GitHub", + "Failed to load repositories": "Nie można załadować repozytoriów", + "Filter repositories": "Filtrowanie repozytoriów", + "No repositories match your filter": "Żadne repozytoria nie pasują do filtru", + "No repositories found": "Nie znaleziono żadnych repozytoriów", + "less than a minute": "mniej niż minutę", + "{{count}} min_one": "{{count}} min", + "{{count}} min_few": "", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}} min", + "Up next": "Następne", + "PR {{number}}": "Żądanie ściągnięcia {{number}}", + "Checking merge status...": "Trwa sprawdzanie stanu scalania...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Operacja trwa dłużej niż oczekiwano. Sprawdź żądanie ściągnięcia w witrynie GitHub, aby uzyskać najnowszy stan.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Może to być problem z uprawnieniami. Sprawdź uprawnienia aplikacji GitHub i spróbuj ponownie.", "This PR was closed without merging. You may need to restart the process.": "To żądanie ściągnięcia zostało zamknięte bez scalania. Może być konieczne ponowne uruchomienie procesu.", + "Review on GitHub": "Przejrzyj w usłudze GitHub", + "Agent is working": "Agent działa", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Agent kodowania funkcji Copilot analizuje repozytorium i generuje żądanie ściągnięcia wdrożenia za pomocą pliku Dockerfile, manifestów platformy Kubernetes i przepływu pracy funkcji GitHub Actions.", + "Issue {{number}}": "Problem {{number}}", + "Waiting for agent workflow to start...": "Trwa oczekiwanie na uruchomienie przepływu pracy agenta...", "This typically takes 10–25 minutes.": "Zwykle zajmuje to 10–25 minut.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Łączna liczba zasobników", - "Track agent progress": "Śledzenie postępu agenta", - "Trigger": "Wyzwalacz", - "Trigger Copilot Agent": "Wyzwalanie agenta funkcji Copilot", - "Triggering...": "Trwa wyzwalanie...", + "Pipeline configured": "Skonfigurowano potok", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Potok ciągłej integracji/ciągłego wdrażania dla repozytorium {{repoFullName}} jest gotowy. Wyzwalanie wdrożeń z poziomu karty Wdrażanie.", + "Setup PR reviewed and merged": "Przejrzano i scalono żądanie ściągnięcia konfiguracji", + "Copilot agent reviewed your repo and generated deployment PR": "Agent funkcji Copilot przejrzał Twoje repozytorium i wygenerował żądanie ściągnięcia wdrożenia", + "Deployment PR reviewed and merged": "Żądanie ściągnięcia wdrożenia zostało przejrzane i scalone", + "View deployment": "Wyświetl wdrożenie", + "You can collapse this panel. Progress is saved and will resume when you return.": "Możesz zwinąć ten panel. Postęp jest zapisywany i zostanie wznowiony po powrocie.", + "Creating setup PR...": "Trwa tworzenie żądania ściągnięcia konfiguracji...", + "The agent is creating the setup PR to enable the Copilot agent.": "Agent tworzy żądanie ściągnięcia konfiguracji w celu włączenia agenta funkcji Copilot.", + "Setup PR Created": "Utworzono żądanie ściągnięcia konfiguracji", + "Review and merge the setup PR to enable the Copilot agent.": "Przejrzyj i scal żądanie ściągnięcia konfiguracji, aby włączyć agenta funkcji Copilot.", + "Setting up Copilot agent...": "Trwa konfigurowanie agenta funkcji Copilot...", + "Creating the trigger issue for the Copilot coding agent.": "Tworzenie problemu z wyzwalaczem dla agenta kodowania funkcji Copilot.", + "Deployment PR Ready": "Żądanie ściągnięcia wdrożenia jest gotowe", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agent utworzył żądanie ściągnięcia wdrożenia. Przejrzyj wygenerowane pliki i scal, aby uruchomić potok wdrażania.", + "Copilot agent": "Agent funkcji Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Po scaleniu agent funkcji Copilot przeanalizuje repozytorium i utworzy żądanie ściągnięcia wdrożenia", + "Deployment PR": "Żądanie ściągnięcia wdrożenia", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Po utworzeniu żądania ściągnięcia wdrożenia przez agenta przejrzyj wygenerowane pliki i scal, aby uruchomić potok wdrażania", + "Connect Source": "Łączenie źródła", + "Set up Copilot Agent": "Konfigurowanie agenta funkcji Copilot", + "Review & Merge": "Przejrzyj i scal", + "Collapse panel": "Zwiń panel", + "Keep Going": "Kontynuuj", + "Discard": "Odrzuć", + "Canceling will discard your pipeline progress. Are you sure?": "Anulowanie spowoduje odrzucenie postępu potoku. Czy na pewno?", + "Ensuring resource group exists...": "Trwa sprawdzanie, czy grupa zasobów istnieje...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Trwa konfigurowanie poświadczeń federacyjnych...", + "Workload identity configured": "Skonfigurowano tożsamość obciążenia", + "Configure Workload Identity": "Konfigurowanie tożsamości obciążenia", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Zostaną utworzone następujące zasoby platformy Azure, aby umożliwić uwierzytelnianie potoku funkcji GitHub Actions za pomocą klastra usługi AKS:", + "Managed Identity": "Tożsamość zarządzana", + "in resource group": "w grupie zasobów", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Poświadczenie federacyjne", + "OIDC trust for": "Zaufanie OIDC dla", + "branch": "rozgałęzienie", + "Resource group where the managed identity will be created": "Grupa zasobów, w której zostanie utworzona tożsamość zarządzana", + "Workload identity configured successfully.": "Tożsamość obciążenia została pomyślnie skonfigurowana.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Może to być problem z uprawnieniami. Sprawdź uprawnienia aplikacji GitHub i spróbuj ponownie.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Operacja może być nadal uruchomiona w usłudze GitHub. Sprawdź powyższy link, aby uzyskać najnowszy stan.", "Try again, or check GitHub for details.": "Spróbuj ponownie lub sprawdź usługę GitHub, aby uzyskać szczegółowe informacje.", - "Type": "Typ", + "Initializing...": "Trwa inicjowanie...", + "Checking repository readiness...": "Trwa sprawdzanie gotowości repozytorium...", + "Loading configuration...": "Trwa ładowanie konfiguracji...", "Unknown error": "Nieznany błąd", - "unnamed": "bez nazwy", - "Up next": "Następne", - "Update": "Aktualizuj", - "Updating": "Aktualizowanie", - "Updating local settings": "Aktualizowanie ustawień lokalnych", - "Upload files": "Przekaż pliki", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Użyj funkcji ClusterIP. Najlepsze dla usług, które są osiągalne tylko w klastrze.", - "Use custom service port": "Użyj niestandardowego portu usługi", - "Use existing manifests for full control": "Użyj istniejących manifestów, aby uzyskać pełną kontrolę", - "User assignment completed with errors": "Przypisanie użytkownika zostało ukończone z błędami", - "Validation failed": "Niepowodzenie weryfikacji", - "Value": "Wartość", - "View deployment": "Wyświetl wdrożenie", - "View on GitHub": "Wyświetl w usłudze GitHub", - "View run on GitHub": "Wyświetl przebieg w usłudze GitHub", - "View workflow run": "Wyświetl przebieg przepływu pracy", - "VPA (Vertical Pod Autoscaler)": "VPA (automatyczne skalowanie zasobników pionowych)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Trwa oczekiwanie na uruchomienie przepływu pracy agenta...", - "Waiting for browser authorization...": "Trwa oczekiwanie na autoryzację przeglądarki...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Trwa oczekiwanie na ukończenie logowania... (pozostałe minuty {{minutes}})", - "Waiting for namespace to be created": "Oczekiwanie na utworzenie przestrzeni nazw", - "Waiting for namespace to propagate": "Oczekiwanie na propagację przestrzeni nazw", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Ostrzeżenie: tej akcji nie można cofnąć. Wszystkie zasoby w tych przestrzeniach nazw zostaną trwale usunięte.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Gdy sonda zakończy się niepowodzeniem, platforma Kubernetes spróbuje wykonać tę próbę wiele razy przed rezygnacją i ponownym uruchomieniem kontenera.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Jeśli sonda nie powiedzie się, platforma Kubernetes spróbuje wykonać tę próbę wielokrotnie przed rezygnacją. W przypadku sond uruchamiania określa to czas oczekiwania przed ponownym uruchomieniem.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Jeśli sonda nie powiedzie się, platforma Kubernetes spróbuje wykonać tę próbę wiele razy przed oznaczeniem zasobnika jako niegotowego.", + "Trigger Copilot Agent": "Wyzwalanie agenta funkcji Copilot", + "Create Setup PR": "Tworzenie żądania ściągnięcia konfiguracji", + "Failed to fetch deployment status": "Nie można pobrać stanu wdrożenia", + "Failed to fetch pod status": "Nie można pobrać stanu zasobnika", + "Failed to fetch service status": "Nie można pobrać stanu usługi", + "Failed to monitor deployment health": "Nie można monitorować stanu kondycji wdrożenia", + "Convert Namespaces to AKS Projects": "Konwertuj przestrzenie nazw na projekty usługi AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Następujące przestrzenie nazw zostaną przekonwertowane na projekty pulpitu usługi AKS, dodając następujące etykiety:", + "managed namespaces only": "tylko zarządzane przestrzenie nazw", + "Namespaces to convert:": "Przestrzenie nazw do przekonwertowania:", + "Already AKS projects (will import directly):": "Są już projekty usługi AKS (zostaną zaimportowane bezpośrednio):", + "Converting": "Konwertowanie", + "Confirm & Import": "Potwierdź i zaimportuj", + "Please select at least one namespace to import": "Wybierz co najmniej jedną przestrzeń nazw do zaimportowania", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Klaster {{clusterName}} musi zostać zarejestrowany przed zaimportowaniem zwykłych przestrzeni nazw. Najpierw zaimportuj zarządzaną przestrzeń nazw z tego klastra.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Scalanie klastra {{clusterName}} (liczba przestrzeni nazw: {{count}})", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_few": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Scalanie klastra {{clusterName}} (liczba przestrzeni nazw: {{count}})", + "Failed to merge cluster: {{message}}": "Nie można scalić klastra: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Trwa konwertowanie {{name}} na projekt usługi AKS (może to chwilę potrwać)...", + "Failed to convert namespace: {{message}}": "Nie można przekonwertować przestrzeni nazw: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importowanie {{current}} : {{total}} {{name}} z {{clusterName}}", + "Project '{{name}}' successfully imported": "Projekt „{{name}}” został pomyślnie zaimportowany", + "Namespace '{{name}}' converted and imported as project": "Przestrzeń nazw „{{name}}” została przekonwertowana i zaimportowana jako projekt", + "Successfully merged {{count}} cluster(s)_one": "Pomyślnie scalono następującą liczbę klastrów: {{count}}", + "Successfully merged {{count}} cluster(s)_few": "", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "Pomyślnie scalono następującą liczbę klastrów: {{count}}", "with {{count}} project(s)_one": "z {{count}} projektami", + "with {{count}} project(s)_few": "", + "with {{count}} project(s)_many": "", "with {{count}} project(s)_other": "z {{count}} projektami", - "with the following parameters:": "z następującymi parametrami:", - "Wizard steps": "Kroki kreatora", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Wysyłanie przepływu pracy zostało wyzwolone pomyślnie. Sprawdź, czy funkcja GitHub Actions pod kątem postępów.", - "workflow on": "przepływ pracy włączony", - "Workflows": "Przepływy pracy", - "Workload identity configured": "Skonfigurowano tożsamość obciążenia", - "Workload identity configured successfully.": "Tożsamość obciążenia została pomyślnie skonfigurowana.", - "Workloads": "Pakiety robocze", + "{{count}} failed._one": "Zakończone niepowodzeniem: {{count}}.", + "{{count}} failed._few": "", + "{{count}} failed._many": "", + "{{count}} failed._other": "Zakończone niepowodzeniem: {{count}}.", + "Failed to import any projects. See details below.": "Nie można zaimportować żadnych projektów. Zobacz szczegóły poniżej.", + "Import AKS Projects": "Importowanie projektów usługi AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importuj istniejące zarządzane przestrzenie nazw i zwykłe przestrzenie nazw jako projekty. Przestrzenie nazw, które nie są jeszcze projektami pulpitu usługi AKS, zostaną przekonwertowane przez dodanie wymaganej etykiety projektu.", + "Select Namespaces to Import": "Wybierz przestrzenie nazw do zaimportowania", + "{{count}} selected_one": "Wybrano: {{count}}", + "{{count}} selected_few": "", + "{{count}} selected_many": "", + "{{count}} selected_other": "Wybrano: {{count}}", + "Select All": "Zaznacz wszystkie", + "Deselect All": "Usuń zaznaczenie wszystkich", + "AKS Managed": "Zarządzane przez usługę AKS", + "Regular": "Standardowy", + "AKS Project?": "Projekt AKS?", "Yes": "Tak", - "You can collapse this panel. Progress is saved and will resume when you return.": "Możesz zwinąć ten panel. Postęp jest zapisywany i zostanie wznowiony po powrocie.", - "You need to be logged in to Azure to register AKS clusters.": "Aby zarejestrować klastry usługi AKS, musisz zalogować się na platformie Azure.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Projekt usługi AKS „{{projectName}}” został utworzony i jest gotowy do użycia.", - "Your project \"{{projectName}}\" is ready to use.": "Projekt „{{projectName}}” jest gotowy do użycia." + "No": "Nie", + "Importing": "Importowanie", + "Import Selected Projects": "Importuj wybrane projekty", + "Failed to fetch managed namespaces": "Nie można pobrać zarządzanych przestrzeni nazw", + "Failed to fetch managed namespace details": "Nie można pobrać szczegółów zarządzanej przestrzeni nazw", + "Failed to update managed namespace": "Nie można zaktualizować zarządzanej przestrzeni nazw", + "Updating": "Aktualizowanie", + "Update": "Aktualizuj", + "AKS desktop logo": "Logo pulpitu usługi AKS", + "No Deployments Found": "Nie odnaleziono wdrożeń", + "There are no deployments in this project namespace yet.": "W tej przestrzeni nazw projektu nie ma jeszcze żadnych wdrożeń.", + "Deploy an application to view logs.": "Wdróż aplikację, aby wyświetlić dzienniki.", + "Metrics": "Metryki", + "CPU Usage": "Użycie procesora", + "Memory Usage": "Użycie pamięci", + "Request Rate": "Liczba żądań", + "Error Rate": "Częstotliwość błędów", + "Metrics refreshed every 30 seconds": "Metryki odświeżane co 30 sekund", + "Select a deployment to view metrics": "Wybierz wdrożenie, aby wyświetlić metryki", + "Metrics Unavailable": "Metryki niedostępne", + "Application Metrics": "Metryki aplikacji", + "Request & error rate": "Współczynnik błędów żądań", + "No data available": "Brak dostępnych danych", + "Response Time": "Czas odpowiedzi", + "Memory utilization": "Użycie pamięci", + "Network I/O": "We/Wy sieci", + "Deploy an application to start viewing metrics.": "Wdróż aplikację, aby rozpocząć wyświetlanie metryk.", + "Please select a deployment to view metrics": "Wybierz wdrożenie, aby wyświetlić metryki", + "Project Status": "Stan projektu", + "Total Pods": "Łączna liczba zasobników", + "Application Health": "Kondycja aplikacji", + "Loading metrics": "Ładowanie metryk", + "Resource Usage": "Użycie zasobu", + "Avg Response Time": "Średni czas odpowiedzi", + "No response time data available": "Brak dostępnych danych czasu odpowiedzi", + "Absolute usage": "Użycie bezwzględne", + "Network In": "Ruch przychodzący w sieci", + "Network Out": "Ruch wychodzący w sieci", + "Pod Details": "Szczegóły zasobnika", + "Pod Name": "Nazwa zasobnika", + "Restarts": "Ponowne uruchamia", + "No pods found for deployment \"{{name}}\"": "Nie znaleziono zasobników dla wdrożenia „{{name}}”", + "Preview Features": "Funkcje w wersji zapoznawczej", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Włącz lub wyłącz funkcje, które są nadal opracowywane. Funkcje w wersji zapoznawczej mogą ulec zmianie lub zostać usunięte w przyszłych wersjach.", + "GitHub Pipelines": "Potoki usługi GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Włącz potoki wdrażania oparte na usłudze GitHub dla projektów usługi AKS.", + "Loading scaling metrics from Prometheus": "Ładowanie metryk skalowania z rozwiązania Prometheus", + "Scaling Chart Unavailable": "Wykres skalowania jest niedostępny", + "No scaling data available": "Brak dostępnych danych skalowania", + "Edit HPA Configuration": "Edytuj konfigurację HPA", + "Edit Manual Scaling Configuration": "Edytuj konfigurację ręcznego skalowania", + "Minimum Replicas": "Minimalna liczba replik", + "Maximum Replicas": "Maksymalna liczba replik", + "Target CPU Utilization (%)": "Docelowe wykorzystanie procesora CPU (%)", + "Number of Replicas": "Liczba replik", + "Set the desired number of pod replicas for this deployment": "Ustaw żądaną liczbę replik zasobników dla tego wdrożenia", + "Save": "Zapisz", + "Scaling Mode": "Tryb skalowania", + "Current Replicas": "Bieżące repliki", + "Desired Replicas": "Pożądane repliki", + "Configured Replicas": "Skonfigurowane repliki", + "Replica Bounds": "Granice repliki", + "Available Replicas": "Dostępne repliki", + "CPU Usage / Target": "Użycie procesora CPU/cel", + "Scaling": "Skalowanie", + "Select a deployment to view scaling metrics": "Wybierz wdrożenie, aby wyświetlić metryki skalowania", + "Scaling Overview": "Omówienie skalowania", + "Edit Configuration": "Edytuj konfigurację", + "Scaling History (Last 24 Hours)": "Historia skalowania (ostatnie 24 godziny)", + "Copied!": "Skopiowano!", + "Copy": "Kopiuj", + "Copy to clipboard": "Kopiuj do schowka", + "No deployments found": "Nie znaleziono żadnych wdrożeń", + "Select Deployment": "Wybierz wdrożenie", + "Loading deployments": "Ładowanie wdrożeń", + "No cluster is associated with this project.": "Z tym projektem nie jest skojarzony żaden klaster.", + "Please sign in to Azure to continue.": "Zaloguj się na platformie Azure, aby kontynuować.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Brak wymaganego kontekstu platformy Azure. Upewnij się, że zalogowano się, a klaster jest skojarzony z prawidłową subskrypcją, grupą zasobów i dzierżawą.", + "Failed to load Azure context": "Nie można załadować kontekstu platformy Azure", + "just now": "teraz", + "{{seconds}}s ago": "{{seconds}}s temu", + "{{minutes}} min ago": "{{minutes}} min temu", + "{{hours}}h ago": "{{hours}} godz. temu", + "{{days}}d ago": "{{days}} dni temu", + "{{weeks}}w ago": "{{weeks}} tyg. temu" } diff --git a/plugins/aks-desktop/locales/pt-BR/translation.json b/plugins/aks-desktop/locales/pt-BR/translation.json index f95f59429..4d473c562 100644 --- a/plugins/aks-desktop/locales/pt-BR/translation.json +++ b/plugins/aks-desktop/locales/pt-BR/translation.json @@ -1,629 +1,682 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"Função de Usuário do Cluster do AKS\" com escopo para o grupo de recursos", - "(already enabled)": "(já habilitado)", + "Failed to load subscriptions": "Falha ao carregar as assinaturas", + "Failed to load AKS clusters": "Falha ao carregar os clusters do\u00a0AKS", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster '{{cluster}}' mesclado com êxito\u00a0no kubeconfig", + "Failed to register cluster: {{message}}": "Falha\u00a0ao registrar o cluster: {{message}}", + "Register AKS Cluster": "Registrar Cluster do AKS", + "Checking authentication status": "Verificando status\u00a0de autenticação", + "You need to be logged in to Azure to register AKS clusters.": "Você precisa estar conectado ao Azure para registrar clusters do AKS.", + "Subscription": "Assinatura", + "Select an Azure subscription": "Selecionar uma assinatura do\u00a0Azure", + "Loading subscriptions": "Carregando assinaturas", + "Loading AKS clusters": "Carregando clusters do\u00a0AKS", + "No AKS clusters found in this subscription.": "Nenhum cluster do AKS encontrado nessa assinatura.", + "AKS Cluster": "Cluster do AKS", + "Select an AKS cluster": "Selecionar um cluster do AKS", + "Selected Cluster Details": "Detalhes do Cluster Selecionado", + "Name": "Nome", + "Resource Group": "Grupo de Recursos", + "Location": "Localização", + "Kubernetes Version": "Versão do Kubernetes", + "Done": "Concluído", + "Cancel": "Cancelar", + "Registering": "Registrando", + "Register Cluster": "Registrar Cluster", + "Initiating Azure login": "Iniciando logon\u00a0no Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Conclua a autenticação no navegador. Esta janela será redirecionada automaticamente quando o\u00a0logon for concluído.", + "Login successful! Redirecting": "Logon bem-sucedido! Redirecionando", + "Login timeout. Please try again.": "Tempo limite de\u00a0logon. Tente novamente.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Aguardando conclusão do logon... ({{minutes}} minutos restantes)", + "Failed to initiate login: {{message}}": "Falha ao iniciar o logon: {{message}}", + "Azure Authentication": "Autenticação do\u00a0Azure", + "Sign in with your Azure account to manage AKS clusters and resources": "Entre com sua conta do Azure para gerenciar clusters e recursos do AKS", + "Sign in with Azure": "Entrar com o Azure", + "Loading Azure account information": "Carregando dados\u00a0da conta Azure", + "Back": "Voltar", + "Azure Account": "Conta do Azure", + "Logged in as": "Conectado como", + "Add Cluster from Azure": "Adicionar Cluster do\u00a0Azure", + "Logging out": "Saindo", + "Log out": "Fazer logoff", + "Azure CLI/aks-preview requirements not met": "Requisitos da\u00a0CLI do Azure/aks-preview não atendidos", + "Dismiss": "Ignorar", + "Configure Pipeline": "Configurar Pipeline", + "Loading Azure context...": "Carregando contexto do Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Acesso somente leitura à maioria dos objetos em um namespace. Não é possível exibir funções, associações de função ou Segredos.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Acesso de leitura/gravação à maioria dos objetos em um namespace. Não é possível exibir ou modificar funções ou associações de função. Pode acessar Segredos e executar Pods como qualquer ServiceAccount no namespace.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Acesso de leitura/gravação à maioria dos recursos em um namespace. Pode criar funções e associações de função dentro do namespace. Não é possível gravar na cota de recursos ou no próprio namespace.", + "Access": "Acessar", + "Assign permissions to users who need access to your namespace": "Atribua permissões aos usuários que precisam de\u00a0acesso ao namespace", + "Assignee": "Destinatário", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Função", + "Remove assignee": "Remover destinatário", + "Add assignee": "Adicionar\u00a0destinatário", + "Only clusters with Azure Entra ID authentication are shown.": "Somente os clusters com a autenticação do Entra ID do Azure são mostrados.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} cluster(s) oculto(s) — nenhum Entra ID do Azure", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} cluster(s) oculto(s) — nenhum Entra ID do Azure", + "No eligible clusters found in this subscription.": "Nenhum cluster qualificado encontrado nessa assinatura.", "{{count}} eligible cluster(s) found._one": "{{count}} cluster(s) qualificado(s) encontrado(s).", + "{{count}} eligible cluster(s) found._many": "", "{{count}} eligible cluster(s) found._other": "{{count}} cluster(s) qualificado(s) encontrado(s).", - "{{count}} failed._one": "Falha em {{count}}.", - "{{count}} failed._other": "Falha em {{count}}.", - "{{count}} min_one": "{{count}} min", - "{{count}} min_other": "{{count}} min", - "{{count}} selected_one": "{{count}} selecionado", - "{{count}} selected_other": "{{count}} selecionados", - "{{days}}d ago": "{{days}} dia(s) atrás", - "{{hours}}h ago": "Há {{hours}} hora(s)", - "{{minutes}} min ago": "há {{minutes}} min", - "{{seconds}}s ago": "Há {{seconds}} s", - "{{weeks}}w ago": "Há {{weeks}} semanas", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Um cluster deve ser selecionado", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Um novo namespace será criado no cluster com rótulos de projeto aplicados. Ele aparecerá na lista de projetos imediatamente.", - "Absolute usage": "Uso absoluto", - "Access": "Acessar", - "Access Control ({{count}} assignee)_one": "Controle de Acesso ({{count}} destinatário)", - "Access Control ({{count}} assignee)_other": "Controle de Acesso ({{count}} destinatários)", - "Actions": "Ações", - "Add assignee": "Adicionar destinatário", - "Add Cluster from Azure": "Adicionar Cluster do Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Adicione um ou mais manifestos do Kubernetes. Faça upload de arquivos para preencher o editor ou cole/edite diretamente abaixo.", - "Add variable": "Adicionar variável", - "Advanced": "Avançado", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Depois de mesclar, o agente do Copilot analisará seu repositório e criará uma PR de implantação", - "Agent is working": "O agente está funcionando", - "AKS Cluster": "Cluster do AKS", - "AKS desktop logo": "Logotipo da área de trabalho do AKS", - "AKS Managed": "Gerenciado pelo AKS", - "AKS Preview Extension installed successfully!": "Extensão de Visualização do AKS instalada com êxito!", - "AKS Preview Extension Required": "Extensão de Visualização do AKS Necessária", - "AKS Project?": "Projeto do AKS?", - "All selected addons have been enabled successfully.": "Todos os complementos selecionados foram habilitados com sucesso.", - "All verifications completed successfully!": "Todas as verificações foram concluídas com êxito!", - "Allow all traffic": "Permitir todo o tráfego", - "Allow privilege escalation": "Permitir escalonamento de privilégios", - "Allow traffic within same namespace": "Permitir tráfego dentro do mesmo namespace", - "Already AKS projects (will import directly):": "Projetos do AKS já (serão importados diretamente):", - "Also delete the namespaces (this will remove all resources within them)": "Excluir também os namespaces (isso removerá todos os recursos dentro deles)", - "Another project already exists with same name. Please choose a different name.": "Já existe outro projeto com o mesmo nome. Escolha um nome diferente.", - "Application Health": "Integridade do aplicativo", - "Application Metrics": "Métricas do Aplicativo", - "Application name": "Nome do aplicativo", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} recursos aplicados, mas {{failed}} falharam:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} recursos aplicados com êxito.", - "Applied {{count}} resource(s) successfully._other": "{{count}} recursos aplicados com êxito.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Tem certeza de que deseja excluir o projeto \"{{projectId}}\"?", - "Assign permissions to users who need access to your namespace": "Atribua permissões aos usuários que precisam de acesso ao namespace", - "Assignee": "Destinatário", - "Assigning AKS Cluster User Role...": "Atribuindo Função de Usuário de Cluster do AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorize a Área de Trabalho do AKS a criar pipelines de implantação em seu repositório.", - "Auto-generated Deployment and Service manifests": "Manifestações de implantação e serviço geradas automaticamente", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Dimensiona automaticamente o número de pods com base na utilização da CPU. A HPA aumentará os pods quando o uso da CPU exceder o destino e diminuirá quando estiver abaixo.", - "Available Replicas": "Réplicas disponíveis", - "Avg Response Time": "Tempo médio de resposta", - "Azure Account": "Conta do Azure", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Autenticação do Azure", - "Azure CLI/aks-preview requirements not met": "Requisitos da CLI do Azure/aks-preview não atendidos", - "Azure Monitor Metrics (Managed Prometheus)": "Métricas do Azure Monitor (Prometheus Gerenciado)", - "Back": "Voltar", - "Basics": "Noções Básicas", - "branch": "ramificação", - "Bring your own Kubernetes manifests to deploy": "Traga seus próprios manifestos do Kubernetes para implantar", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Por padrão, as investigações usam HTTP GET no caminho raiz com valores padrão adequados. Habilite esta opção para personalizar as configurações de investigação.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Por padrão, a porta do serviço corresponde à porta de destino. Habilite isso para usar uma porta diferente para o serviço.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Por padrão, isso removerá o namespace gerenciado pelo Azure e os rótulos de projeto dos seguintes namespaces:", - "Cancel": "Cancelar", - "Canceling will discard your pipeline progress. Are you sure?": "Cancelar descartará o progresso do pipeline. Tem certeza?", - "Cancelled deletion of project {{ projectId }}.": "Exclusão do projeto {{ projectId }} cancelada.", - "Checking authentication status": "Verificando status de autenticação", - "Checking for existing identity...": "Verificando a identidade existente...", - "Checking if another project exists with same name": "Verificando se já existe outro projeto com o mesmo nome", - "Checking merge status...": "Verificando o status da mesclagem...", - "Checking repository readiness...": "Verificando a preparação do repositório...", - "Checking...": "Verificando...", - "Choose a source for your deployment (container image, repo, etc.).": "Escolha uma origem para sua implantação (imagem de contêiner, repositório etc.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "O pipeline de CI/CD para {{repoFullName}} está pronto. Dispare implantações na guia Implantar.", - "Clear editor": "Limpar editor", - "Close": "Fechar", + "Cluster is currently updating. Deployment may fail.": "O\u00a0cluster está sendo atualizado. A implantação pode falhar.", + "Cluster is being deleted. Cannot deploy to this cluster.": "O cluster está sendo excluído. Não\u00a0é possível implantar neste cluster.", + "Cluster is still being created. Please wait until creation completes.": "O cluster ainda está sendo criado. Aguarde até que\u00a0a criação seja concluída.", + "Cluster is in a failed state. Please check Azure portal.": "O cluster está\u00a0em estado de falha. Verifique o portal do Azure.", + "Cluster is stopped. Please start the cluster before deploying.": "O cluster está parado. Inicie\u00a0o cluster antes de implantar.", + "Cluster is deallocated. Please start the cluster before deploying.": "O cluster está desalocado. Inicie\u00a0o cluster antes de implantar.", + "AKS Preview Extension Required": "Extensão de Visualização do\u00a0AKS Necessária", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "A extensão aks-preview é necessária para criar namespaces gerenciados. Instale-a para continuar.", + "Installing": "Instalando", + "Install Extension": "Instalar Extensão", + "AKS Preview Extension installed successfully!": "Extensão de Visualização do\u00a0AKS instalada com êxito!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "O recurso ManagedNamespacePreview deve ser registrado para criar namespaces gerenciados.", + "Current state": "Estado atual", + "Please register it to continue.": "Registre para continuar.", + "Register ManagedNamespacePreview Feature": "Registrar Recurso ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "Recurso ManagedNamespacePreview registrado com\u00a0êxito!", + "Project Name": "Nome do Projeto", + "Checking if another project exists with same name": "Verificando se\u00a0já existe outro projeto com o mesmo nome", + "Another project already exists with same name. Please choose a different name.": "Já existe outro projeto com\u00a0o mesmo nome. Escolha um nome diferente.", + "Project name is available": "O nome do projeto está disponível", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "O nome do projeto deve conter apenas letras minúsculas, números e hifens (sem espaços)", + "Project Description": "Descrição do Projeto", + "Enter project description": "Insira\u00a0a descrição do projeto", + "Select a subscription": "Selecione uma assinatura", + "Search subscriptions": "Pesquisar assinaturas", + "No subscriptions found": "Nenhuma assinatura encontrada", + "Retry": "Repetir", "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster '{{cluster}}' mesclado com êxito no kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "O cluster {{clusterName}} deve ser registrado antes de importar namespaces regulares. Importe um namespace gerenciado deste cluster primeiro.", + "Please select a subscription first": "Primeiro, selecione uma assinatura", + "Loading clusters": "Carregando clusters", + "Select a cluster": "Selecionar um cluster", + "Search clusters": "Pesquisar clusters", + "No clusters with Azure Entra ID authentication found for this subscription": "Nenhum cluster com a autenticação do Entra ID do Azure foi encontrado para essa assinatura", + "Cluster Not Ready": "Cluster não\u00a0está pronto", + "Refreshing": "Atualizando", + "Refresh": "Atualizar", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "O cluster selecionado está ausente do kubeconfig. Registre-o antes de continuar.", + "Registering cluster": "Registrando cluster", + "Wizard steps": "Etapas do assistente", + "Azure Monitor Metrics (Managed Prometheus)": "Métricas do Azure Monitor (Prometheus Gerenciado)", + "KEDA (Event-Driven Autoscaling)": "KEDA (Dimensionamento Automático Controlado por Eventos)", + "VPA (Vertical Pod Autoscaler)": "VPA (Dimensionador Automático de Pod Vertical)", + "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "A configuração está demorando mais do que o esperado. Verifique o portal do Azure o status atual do cluster.", + "Failed to enable addons": "Falha ao habilitar complementos", + "Failed to enable addon: {{error}}": "Falha ao habilitar o complemento: {{error}}", "Cluster Configuration": "Configuração de cluster", - "Cluster is being deleted. Cannot deploy to this cluster.": "O cluster está sendo excluído. Não é possível implantar neste cluster.", - "Cluster is currently updating. Deployment may fail.": "O cluster está sendo atualizado. A implantação pode falhar.", - "Cluster is deallocated. Please start the cluster before deploying.": "O cluster está desalocado. Inicie o cluster antes de implantar.", - "Cluster is in a failed state. Please check Azure portal.": "O cluster está em estado de falha. Verifique o portal do Azure.", - "Cluster is still being created. Please wait until creation completes.": "O cluster ainda está sendo criado. Aguarde até que a criação seja concluída.", - "Cluster is stopped. Please start the cluster before deploying.": "O cluster está parado. Inicie o cluster antes de implantar.", - "Cluster Not Ready": "Cluster não está pronto", - "Collapse panel": "Recolher painel", - "Complete authorization on your browser screen": "Concluir autorização na tela do navegador", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Conclua a instalação no navegador. Isso será atualizado automaticamente depois que o aplicativo for instalado no {{repoName}}.", - "Compute Quota": "Cota de Computação", - "Configuration Complete": "Configuração concluída", + "(already enabled)": "(já habilitado)", + "The following addons can be enabled on this cluster:": "Os seguintes complementos podem ser habilitados neste cluster:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "O mecanismo de política de rede não pode ser alterado após a criação do cluster. Criar um novo cluster com", + "for full network policy support.": "para suporte completo à política de rede.", + "Enabling these addons may incur additional Azure costs.": "Habilitar esses complementos pode incorrer em custos adicionais do Azure.", "Configuration Error": "Erro de Configuração", - "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "A configuração está demorando mais do que o esperado. Verifique o portal do Azure o status atual do cluster.", - "Configure": "Configurar", - "Configure Cluster": "Configurar o Cluster", - "Configure Container Deployment": "Configurar Implantação de Contêiner", - "Configure container health probes.": "Configurar investigações de integridade do contêiner.", - "Configure Pipeline": "Configurar Pipeline", - "Configure security context settings for the container.": "Configurar as configurações de contexto de segurança para o contêiner.", - "Configure Workload Identity": "Configurar Identidade de Carga de Trabalho", - "Configured Replicas": "Réplicas Configuradas", + "Configuration Complete": "Configuração concluída", + "All selected addons have been enabled successfully.": "Todos os complementos selecionados foram habilitados com sucesso.", "Configuring cluster... This may take a few minutes.": "Configurando cluster... Isso pode levar alguns minutos.", - "Configuring federated credential...": "Configurando credencial federada...", + "Enabling Addons...": "Habilitando Complementos...", "Configuring...": "Configurando...", - "Confirm & Import": "Confirmar e Importar", - "Connect": "Conectar", - "Connect GitHub": "Conectar o GitHub", - "Connect Source": "Conectar origem", - "Connect to GitHub": "Conectar-se ao GitHub", - "Connected": "Conectado", - "Connected to '{{username}}'.": "Conectado a \"{{username}}\".", - "Connecting to GitHub...": "Conectando-se ao GitHub...", - "Connecting...": "Conectando-se...", - "Container image": "Imagem do contêiner", - "Container Image": "Imagem de contêiner", - "Contents": "Conteúdo", - "Continue": "Continuar", - "Controls whether a process can gain more privileges than its parent process.": "Controla se um processo pode obter mais privilégios do que seu processo pai.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controla se um processo pode obter mais privilégios do que seu processo pai. Desabilitar isso (recomendado) impede ataques de escalonamento de privilégio.", - "Convert Namespaces to AKS Projects": "Converter namespaces em projetos do AKS", - "Converting": "Convertendo", - "Converting {{name}} to AKS project (this may take a moment)...": "Convertendo {{name}} em projeto do AKS (isso pode levar algum tempo)...", - "Copied!": "Copiado!", - "Copilot agent": "Agente do Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "O agente do Copilot examinou seu repositório e gerou a PR de implantação", - "Copy": "Copiar", - "Copy to clipboard": "Copiar para a área de transferência", - "CPU": "CPU", - "CPU limit": "limite de CPU", - "CPU Limits": "Limites de CPU", - "CPU request": "Solicitação de CPU", + "Configure Cluster": "Configurar o Cluster", + "Compute Quota": "Cota\u00a0de Computação", + "Set quota limits to prevent overuse and maintain cluster stability": "Defina limites de cota para evitar o uso excessivo e manter a estabilidade do cluster", + "CPU Resources": "Recursos de\u00a0CPU", "CPU Requests": "Solicitações de CPU", - "CPU Resources": "Recursos de CPU", - "CPU Usage": "Uso da CPU", - "CPU Usage / Target": "Uso/Meta da CPU", - "Create a new namespace on an existing cluster and set it up as a project": "Criar um novo namespace em um cluster existente e configurá-lo como um projeto", - "Create Application": "Criar aplicativo", - "Create deployment PRs": "Criar PRs de implantação", - "Create Namespace": "Criar Namespace", - "Create New Namespace": "Criar Novo Namespace", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU mínima garantida (1000 m = 1 núcleo de CPU)", + "CPU Limits": "Limites de CPU", + "Maximum CPU allowed (1000m = 1 CPU core)": "Máximo de\u00a0CPU permitido (1000m = 1 núcleo de CPU)", + "Memory Resources": "Recursos de\u00a0memória", + "Memory Requests": "Solicitações de memória", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memória mínima garantida (1024 MiB = 1 GiB)", + "Memory Limits": "Limites de memória", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Memória máxima permitida (1024 MiB = 1 GiB)", + "Basics": "Noções Básicas", + "Networking Policies": "Políticas de Rede", + "Review": "Revisão", + "New Project": "Novo Projeto", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Instalar e configurar um novo projeto no Serviço de Kubernetes do Azure (AKS)", + "Creating Project": "Criando\u00a0o Projeto", "Create Project": "Criar projeto", - "Create Setup PR": "Criar PR de Instalação", - "Create setup workflow in .github/workflows/": "Criar fluxo de trabalho de instalação no .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Cria um LoadBalancer para expor o aplicativo à Internet.", - "Creating managed identity...": "Criando identidade gerenciada...", + "Loading": "Carregando", + "Next": "Avançar", + "Project Created Successfully!": "Projeto Criado com Sucesso!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Seu projeto do AKS \"{{projectName}}\" foi criado e está pronto para uso.", + "Application name": "Nome do aplicativo", + "Enter application name": "Insira o nome do aplicativo", + "Enter a name for your first application to get started with deployment.": "Insira um nome para\u00a0o primeiro aplicativo para começar a implantação.", + "Create Application": "Criar aplicativo", + "Project Creation Failed": "Falha na Criação do Projeto", + "Set security, communication and access rules for incoming and outgoing traffic": "Definir regras de segurança, comunicação e acesso para tráfego de entrada e saída", + "Allow traffic within same namespace": "Permitir tráfego dentro do mesmo namespace", + "Allow all traffic": "Permitir todo\u00a0o tráfego", + "Deny all traffic": "Negar todo\u00a0o tráfego", + "Review Project Configuration": "Examinar a Configuração do Projeto", + "Please review all the settings before creating your AKS project": "Examine todas as configurações antes de criar seu projeto do AKS", + "Project Basics": "Noções Básicas do Projeto", + "Description": "Descrição", + "No description provided": "Nenhuma descrição fornecida", + "Ingress Policy": "Política de\u00a0entrada", + "Egress Policy": "Política de\u00a0saída", + "CPU": "CPU", + "Requests": "Solicitações", + "Limits": "Limites", + "Memory": "Memória", + "Access Control ({{count}} assignee)_one": "Controle de Acesso ({{count}} destinatário)", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Controle de Acesso ({{count}} destinatários)", + "Not specified": "Não especificado", + "Select an option": "Selecione uma opção", + "No options": "Sem opções", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Iniciando a criação do projeto", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "A criação do projeto atingiu o tempo limite após dez minutos. Verifique se o namespace foi criado e tente novamente.", + "Initiating managed namespace creation": "Iniciando a\u00a0criação do namespace gerenciado", + "Namespace creation failed: {{message}}": "Falha na criação do namespace: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Criação de namespace iniciada! Status de criação de monitoramento", + "Waiting for namespace to propagate": "Aguardando a propagação do namespace", + "Namespace status check failed: {{message}}": "Falha na verificação de status do namespace: {{message}}", + "Waiting for namespace to be created": "Aguardando a criação do namespace", + "Namespace status verification failed: {{message}}": "Falha na verificação de status do namespace: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "API de criação do namespace concluída com sucesso, prosseguindo com as atribuições de usuário", + "Namespace creation completed successfully! Adding user access": "Criação de namespace concluída com sucesso! Adicionando acesso de usuário", + "User assignment completed with errors": "Atribuição de usuário concluída com erros", + "Project creation completed successfully!": "Criação do projeto concluída com sucesso!", + "Performing final status verification": "Executando verificação de status final", + "Final status check failed: {{message}}": "A verificação final\u00a0de status falhou: {{message}}", + "Final status verification failed: {{message}}": "A verificação final\u00a0de status falhou: {{message}}", + "All verifications completed successfully!": "Todas\u00a0as verificações foram concluídas com êxito!", + "Failed to create project": "Falha ao criar projeto", + "A cluster must be selected": "Um cluster deve ser selecionado", + "Namespace name is required": "O nome do namespace é obrigatório", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "O nome do namespace deve conter apenas letras minúsculas, números e hifens e deve começar e terminar com um caractere alfanumérico", + "Namespace name must be 63 characters or fewer": "O nome do namespace deve ter 63 caracteres ou menos", "Creating namespace": "Criando o namespace", + "Updating local settings": "Atualizando configurações locais", + "Namespace created successfully!": "Namespace criado com sucesso!", + "Failed to create namespace": "Falha ao criar namespace", + "No clusters found. Register a cluster first.": "Nenhum cluster encontrado. Registre um cluster primeiro.", + "Namespace Name": "Nome do namespace", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Deve conter apenas letras minúsculas, números e hifens, começando e terminando com um caractere alfanumérico", + "The namespace will be created on the selected cluster and set up as a project": "O namespace será criado no cluster selecionado e configurado como um projeto", + "Type": "Tipo", + "Regular Kubernetes namespace": "Namespace regular do Kubernetes", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Um novo namespace será criado no cluster com rótulos de projeto aplicados. Ele aparecerá na lista de projetos imediatamente.", + "Create New Namespace": "Criar Novo Namespace", + "Create a new namespace on an existing cluster and set it up as a project": "Criar um novo namespace em um cluster existente e configurá-lo como um projeto", "Creating Namespace": "Criando Namespace", - "Creating Project": "Criando o Projeto", - "Creating setup PR...": "Criando PR de instalação...", - "Creating the trigger issue for the Copilot coding agent.": "Criando o problema de gatilho para o agente de codificação do Copilot.", - "Current Replicas": "Réplicas atuais", - "Current state": "Estado atual", - "Degraded": "Degradado", + "Namespace Creation Failed": "Falha na Criação do Namespace", + "Namespace Created Successfully!": "Namespace Criado com Sucesso!", + "Your project \"{{projectName}}\" is ready to use.": "Seu projeto \"{{projectName}}\" está pronto para uso.", + "Go To Projects": "Ir para Projetos", + "Create Namespace": "Criar Namespace", "Delete project": "Excluir projeto", "Delete Project": "Excluir Projeto", - "Delete Project & Namespaces": "Excluir Projeto e Namespaces", - "Deleted project {{ projectId }}.": "Projeto excluído {{ projectId }}.", + "Are you sure you want to delete project \"{{projectId}}\"?": "Tem certeza de\u00a0que deseja excluir o projeto \"{{projectId}}\"?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Por padrão, isso removerá o namespace gerenciado pelo Azure e\u00a0os rótulos de projeto dos seguintes namespaces:", + "Also delete the namespaces (this will remove all resources within them)": "Excluir também os namespaces (isso removerá todos\u00a0os recursos dentro deles)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Aviso: essa ação não poderá ser desfeita. Todos os recursos nesses namespaces serão excluídos permanentemente.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Observação: para namespaces gerenciados do AKS, o gerenciamento do ARM do Azure será removido automaticamente.", + "Delete Project & Namespaces": "Excluir Projeto\u00a0e Namespaces", "Deleting project {{ projectId }}…": "Excluindo projeto {{ projectId }}...", - "Deny all traffic": "Negar todo o tráfego", - "Deploy": "Implantar", - "Deploy {{repo}}": "Implantar {{repo}}", - "Deploy an application to start viewing metrics.": "Implante um aplicativo para começar a exibir métricas.", - "Deploy an application to view logs.": "Implante um aplicativo para exibir logs.", + "Cancelled deletion of project {{ projectId }}.": "Exclusão do projeto {{ projectId }} cancelada.", + "Deleted project {{ projectId }}.": "Projeto excluído {{ projectId }}.", + "Error deleting project {{ projectId }}.": "Erro ao excluir o projeto {{ projectId }}.", "Deploy Application": "Implantar aplicativo", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implantar a partir do Registro de Contêiner do Azure, Docker Hub ou GHCR", + "Failed to load pipeline runs": "Falha ao carregar execuções de pipeline", + "Pipeline": "Pipeline", + "Set up your pipeline": "Configurar seu pipeline", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configurar um pipeline de CI/CD para automatizar suas implantações e simplificar seu fluxo de trabalho", + "Waiting for browser authorization...": "Aguardando autorização do navegador...", + "Sign in to GitHub to view pipeline runs.": "Entre no GitHub para exibir execuções de pipeline.", + "Connecting...": "Conectando-se...", + "No pipeline runs yet.": "Ainda não há execuções de pipeline.", + "View on GitHub": "Exibir no GitHub", + "View run on GitHub": "Exibir execução no GitHub", + "Healthy": "Íntegro", + "Scaled down": "Reduzido verticalmente", + "Degraded": "Degradado", + "VS Code": "VS Code", + "Manual": "Manual", + "Manual Deploy": "Implantação Manual", + "Deploy {{repo}}": "Implantar\u00a0{{repo}}", "Deploy via Pipeline": "Implantar por meio do Pipeline", - "Deploying": "Implantando", + "No deployments found in this namespace.": "Nenhuma implantação encontrada neste namespace.", "Deployment": "Implantação", - "Deployment PR": "PR de implantação", - "Deployment PR Ready": "PR de Implantação Pronta", - "Deployment PR reviewed and merged": "PR de implantação revisada e mesclada", - "Deployment source": "Origem da implantação", - "Description": "Descrição", - "Deselect All": "Anular Seleção de Todos", - "Desired Replicas": "Réplicas Desejadas", - "Discard": "Descartar", - "Dismiss": "Ignorar", - "Distributes pods evenly across nodes to improve workload distribution.": "Distribui pods uniformemente entre nós para melhorar a distribuição da carga de trabalho.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribui pods uniformemente entre nós, zonas ou outros domínios de topologia para melhorar a distribuição e a disponibilidade da carga de trabalho.", - "Done": "Concluído", - "Edit Configuration": "Editar configuração", + "Source": "Origem", + "Replicas": "Réplicas", + "Ready": "Pronto", + "Status": "Status", + "Actions": "Ações", "Edit deployment": "Editar a implantação", - "Edit HPA Configuration": "Editar Configuração de HPA", - "Edit Manual Scaling Configuration": "Editar a Configuração de Escala Manual", - "Egress Policy": "Política de saída", + "View workflow run": "Exibir execução de fluxo de trabalho", + "Re-deploy": "Re-implantar", + "Failed to trigger deployment": "Falha ao disparar a implantação", + "Trigger": "Gatilho", + "workflow on": "fluxo de trabalho em", + "with the following parameters:": "com os seguintes parâmetros:", + "Namespace": "Namespace", + "Sign in": "Entrar", + "GitHub authentication required to trigger deployment.": "Autenticação do GitHub necessária para disparar a implantação.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Expedição de fluxo de trabalho disparada com sucesso. Verifique o GitHub Actions para acompanhar o progresso.", + "Close": "Fechar", + "Triggering...": "Desencadeando...", + "Deploy": "Implantar", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Habilite os Pipelines do GitHub em Configurações → Versão Prévia dos Recursos para usar implantações via pipeline.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Habilite pipelines de implantação baseados no GitHub para projetos do AKS.", - "Enable Horizontal Pod Autoscaler": "Habilitar o Dimensionador Automático de Pod Horizontal", - "Enable liveness probe": "Habilitar investigação de atividade", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Habilite ou desabilite recursos que ainda estão em desenvolvimento. Os recursos de visualização podem ser alterados ou removidos em versões futuras.", + "Workloads": "Cargas de trabalho", + "No clusters in this project.": "Nenhum cluster neste projeto.", + "Failed to fetch deployments": "Falha ao buscar implantações", + "Failed to fetch cluster status": "Falha ao buscar o status do cluster", + "Configure security context settings for the container.": "Configurar as configurações de contexto de segurança para\u00a0o contêiner.", + "Run as non root user": "Executar como usuário não raiz", + "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Garante que o contêiner seja executado como um usuário não raiz (UID != 0) para maior segurança. Isso impede ataques de escalonamento de privilégios.", + "Ensures the container runs as a non-root user for better security.": "Garante que\u00a0o contêiner seja executado como um usuário não raiz para maior segurança.", + "Read only root filesystem": "Sistema de arquivos raiz somente leitura", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta o sistema de arquivos raiz do contêiner como somente leitura para impedir operações de gravação. Isso aprimora a segurança impedindo que código mal-intencionado modifique arquivos do sistema.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta o sistema de arquivos raiz do contêiner como somente leitura para impedir operações de gravação.", + "Allow privilege escalation": "Permitir escalonamento de privilégios", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controla se\u00a0um processo pode obter mais privilégios do que seu processo pai. Desabilitar isso (recomendado) impede ataques de escalonamento de privilégio.", + "Controls whether a process can gain more privileges than its parent process.": "Controla se\u00a0um processo pode obter mais privilégios do que seu processo pai.", "Enable pod anti-affinity": "Habilitar antiafinidade de pod", - "Enable public access": "Habilitar o acesso público", - "Enable readiness probe": "Habilitar investigação de preparação", - "Enable resource requests and limits": "Habilitar solicitações de recursos e limites", - "Enable startup probe": "Habilitar investigação de inicialização", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Prefira agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas. Isso ajuda a garantir que os pods sejam distribuídos pelo cluster.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prefira agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas.", "Enable topology spread constraints": "Habilitar restrições de difusão de topologia", - "Enabling Addons...": "Habilitando Complementos...", - "Enabling these addons may incur additional Azure costs.": "Habilitar esses complementos pode incorrer em custos adicionais do Azure.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Verifique se min ≤ máx réplicas e CPU alvo entre 10% e 95%.", - "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Garante que o contêiner seja executado como um usuário não raiz (UID != 0) para maior segurança. Isso impede ataques de escalonamento de privilégios.", - "Ensures the container runs as a non-root user for better security.": "Garante que o contêiner seja executado como um usuário não raiz para maior segurança.", - "Ensuring resource group exists...": "Verificando se o grupo de recursos existe...", - "Enter a name for your first application to get started with deployment.": "Insira um nome para o primeiro aplicativo para começar a implantação.", - "Enter application name": "Insira o nome do aplicativo", - "Enter project description": "Insira a descrição do projeto", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribui pods uniformemente entre nós, zonas ou outros domínios de topologia para melhorar a distribuição e a disponibilidade da carga de trabalho.", + "Distributes pods evenly across nodes to improve workload distribution.": "Distribui pods uniformemente entre nós para melhorar a distribuição da carga de trabalho.", + "Container image": "Imagem do contêiner", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "O número de réplicas de pod a serem executadas. Mais réplicas fornecem melhor disponibilidade e distribuição de carga.", + "Continue": "Continuar", + "Configure Container Deployment": "Configurar Implantação de\u00a0Contêiner", + "Networking": "Rede", + "Healthchecks": "Verificações de\u00a0Integridade", + "Resource Limits": "Limites de Recurso", "Environment Variables": "Variáveis de Ambiente", - "Error deleting project {{ projectId }}.": "Erro ao excluir o projeto {{ projectId }}.", - "Error Rate": "Taxa de Erro", - "Failed to apply": "Falha ao aplicar", - "Failed to apply resources.": "Falha ao aplicar os recursos.", - "Failed to convert namespace: {{message}}": "Falha ao converter namespace: {{message}}", - "Failed to create namespace": "Falha ao criar namespace", - "Failed to create project": "Falha ao criar projeto", - "Failed to enable addon: {{error}}": "Falha ao habilitar o complemento: {{error}}", - "Failed to enable addons": "Falha ao habilitar complementos", - "Failed to fetch cluster status": "Falha ao buscar o status do cluster", - "Failed to fetch deployment status": "Falha ao buscar o status da implantação", - "Failed to fetch deployments": "Falha ao buscar implantações", - "Failed to fetch managed namespace details": "Falha ao buscar detalhes do namespace gerenciado", - "Failed to fetch managed namespaces": "Falha ao buscar namespaces gerenciados", - "Failed to fetch pod status": "Falha ao buscar o status do pod", - "Failed to fetch service status": "Falha ao buscar o status do serviço", - "Failed to import any projects. See details below.": "Falha ao importar projetos. Confira os detalhes abaixo.", - "Failed to initiate login: {{message}}": "Falha ao iniciar o logon: {{message}}", - "Failed to load AKS clusters": "Falha ao carregar os clusters do AKS", - "Failed to load Azure context": "Falha ao carregar o contexto do Azure", - "Failed to load pipeline runs": "Falha ao carregar execuções de pipeline", - "Failed to load repositories": "Falha ao carregar repositórios", - "Failed to load subscriptions": "Falha ao carregar as assinaturas", - "Failed to merge cluster: {{message}}": "Falha ao mesclar cluster: {{message}}", - "Failed to monitor deployment health": "Falha ao monitorar a integridade da implantação", - "Failed to register cluster: {{message}}": "Falha ao registrar o cluster: {{message}}", - "Failed to trigger deployment": "Falha ao disparar a implantação", - "Failed to update managed namespace": "Falha ao atualizar namespace gerenciado", - "failureThreshold": "failureThreshold", - "Features": "Recursos", - "Federated Credential": "Credencial Federada", - "Filter repositories": "Filtrar repositórios", - "Final status check failed: {{message}}": "A verificação final de status falhou: {{message}}", - "Final status verification failed: {{message}}": "A verificação final de status falhou: {{message}}", - "for full network policy support.": "para suporte completo à política de rede.", + "Workload Identity": "", + "Advanced": "Avançado", + "Information about {{label}}": "Informações sobre {{label}}", + "Kubernetes YAML": "YAML\u00a0do Kubernetes", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Adicione um\u00a0ou mais manifestos do Kubernetes. Faça upload de arquivos para preencher o editor ou cole/edite diretamente abaixo.", + "Upload files": "Carregar arquivos", + "Clear editor": "Limpar editor", + "Review & Deploy": "Examinar e Implantar", "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifestações do Kubernetes geradas (namespace: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Autenticação do GitHub necessária para disparar a implantação.", - "GitHub Pipelines": "Pipelines do GitHub", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Ir para Projetos", - "Guided configuration for ports, replicas, env, and resources": "Configuração guiada para portas, réplicas, ambiente e recursos", - "Healthchecks": "Verificações de Integridade", - "Healthy": "Íntegro", + "Resources to be deployed ({{count}} object)_one": "Recursos a serem implantados ({{count}} objeto)", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Recursos a serem implantados ({{count}} objeto)", + "namespace: {{namespace}}": "namespace: {{namespace}}", + "Configure": "Configurar", + "Deploying": "Implantando", + "Key": "Chave", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Valor", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "remover", + "Add variable": "Adicionar variável", + "Configure container health probes.": "Configurar investigações de integridade do\u00a0contêiner.", + "Manually configure settings": "Definir configurações manualmente", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Por padrão, as investigações usam HTTP GET\u00a0no caminho raiz com valores padrão adequados. Habilite esta opção para personalizar as configurações de investigação.", + "Enable liveness probe": "Habilitar investigação de atividade", + "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "O Kubernetes reinicia o contêiner se\u00a0essa verificação falhar repetidamente. Usado para detectar e recuperar de deadlocks ou contêineres sem resposta.", + "Kubernetes restarts the container if this check fails repeatedly.": "O Kubernetes reinicia o contêiner se\u00a0essa verificação falhar repetidamente.", + "Liveness path": "Caminho de atividade", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar a atividade (por exemplo, /healthz). A investigação executa uma solicitação HTTP GET para esse caminho.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Número de segundos após o início do contêiner antes que as investigações de atividade sejam iniciadas.", + "periodSeconds": "periodSeconds", "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Com que frequência (em segundos) executar a investigação de atividade. O padrão é 10 segundos.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "O número de segundos até a investigação atingir tempo limite. O padrão é 1 segundo.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Quando uma investigação falhar, o Kubernetes tentará isso muitas vezes antes de abrir o contêiner e reiniciá-lo.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "O mínimo de sucessos consecutivos para a investigação ser considerada íntegra após a falha. O padrão é 1.", + "Enable readiness probe": "Habilitar investigação de preparação", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "O Kubernetes não enviará tráfego ao\u00a0pod até que essa verificação seja aprovada. Usado para indicar quando um contêiner está pronto para aceitar o tráfego.", + "Kubernetes won't send traffic to the pod until this check passes.": "O Kubernetes não enviará tráfego ao\u00a0pod até que essa verificação seja aprovada.", + "Readiness path": "Caminho de preparação", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar se há preparação (por exemplo, /ready). A investigação executa uma solicitação HTTP GET para esse caminho.", + "Number of seconds after the container has started before readiness probes are initiated.": "Número de segundos após o início do contêiner antes que as investigações de preparação sejam iniciadas.", "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Com que frequência (em segundos) executar a investigação de preparação. O padrão é 10 segundos.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Quando uma investigação falhar, o Kubernetes tentará isso muitas vezes antes de marcar o pod como não pronto.", + "Enable startup probe": "Habilitar investigação de inicialização", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "O Kubernetes desativa temporariamente a atividade/preparação até que\u00a0a inicialização seja bem-sucedida. Útil para contêineres que levam muito tempo para serem iniciados.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "O Kubernetes desativa temporariamente a vivacidade/preparação até que\u00a0a inicialização seja bem-sucedida.", + "Startup path": "Caminho de inicialização", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "O caminho HTTP a ser verificado para inicialização (por exemplo, /startup). A investigação executa uma solicitação HTTP GET para esse caminho.", + "Number of seconds after the container has started before startup probes are initiated.": "Número de segundos após o início do contêiner antes que as investigações de inicialização sejam iniciadas.", "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Com que frequência (em segundos) executar a investigação de inicialização. O padrão é 10 segundos.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Quando uma verificação falha, o Kubernetes tentará várias vezes antes de desistir. Para investigações de inicialização, isso determina quanto tempo esperar antes de reiniciar.", + "Enable Horizontal Pod Autoscaler": "Habilitar o Dimensionador Automático de Pod Horizontal", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Dimensiona automaticamente o número de pods com base na utilização da CPU. A HPA aumentará os pods quando o uso da CPU exceder o destino e diminuirá quando estiver abaixo.", "HPA scales pods based on CPU utilization.": "O HPA escala pods com base na utilização da CPU.", - "Identity Resource Group": "Grupo de Recursos de Identidade", - "Import AKS Projects": "Importar projetos do AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importe namespaces gerenciados existentes e namespaces regulares como projetos. Os namespaces que ainda não são projetos da Área de Trabalho do AKS serão convertidos adicionando o rótulo de projeto necessário.", - "Import Selected Projects": "Importar projetos selecionados", - "Importing": "Importando", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importando {{current}} de {{total}}: {{name}} de {{clusterName}}", - "in resource group": "no grupo de recursos", - "Information about {{label}}": "Informações sobre {{label}}", - "Information about CPU limit": "Informações sobre o limite de CPU", - "Information about CPU request": "Informações sobre solicitação de CPU", - "Information about memory limit": "Informações sobre o limite de memória", - "Information about memory request": "Informações sobre solicitação de memória", - "Information about target CPU utilization": "Informações sobre a utilização da CPU de destino", - "Ingress Policy": "Política de entrada", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Inicializando...", - "Initiating Azure login": "Iniciando logon no Azure", - "Initiating managed namespace creation": "Iniciando a criação do namespace gerenciado", - "Install Extension": "Instalar Extensão", - "Install GitHub App": "Instalar o aplicativo GitHub", - "Installing": "Instalando", - "Internal only": "Somente interno", - "Invalid YAML": "YAML inválido", - "Invalid YAML: List item missing required field (kind)": "YAML inválido: item de lista ausente no campo obrigatório (tipo)", - "Invalid YAML: List item missing required field (metadata.name)": "YAML inválido: item de lista ausente no campo obrigatório (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "YAML inválido: o recurso Lista deve ter um campo de matriz \"itens\"", - "Invalid YAML: missing required field (kind)": "YAML inválido: campo obrigatório ausente (tipo)", - "Invalid YAML: missing required field (metadata.name)": "YAML inválido: campo obrigatório ausente (metadata.name)", - "Issue {{number}}": "Problema {{number}}", - "Issues": "Problemas", - "just now": "só agora", - "KEDA (Event-Driven Autoscaling)": "KEDA (Dimensionamento Automático Controlado por Eventos)", - "Keep Going": "Continuar", - "Key": "Chave", - "Kubernetes restarts the container if this check fails repeatedly.": "O Kubernetes reinicia o contêiner se essa verificação falhar repetidamente.", - "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "O Kubernetes reinicia o contêiner se essa verificação falhar repetidamente. Usado para detectar e recuperar de deadlocks ou contêineres sem resposta.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "O Kubernetes desativa temporariamente a vivacidade/preparação até que a inicialização seja bem-sucedida.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "O Kubernetes desativa temporariamente a atividade/preparação até que a inicialização seja bem-sucedida. Útil para contêineres que levam muito tempo para serem iniciados.", - "Kubernetes Version": "Versão do Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "O Kubernetes não enviará tráfego ao pod até que essa verificação seja aprovada.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "O Kubernetes não enviará tráfego ao pod até que essa verificação seja aprovada. Usado para indicar quando um contêiner está pronto para aceitar o tráfego.", - "Kubernetes YAML": "YAML do Kubernetes", - "less than a minute": "menos de um minuto", - "Limits": "Limites", - "Liveness path": "Caminho de atividade", - "Loading": "Carregando", - "Loading AKS clusters": "Carregando clusters do AKS", - "Loading Azure account information": "Carregando dados da conta Azure", - "Loading Azure context...": "Carregando contexto do Azure...", - "Loading clusters": "Carregando clusters", - "Loading configuration...": "Carregando configuração...", - "Loading deployments": "Carregando ambientes", - "Loading metrics": "Carregando métricas", - "Loading scaling metrics from Prometheus": "Carregando métricas de escala do Prometheus", - "Loading subscriptions": "Carregando assinaturas", - "Loading...": "Carregando...", - "Location": "Localização", - "Log out": "Fazer logoff", - "Logged in as": "Conectado como", - "Logging out": "Saindo", - "Login successful! Redirecting": "Logon bem-sucedido! Redirecionando", - "Login timeout. Please try again.": "Tempo limite de logon. Tente novamente.", - "Managed Identity": "Identidade Gerenciada", - "managed namespaces only": "somente namespaces gerenciados", - "ManagedNamespacePreview feature registered successfully!": "Recurso ManagedNamespacePreview registrado com êxito!", - "Manual": "Manual", - "Manual Deploy": "Implantação Manual", - "Manually configure settings": "Definir configurações manualmente", + "Min replicas": "Mínimo de réplicas", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "O número mínimo de réplicas de pod que o HPA manterá, mesmo quando o uso da CPU for baixo.", "Max replicas": "Máximo de réplicas", - "Maximum CPU allowed (1000m = 1 CPU core)": "Máximo de CPU permitido (1000m = 1 núcleo de CPU)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Memória máxima permitida (1024 MiB = 1 GiB)", - "Maximum Replicas": "Máximo de réplicas", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "O número máximo de réplicas de pod que o HPA pode escalar verticalmente quando o uso da CPU é alto.", + "Target CPU utilization": "Utilização da CPU de destino", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "O percentual médio de utilização da CPU em todos os pods. O\u00a0HPA escalará verticalmente quando o uso da CPU exceder esse valor e reduzirá verticalmente quando estiver abaixo.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Verifique se min ≤ máx réplicas e CPU alvo entre 10% e 95%.", + "Target port": "Porta de destino", + "The port number that your container listens on. This is the port inside the container where your application runs.": "O número da porta na qual o contêiner escuta. Essa é a porta dentro do contêiner em que o aplicativo é executado.", + "Service port": "Porta de serviço", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "O número da porta exposto pelo serviço Kubernetes. O tráfego para essa porta é encaminhado para a porta de destino.", + "Use custom service port": "Usar porta de serviço personalizada", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Por padrão, a porta do serviço corresponde à porta de destino. Habilite isso para usar uma porta diferente para\u00a0o serviço.", + "Service type": "Tipo de serviço", + "Internal only": "Somente\u00a0interno", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Use ClusterIP. Melhor para serviços que só podem ser acessados no cluster.", + "Enable public access": "Habilitar o acesso público", + "Creates a LoadBalancer to expose the application to the internet.": "Cria\u00a0um LoadBalancer para expor o aplicativo à Internet.", + "Enable resource requests and limits": "Habilitar solicitações de recursos e limites", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Defina solicitações de CPU e memória (recursos garantidos) e limites (máximo de recursos) para controlar a alocação de recursos e impedir que os contêineres consumam recursos de cluster excessivos.", + "CPU request": "Solicitação de CPU", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "A quantidade mínima de CPU garantida ao contêiner. O Kubernetes agendará o\u00a0pod em um nó com pelo menos essa quantidade de CPU disponível.", + "millicores": "milinúcleos", + "CPU limit": "limite de CPU", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "A quantidade máxima de CPU que o contêiner pode usar. Se excedido, o contêiner será limitado.", + "Memory request": "Solicitação de memória", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "A quantidade mínima de memória garantida ao contêiner. O Kubernetes agendará o\u00a0pod em um nó com pelo menos essa quantidade de memória disponível.", "mebibytes": "mebibytes", - "Memory": "Memória", "Memory limit": "Limite de memória", - "Memory Limits": "Limites de memória", - "Memory request": "Solicitação de memória", - "Memory Requests": "Solicitações de memória", - "Memory Resources": "Recursos de memória", - "Memory Usage": "Uso de Memória", - "Memory utilization": "Utilização da memória", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Mesclando cluster {{clusterName}} ({{count}} namespace(s))", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Mesclando cluster {{clusterName}} ({{count}} namespace(s))", - "Metrics": "Métricas", - "Metrics refreshed every 30 seconds": "Métricas atualizadas a cada 30 segundos", - "Metrics Unavailable": "Métricas Indisponíveis", - "millicores": "milinúcleos", - "Min replicas": "Mínimo de réplicas", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "O mínimo de sucessos consecutivos para a investigação ser considerada íntegra após a falha. O padrão é 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU mínima garantida (1000 m = 1 núcleo de CPU)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memória mínima garantida (1024 MiB = 1 GiB)", - "Minimum Replicas": "Mínimo de Réplicas", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contexto do Azure necessário ausente. Verifique se você está conectado e se o cluster está associado a uma assinatura, um grupo de recursos e um locatário válidos.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta o sistema de arquivos raiz do contêiner como somente leitura para impedir operações de gravação.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta o sistema de arquivos raiz do contêiner como somente leitura para impedir operações de gravação. Isso aprimora a segurança impedindo que código mal-intencionado modifique arquivos do sistema.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "A quantidade máxima de memória que o contêiner pode usar. Se excedido, o contêiner será encerrado (OOMKilled).", + "Container Image": "Imagem de contêiner", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implantar a partir do Registro de Contêiner do Azure, Docker Hub ou GHCR", + "Auto-generated Deployment and Service manifests": "Manifestações de implantação e\u00a0serviço geradas automaticamente", + "Guided configuration for ports, replicas, env, and resources": "Configuração guiada para portas, réplicas, ambiente\u00a0e recursos", + "No Kubernetes expertise required to get started": "Nenhuma experiência do Kubernetes é necessária para começar", + "Bring your own Kubernetes manifests to deploy": "Traga\u00a0seus próprios manifestos do Kubernetes para implantar", + "Use existing manifests for full control": "Usar manifestos existentes para controle total", "Multi-file support (Deployments, Services, Ingress, etc.)": "Suporte a vários arquivos (Implantações, Serviços, Entrada etc.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Deve conter apenas letras minúsculas, números e hifens, começando e terminando com um caractere alfanumérico", - "Name": "Nome", - "Namespace": "Namespace", - "Namespace '{{name}}' converted and imported as project": "Namespace \"{{name}}\" convertido e importado como projeto", - "Namespace created successfully!": "Namespace criado com sucesso!", - "Namespace Created Successfully!": "Namespace Criado com Sucesso!", - "Namespace creation API succeeded, proceeding with user assignments": "API de criação do namespace concluída com sucesso, prosseguindo com as atribuições de usuário", - "Namespace creation completed successfully! Adding user access": "Criação de namespace concluída com sucesso! Adicionando acesso de usuário", - "Namespace Creation Failed": "Falha na Criação do Namespace", - "Namespace creation failed: {{message}}": "Falha na criação do namespace: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Criação de namespace iniciada! Status de criação de monitoramento", - "Namespace Name": "Nome do namespace", - "Namespace name is required": "O nome do namespace é obrigatório", - "Namespace name must be 63 characters or fewer": "O nome do namespace deve ter 63 caracteres ou menos", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "O nome do namespace deve conter apenas letras minúsculas, números e hifens e deve começar e terminar com um caractere alfanumérico", - "Namespace status check failed: {{message}}": "Falha na verificação de status do namespace: {{message}}", - "Namespace status verification failed: {{message}}": "Falha na verificação de status do namespace: {{message}}", - "namespace: {{namespace}}": "namespace: {{namespace}}", - "Namespaces to convert:": "Namespaces a serem convertidos:", - "Network I/O": "E/S de Rede", - "Network In": "Entrada na Rede", - "Network Out": "Saída da Rede", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "O mecanismo de política de rede não pode ser alterado após a criação do cluster. Criar um novo cluster com", - "Networking": "Rede", - "Networking Policies": "Políticas de Rede", - "New Project": "Novo Projeto", - "Next": "Avançar", - "No": "Não", - "No AKS clusters found in this subscription.": "Nenhum cluster do AKS encontrado nessa assinatura.", - "No cluster is associated with this project.": "Nenhum cluster está associado a este projeto.", - "No clusters found. Register a cluster first.": "Nenhum cluster encontrado. Registre um cluster primeiro.", - "No clusters in this project.": "Nenhum cluster neste projeto.", - "No clusters with Azure Entra ID authentication found for this subscription": "Nenhum cluster com a autenticação do Entra ID do Azure foi encontrado para essa assinatura", - "No data available": "Nenhum dado disponível", - "No deployments found": "Nenhuma implantação localizada", - "No Deployments Found": "Nenhuma Implantação Encontrada", - "No deployments found in this namespace.": "Nenhuma implantação encontrada neste namespace.", - "No description provided": "Nenhuma descrição fornecida", - "No eligible clusters found in this subscription.": "Nenhum cluster qualificado encontrado nessa assinatura.", - "No Kubernetes expertise required to get started": "Nenhuma experiência do Kubernetes é necessária para começar", - "No options": "Sem opções", - "No pipeline runs yet.": "Ainda não há execuções de pipeline.", - "No pods found for deployment \"{{name}}\"": "Nenhum pod encontrado para a implantação \"{{name}}\"", - "No repositories found": "Nenhum repositório encontrado", - "No repositories match your filter": "Nenhum repositório corresponde ao filtro", - "No response time data available": "Nenhum dado de tempo de resposta disponível", - "No scaling data available": "Nenhum dado de escala disponível", - "No subscriptions found": "Nenhuma assinatura encontrada", - "Not specified": "Não especificado", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Observação: para namespaces gerenciados do AKS, o gerenciamento do ARM do Azure será removido automaticamente.", - "Number of Replicas": "Número de Réplicas", - "Number of seconds after the container has started before liveness probes are initiated.": "Número de segundos após o início do contêiner antes que as investigações de atividade sejam iniciadas.", - "Number of seconds after the container has started before readiness probes are initiated.": "Número de segundos após o início do contêiner antes que as investigações de preparação sejam iniciadas.", - "Number of seconds after the container has started before startup probes are initiated.": "Número de segundos após o início do contêiner antes que as investigações de inicialização sejam iniciadas.", - "Number of seconds after which the probe times out. Default is 1 second.": "O número de segundos até a investigação atingir tempo limite. O padrão é 1 segundo.", - "OIDC trust for": "Confiança do OIDC para", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Depois que o agente tiver criado a PR de implantação, examine os arquivos gerados e mescle para iniciar o pipeline de implantação", - "Only clusters with Azure Entra ID authentication are shown.": "Somente os clusters com a autenticação do Entra ID do Azure são mostrados.", - "Performing final status verification": "Executando verificação de status final", - "periodSeconds": "periodSeconds", - "Pipeline": "Pipeline", - "Pipeline configured": "Pipeline configurado", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Conclua a autenticação no navegador. Esta janela será redirecionada automaticamente quando o logon for concluído.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Registre para continuar.", - "Please review all the settings before creating your AKS project": "Examine todas as configurações antes de criar seu projeto do AKS", - "Please select a deployment to view metrics": "Selecione uma implantação para exibir as métricas", - "Please select a subscription first": "Primeiro, selecione uma assinatura", - "Please select at least one namespace to import": "Selecione pelo menos um namespace para importar", - "Please sign in to Azure to continue.": "Entre no Azure para continuar.", - "Pod Details": "Detalhes do Pod", - "Pod Name": "Nome do Pod", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prefira agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Prefira agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas. Isso ajuda a garantir que os pods sejam distribuídos pelo cluster.", "Preview and basic validation before apply": "Versão prévia e validação básica antes de aplicar", - "Preview Features": "Versões Prévias do Recurso", - "Project '{{name}}' successfully imported": "Projeto \"{{name}}\" importado com sucesso", - "Project Basics": "Noções Básicas do Projeto", - "Project Created Successfully!": "Projeto Criado com Sucesso!", - "Project creation completed successfully!": "Criação do projeto concluída com sucesso!", - "Project Creation Failed": "Falha na Criação do Projeto", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "A criação do projeto atingiu o tempo limite após dez minutos. Verifique se o namespace foi criado e tente novamente.", - "Project Description": "Descrição do Projeto", - "Project Name": "Nome do Projeto", - "Project name is available": "O nome do projeto está disponível", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "O nome do projeto deve conter apenas letras minúsculas, números e hifens (sem espaços)", - "Project Status": "Status do Projeto", - "Pull requests": "Solicitações de pull", + "Select Source": "Selecionar Fonte", + "Choose a source for your deployment (container image, repo, etc.).": "Escolha uma origem para\u00a0sua implantação (imagem de contêiner, repositório etc.).", + "Deployment source": "Origem da implantação", + "Features": "Recursos", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Grupo de Recursos de Identidade", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Verificando a identidade existente...", + "Creating managed identity...": "Criando identidade gerenciada...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "YAML inválido: campo obrigatório ausente (tipo)", + "Invalid YAML: List resource must have an array \"items\" field": "YAML inválido: o recurso Lista deve ter\u00a0um campo de matriz \"itens\"", + "Invalid YAML: List item missing required field (kind)": "YAML inválido: item\u00a0de lista ausente no campo obrigatório (tipo)", + "Invalid YAML: List item missing required field (metadata.name)": "YAML inválido: item\u00a0de lista ausente no campo obrigatório (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "YAML\u00a0inválido: campo obrigatório ausente (metadata.name)", + "Invalid YAML": "YAML inválido", + "Validation failed": "Falha na validação", + "Failed to apply": "Falha ao aplicar", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} recursos aplicados, mas {{failed}} falharam:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "{{count}} recursos aplicados com êxito.", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "{{count}} recursos aplicados com êxito.", + "Failed to apply resources.": "Falha\u00a0ao aplicar os recursos.", + "unnamed": "sem nome", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Conteúdo", "Push agent config files": "Enviar arquivos de configuração do agente por push", - "Re-deploy": "Re-implantar", - "Read only root filesystem": "Sistema de arquivos raiz somente leitura", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Acesso somente leitura à maioria dos objetos em um namespace. Não é possível exibir funções, associações de função ou Segredos.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Acesso de leitura/gravação à maioria dos objetos em um namespace. Não é possível exibir ou modificar funções ou associações de função. Pode acessar Segredos e executar Pods como qualquer ServiceAccount no namespace.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Acesso de leitura/gravação à maioria dos recursos em um namespace. Pode criar funções e associações de função dentro do namespace. Não é possível gravar na cota de recursos ou no próprio namespace.", - "Readiness path": "Caminho de preparação", - "Ready": "Pronto", - "Refresh": "Atualizar", - "Refreshing": "Atualizando", - "Register AKS Cluster": "Registrar Cluster do AKS", - "Register Cluster": "Registrar Cluster", - "Register ManagedNamespacePreview Feature": "Registrar Recurso ManagedNamespacePreview", - "Registering": "Registrando", - "Registering cluster": "Registrando cluster", - "Regular": "Normal", - "Regular Kubernetes namespace": "Namespace regular do Kubernetes", - "remove": "remover", - "Remove assignee": "Remover destinatário", - "Reopen install page": "Reabrir página de instalação", - "Replica Bounds": "Limites de Réplica", - "Replicas": "Réplicas", - "Request & error rate": "Solicitação e taxa de erro", - "Request Rate": "Taxa de Solicitação", - "Requests": "Solicitações", - "Required Permissions": "Permissões Necessárias", - "Resource Group": "Grupo de Recursos", - "Resource group where the managed identity will be created": "Grupo de recursos em que a identidade gerenciada será criada", - "Resource Limits": "Limites de Recurso", - "Resource Usage": "Uso do Recurso", - "Resources to be deployed ({{count}} object)_one": "Recursos a serem implantados ({{count}} objeto)", - "Resources to be deployed ({{count}} object)_other": "Recursos a serem implantados ({{count}} objeto)", - "Response Time": "Tempo de Resposta", - "Restarts": "Reinicializações", - "Retry": "Repetir", - "Review": "Revisão", - "Review & Deploy": "Examinar e Implantar", - "Review & Merge": "Examinar e Mesclar", - "Review and merge the setup PR to enable the Copilot agent.": "Examine e mescle a PR de instalação para habilitar o agente do Copilot.", - "Review on GitHub": "Revisão no GitHub", - "Review Project Configuration": "Examinar a Configuração do Projeto", - "Role": "Função", - "Role Assignment": "Atribuição de função", - "Run as non root user": "Executar como usuário não raiz", + "Workflows": "Fluxos de trabalho", + "Create setup workflow in .github/workflows/": "Criar fluxo de trabalho de instalação no .github/workflows/", + "Pull requests": "Solicitações de pull", + "Create deployment PRs": "Criar PRs de implantação", + "Issues": "Problemas", + "Track agent progress": "Acompanhar o progresso do agente", "Run deployment workflows": "Executar fluxos de trabalho de implantação", - "Save": "Salvar", - "Scaled down": "Reduzido verticalmente", - "Scaling": "Colocando em escala", - "Scaling Chart Unavailable": "Gráfico de Dimensionamento Indisponível", - "Scaling History (Last 24 Hours)": "Histórico de dimensionamento (últimas 24 horas)", - "Scaling Mode": "Modo de Escala", - "Scaling Overview": "Visão Geral da Escala", - "Search clusters": "Pesquisar clusters", - "Search subscriptions": "Pesquisar assinaturas", - "Select a cluster": "Selecionar um cluster", - "Select a deployment to view metrics": "Selecione uma implantação para exibir as métricas", - "Select a deployment to view scaling metrics": "Selecione uma implantação para exibir as métricas de escala", - "Select a subscription": "Selecione uma assinatura", - "Select All": "Selecionar Tudo", - "Select an AKS cluster": "Selecionar um cluster do AKS", - "Select an Azure subscription": "Selecionar uma assinatura do Azure", - "Select an option": "Selecione uma opção", - "Select Deployment": "Selecionar Implantação", - "Select Namespaces to Import": "Selecionar Namespaces a Serem Importados", + "Connect to GitHub": "Conectar-se ao GitHub", + "Connected to '{{username}}'.": "Conectado a \"{{username}}\".", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorize a Área de Trabalho do AKS a criar pipelines de implantação em seu repositório.", + "Required Permissions": "Permissões Necessárias", + "Complete authorization on your browser screen": "Concluir autorização na tela do navegador", + "Connect": "Conectar", "Select repository": "Selecionar repositório", - "Select Source": "Selecionar Fonte", - "Selected Cluster Details": "Detalhes do Cluster Selecionado", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "O cluster selecionado está ausente do kubeconfig. Registre-o antes de continuar.", - "Service port": "Porta de serviço", - "Service type": "Tipo de serviço", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Defina solicitações de CPU e memória (recursos garantidos) e limites (máximo de recursos) para controlar a alocação de recursos e impedir que os contêineres consumam recursos de cluster excessivos.", - "Set quota limits to prevent overuse and maintain cluster stability": "Defina limites de cota para evitar o uso excessivo e manter a estabilidade do cluster", - "Set security, communication and access rules for incoming and outgoing traffic": "Definir regras de segurança, comunicação e acesso para tráfego de entrada e saída", - "Set the desired number of pod replicas for this deployment": "Definir o número desejado de réplicas de pod para essa implantação", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configurar um pipeline de CI/CD para automatizar suas implantações e simplificar seu fluxo de trabalho", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Instalar e configurar um novo projeto no Serviço de Kubernetes do Azure (AKS)", - "Set up Copilot Agent": "Configurar o Agente do Copilot", - "Set up your pipeline": "Configurar seu pipeline", - "Setting up Copilot agent...": "Configurando o agente do Copilot...", - "Setup PR Created": "PR de Instalação Criada", - "Setup PR reviewed and merged": "PR de instalação revisada e mesclada", - "Sign in": "Entrar", - "Sign in to GitHub": "Entrar no GitHub", - "Sign in to GitHub to view pipeline runs.": "Entre no GitHub para exibir execuções de pipeline.", - "Sign in with Azure": "Entrar com o Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Entre com sua conta do Azure para gerenciar clusters e recursos do AKS", - "Source": "Origem", - "Starting project creation": "Iniciando a criação do projeto", - "Startup path": "Caminho de inicialização", - "Status": "Status", - "Subscription": "Assinatura", - "Successfully merged {{count}} cluster(s)_one": "{{count}} cluster(s) mesclado(s) com sucesso", - "Successfully merged {{count}} cluster(s)_other": "{{count}} cluster(s) mesclado(s) com sucesso", - "successThreshold": "successThreshold", - "Target CPU utilization": "Utilização da CPU de destino", - "Target CPU Utilization (%)": "Utilização da CPU de Destino (%)", - "Target port": "Porta de destino", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "O agente criou a PR de implantação. Examine os arquivos gerados e a mesclagem para iniciar o pipeline de implantação.", - "The agent is creating the setup PR to enable the Copilot agent.": "O agente está criando a PR de instalação para habilitar o agente do Copilot.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Conclua a instalação no navegador. Isso será atualizado automaticamente depois que o aplicativo for instalado no {{repoName}}.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "O Aplicativo GitHub da Área de Trabalho do AKS deve ser instalado no {{repoName}} para continuar.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "A extensão aks-preview é necessária para criar namespaces gerenciados. Instale-a para continuar.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "O agente de codificação do Copilot está analisando seu repositório e gerando uma PR de implantação com Dockerfile, manifestos do Kubernetes e um fluxo de trabalho do GitHub Actions.", - "The following addons can be enabled on this cluster:": "Os seguintes complementos podem ser habilitados neste cluster:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Os recursos do Azure a seguir serão criados para permitir que seu pipeline do GitHub Actions autentique com seu cluster AKS:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Os namespaces a seguir serão convertidos em projetos da Área de Trabalho do AKS adicionando estes rótulos:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar a atividade (por exemplo, /healthz). A investigação executa uma solicitação HTTP GET para esse caminho.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar se há preparação (por exemplo, /ready). A investigação executa uma solicitação HTTP GET para esse caminho.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "O caminho HTTP a ser verificado para inicialização (por exemplo, /startup). A investigação executa uma solicitação HTTP GET para esse caminho.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "O recurso ManagedNamespacePreview deve ser registrado para criar namespaces gerenciados.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "A quantidade máxima de CPU que o contêiner pode usar. Se excedido, o contêiner será limitado.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "A quantidade máxima de memória que o contêiner pode usar. Se excedido, o contêiner será encerrado (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "O número máximo de réplicas de pod que o HPA pode escalar verticalmente quando o uso da CPU é alto.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "A quantidade mínima de CPU garantida ao contêiner. O Kubernetes agendará o pod em um nó com pelo menos essa quantidade de CPU disponível.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "A quantidade mínima de memória garantida ao contêiner. O Kubernetes agendará o pod em um nó com pelo menos essa quantidade de memória disponível.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "O número mínimo de réplicas de pod que o HPA manterá, mesmo quando o uso da CPU for baixo.", - "The namespace will be created on the selected cluster and set up as a project": "O namespace será criado no cluster selecionado e configurado como um projeto", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "O número de réplicas de pod a serem executadas. Mais réplicas fornecem melhor disponibilidade e distribuição de carga.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "A operação ainda pode estar em execução no GitHub. Verifique o link acima para obter o status mais recente.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "O número da porta exposto pelo serviço Kubernetes. O tráfego para essa porta é encaminhado para a porta de destino.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "O número da porta na qual o contêiner escuta. Essa é a porta dentro do contêiner em que o aplicativo é executado.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "O percentual médio de utilização da CPU em todos os pods. O HPA escalará verticalmente quando o uso da CPU exceder esse valor e reduzirá verticalmente quando estiver abaixo.", - "There are no deployments in this project namespace yet.": "Ainda não há implantações nesse namespace do projeto.", + "Reopen install page": "Reabrir página de instalação", + "Install GitHub App": "Instalar o aplicativo GitHub", + "Checking...": "Verificando...", + "Connecting to GitHub...": "Conectando-se ao GitHub...", + "Connect GitHub": "Conectar o GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Conectado", + "Sign in to GitHub": "Entrar no GitHub", + "Failed to load repositories": "Falha ao carregar repositórios", + "Filter repositories": "Filtrar repositórios", + "No repositories match your filter": "Nenhum repositório corresponde ao filtro", + "No repositories found": "Nenhum repositório encontrado", + "less than a minute": "menos de um minuto", + "{{count}} min_one": "{{count}} min", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}} min", + "Up next": "A seguir", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "Verificando o status da mesclagem...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Isso está demorando mais do que o esperado. Verifique a PR no GitHub para obter o status mais recente.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Isso pode ser um problema de permissões. Verifique as permissões do aplicativo GitHub e tente novamente.", "This PR was closed without merging. You may need to restart the process.": "Esta PR foi fechada sem mesclagem. Talvez seja necessário reiniciar o processo.", + "Review on GitHub": "Revisão no GitHub", + "Agent is working": "O agente está funcionando", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "O agente de codificação do Copilot está analisando seu repositório e gerando uma PR de implantação com Dockerfile, manifestos do Kubernetes e um fluxo de trabalho do GitHub Actions.", + "Issue {{number}}": "Problema {{number}}", + "Waiting for agent workflow to start...": "Aguardando a inicialização do fluxo de trabalho do agente...", "This typically takes 10–25 minutes.": "Isso normalmente leva de 10 a 25 minutos.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Total de Pods", - "Track agent progress": "Acompanhar o progresso do agente", - "Trigger": "Gatilho", - "Trigger Copilot Agent": "Disparar Agente do Copilot", - "Triggering...": "Desencadeando...", + "Pipeline configured": "Pipeline configurado", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "O pipeline de CI/CD para {{repoFullName}} está pronto. Dispare implantações na guia Implantar.", + "Setup PR reviewed and merged": "PR de instalação revisada e mesclada", + "Copilot agent reviewed your repo and generated deployment PR": "O agente do Copilot examinou seu repositório e gerou a PR de implantação", + "Deployment PR reviewed and merged": "PR de implantação revisada e mesclada", + "View deployment": "Exibir implantação", + "You can collapse this panel. Progress is saved and will resume when you return.": "Você pode recolher este painel. O progresso é salvo e será retomado quando você retornar.", + "Creating setup PR...": "Criando PR de instalação...", + "The agent is creating the setup PR to enable the Copilot agent.": "O agente está criando a PR de instalação para habilitar o agente do Copilot.", + "Setup PR Created": "PR de Instalação Criada", + "Review and merge the setup PR to enable the Copilot agent.": "Examine e mescle a PR de instalação para habilitar o agente do Copilot.", + "Setting up Copilot agent...": "Configurando o agente do Copilot...", + "Creating the trigger issue for the Copilot coding agent.": "Criando o problema de gatilho para o agente de codificação do Copilot.", + "Deployment PR Ready": "PR de Implantação Pronta", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "O agente criou a PR de implantação. Examine os arquivos gerados e a mesclagem para iniciar o pipeline de implantação.", + "Copilot agent": "Agente do\u00a0Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Depois de mesclar, o agente do Copilot analisará seu repositório e criará uma PR de implantação", + "Deployment PR": "PR de implantação", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Depois que o agente tiver criado a PR de implantação, examine os arquivos gerados e mescle para iniciar o pipeline de implantação", + "Connect Source": "Conectar origem", + "Set up Copilot Agent": "Configurar o Agente do Copilot", + "Review & Merge": "Examinar e Mesclar", + "Collapse panel": "Recolher painel", + "Keep Going": "Continuar", + "Discard": "Descartar", + "Canceling will discard your pipeline progress. Are you sure?": "Cancelar descartará o progresso do pipeline. Tem certeza?", + "Ensuring resource group exists...": "Verificando se o grupo de recursos existe...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Configurando credencial federada...", + "Workload identity configured": "Identidade da carga de trabalho configurada", + "Configure Workload Identity": "Configurar Identidade de Carga de Trabalho", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Os recursos do Azure a seguir serão criados para permitir que seu pipeline do GitHub Actions autentique com seu cluster AKS:", + "Managed Identity": "Identidade Gerenciada", + "in resource group": "no grupo de recursos", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Credencial Federada", + "OIDC trust for": "Confiança do OIDC para", + "branch": "ramificação", + "Resource group where the managed identity will be created": "Grupo de recursos em que a identidade gerenciada será criada", + "Workload identity configured successfully.": "Identidade de carga de trabalho configurada com sucesso.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Isso pode ser um problema de permissões. Verifique as permissões do aplicativo GitHub e tente novamente.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "A operação ainda pode estar em execução no GitHub. Verifique o link acima para obter o status mais recente.", "Try again, or check GitHub for details.": "Tente novamente ou verifique o GitHub para obter detalhes.", - "Type": "Tipo", + "Initializing...": "Inicializando...", + "Checking repository readiness...": "Verificando a preparação do repositório...", + "Loading configuration...": "Carregando configuração...", "Unknown error": "Erro desconhecido", - "unnamed": "sem nome", - "Up next": "A seguir", - "Update": "Atualizar", - "Updating": "Atualizando", - "Updating local settings": "Atualizando configurações locais", - "Upload files": "Carregar arquivos", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Use ClusterIP. Melhor para serviços que só podem ser acessados no cluster.", - "Use custom service port": "Usar porta de serviço personalizada", - "Use existing manifests for full control": "Usar manifestos existentes para controle total", - "User assignment completed with errors": "Atribuição de usuário concluída com erros", - "Validation failed": "Falha na validação", - "Value": "Valor", - "View deployment": "Exibir implantação", - "View on GitHub": "Exibir no GitHub", - "View run on GitHub": "Exibir execução no GitHub", - "View workflow run": "Exibir execução de fluxo de trabalho", - "VPA (Vertical Pod Autoscaler)": "VPA (Dimensionador Automático de Pod Vertical)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Aguardando a inicialização do fluxo de trabalho do agente...", - "Waiting for browser authorization...": "Aguardando autorização do navegador...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Aguardando conclusão do logon... ({{minutes}} minutos restantes)", - "Waiting for namespace to be created": "Aguardando a criação do namespace", - "Waiting for namespace to propagate": "Aguardando a propagação do namespace", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Aviso: essa ação não poderá ser desfeita. Todos os recursos nesses namespaces serão excluídos permanentemente.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Quando uma investigação falhar, o Kubernetes tentará isso muitas vezes antes de abrir o contêiner e reiniciá-lo.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Quando uma verificação falha, o Kubernetes tentará várias vezes antes de desistir. Para investigações de inicialização, isso determina quanto tempo esperar antes de reiniciar.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Quando uma investigação falhar, o Kubernetes tentará isso muitas vezes antes de marcar o pod como não pronto.", + "Trigger Copilot Agent": "Disparar Agente do Copilot", + "Create Setup PR": "Criar PR de Instalação", + "Failed to fetch deployment status": "Falha ao buscar o status da implantação", + "Failed to fetch pod status": "Falha ao buscar o status do pod", + "Failed to fetch service status": "Falha ao buscar o status do serviço", + "Failed to monitor deployment health": "Falha ao monitorar a integridade da implantação", + "Convert Namespaces to AKS Projects": "Converter namespaces em projetos do AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Os namespaces a seguir serão convertidos em projetos da Área de Trabalho do AKS adicionando estes rótulos:", + "managed namespaces only": "somente namespaces gerenciados", + "Namespaces to convert:": "Namespaces a serem convertidos:", + "Already AKS projects (will import directly):": "Projetos do AKS já (serão importados diretamente):", + "Converting": "Convertendo", + "Confirm & Import": "Confirmar e Importar", + "Please select at least one namespace to import": "Selecione pelo menos um namespace para importar", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "O cluster {{clusterName}} deve ser registrado antes de importar namespaces regulares. Importe um namespace gerenciado deste cluster primeiro.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Mesclando cluster {{clusterName}} ({{count}} namespace(s))", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Mesclando cluster {{clusterName}} ({{count}} namespace(s))", + "Failed to merge cluster: {{message}}": "Falha\u00a0ao mesclar cluster: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Convertendo {{name}} em projeto do AKS (isso pode levar algum tempo)...", + "Failed to convert namespace: {{message}}": "Falha ao converter namespace: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importando {{current}} de {{total}}: {{name}} de {{clusterName}}", + "Project '{{name}}' successfully imported": "Projeto \"{{name}}\" importado com sucesso", + "Namespace '{{name}}' converted and imported as project": "Namespace \"{{name}}\" convertido e importado como projeto", + "Successfully merged {{count}} cluster(s)_one": "{{count}} cluster(s) mesclado(s) com sucesso", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "{{count}} cluster(s) mesclado(s) com sucesso", "with {{count}} project(s)_one": "com {{count}} projeto(s)", + "with {{count}} project(s)_many": "", "with {{count}} project(s)_other": "com {{count}} projeto(s)", - "with the following parameters:": "com os seguintes parâmetros:", - "Wizard steps": "Etapas do assistente", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Expedição de fluxo de trabalho disparada com sucesso. Verifique o GitHub Actions para acompanhar o progresso.", - "workflow on": "fluxo de trabalho em", - "Workflows": "Fluxos de trabalho", - "Workload identity configured": "Identidade da carga de trabalho configurada", - "Workload identity configured successfully.": "Identidade de carga de trabalho configurada com sucesso.", - "Workloads": "Cargas de trabalho", + "{{count}} failed._one": "Falha em {{count}}.", + "{{count}} failed._many": "", + "{{count}} failed._other": "Falha em {{count}}.", + "Failed to import any projects. See details below.": "Falha\u00a0ao importar projetos. Confira os detalhes abaixo.", + "Import AKS Projects": "Importar projetos do\u00a0AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importe namespaces gerenciados existentes e namespaces regulares como projetos. Os namespaces que ainda não são projetos da Área de Trabalho do AKS serão convertidos adicionando o rótulo de projeto necessário.", + "Select Namespaces to Import": "Selecionar Namespaces a Serem Importados", + "{{count}} selected_one": "{{count}} selecionado", + "{{count}} selected_many": "", + "{{count}} selected_other": "{{count}} selecionados", + "Select All": "Selecionar Tudo", + "Deselect All": "Anular Seleção de Todos", + "AKS Managed": "Gerenciado pelo AKS", + "Regular": "Normal", + "AKS Project?": "Projeto do AKS?", "Yes": "Sim", - "You can collapse this panel. Progress is saved and will resume when you return.": "Você pode recolher este painel. O progresso é salvo e será retomado quando você retornar.", - "You need to be logged in to Azure to register AKS clusters.": "Você precisa estar conectado ao Azure para registrar clusters do AKS.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Seu projeto do AKS \"{{projectName}}\" foi criado e está pronto para uso.", - "Your project \"{{projectName}}\" is ready to use.": "Seu projeto \"{{projectName}}\" está pronto para uso." + "No": "Não", + "Importing": "Importando", + "Import Selected Projects": "Importar\u00a0projetos selecionados", + "Failed to fetch managed namespaces": "Falha ao buscar namespaces gerenciados", + "Failed to fetch managed namespace details": "Falha\u00a0ao buscar detalhes do namespace gerenciado", + "Failed to update managed namespace": "Falha\u00a0ao atualizar namespace gerenciado", + "Updating": "Atualizando", + "Update": "Atualizar", + "AKS desktop logo": "Logotipo da área de trabalho do AKS", + "No Deployments Found": "Nenhuma Implantação Encontrada", + "There are no deployments in this project namespace yet.": "Ainda não há implantações nesse namespace do projeto.", + "Deploy an application to view logs.": "Implante\u00a0um aplicativo para exibir logs.", + "Metrics": "Métricas", + "CPU Usage": "Uso da CPU", + "Memory Usage": "Uso de Memória", + "Request Rate": "Taxa de Solicitação", + "Error Rate": "Taxa de Erro", + "Metrics refreshed every 30 seconds": "Métricas atualizadas a cada 30 segundos", + "Select a deployment to view metrics": "Selecione uma implantação para exibir as métricas", + "Metrics Unavailable": "Métricas Indisponíveis", + "Application Metrics": "Métricas do Aplicativo", + "Request & error rate": "Solicitação e taxa de erro", + "No data available": "Nenhum dado disponível", + "Response Time": "Tempo de\u00a0Resposta", + "Memory utilization": "Utilização da memória", + "Network I/O": "E/S de Rede", + "Deploy an application to start viewing metrics.": "Implante um aplicativo para começar a exibir métricas.", + "Please select a deployment to view metrics": "Selecione uma implantação para exibir as métricas", + "Project Status": "Status do Projeto", + "Total Pods": "Total de Pods", + "Application Health": "Integridade do\u00a0aplicativo", + "Loading metrics": "Carregando métricas", + "Resource Usage": "Uso do Recurso", + "Avg Response Time": "Tempo médio\u00a0de resposta", + "No response time data available": "Nenhum dado de tempo de resposta disponível", + "Absolute usage": "Uso\u00a0absoluto", + "Network In": "Entrada na Rede", + "Network Out": "Saída da Rede", + "Pod Details": "Detalhes do Pod", + "Pod Name": "Nome do Pod", + "Restarts": "Reinicializações", + "No pods found for deployment \"{{name}}\"": "Nenhum pod encontrado para a implantação \"{{name}}\"", + "Preview Features": "Versões Prévias do Recurso", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Habilite ou desabilite recursos que ainda estão em desenvolvimento. Os recursos de visualização podem ser alterados ou removidos em versões futuras.", + "GitHub Pipelines": "Pipelines do GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Habilite pipelines de implantação baseados no GitHub para projetos do AKS.", + "Loading scaling metrics from Prometheus": "Carregando métricas de\u00a0escala do Prometheus", + "Scaling Chart Unavailable": "Gráfico de Dimensionamento Indisponível", + "No scaling data available": "Nenhum dado de escala disponível", + "Edit HPA Configuration": "Editar Configuração de\u00a0HPA", + "Edit Manual Scaling Configuration": "Editar a Configuração de\u00a0Escala Manual", + "Minimum Replicas": "Mínimo de Réplicas", + "Maximum Replicas": "Máximo\u00a0de réplicas", + "Target CPU Utilization (%)": "Utilização da CPU de Destino (%)", + "Number of Replicas": "Número de Réplicas", + "Set the desired number of pod replicas for this deployment": "Definir o número desejado de réplicas de pod para essa implantação", + "Save": "Salvar", + "Scaling Mode": "Modo de Escala", + "Current Replicas": "Réplicas atuais", + "Desired Replicas": "Réplicas Desejadas", + "Configured Replicas": "Réplicas\u00a0Configuradas", + "Replica Bounds": "Limites de Réplica", + "Available Replicas": "Réplicas\u00a0disponíveis", + "CPU Usage / Target": "Uso/Meta da\u00a0CPU", + "Scaling": "Colocando em escala", + "Select a deployment to view scaling metrics": "Selecione uma implantação para exibir as métricas de escala", + "Scaling Overview": "Visão Geral da Escala", + "Edit Configuration": "Editar configuração", + "Scaling History (Last 24 Hours)": "Histórico de dimensionamento (últimas 24 horas)", + "Copied!": "Copiado!", + "Copy": "Copiar", + "Copy to clipboard": "Copiar para\u00a0a área de transferência", + "No deployments found": "Nenhuma implantação localizada", + "Select Deployment": "Selecionar Implantação", + "Loading deployments": "Carregando ambientes", + "No cluster is associated with this project.": "Nenhum cluster está associado a este projeto.", + "Please sign in to Azure to continue.": "Entre no Azure para continuar.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contexto do Azure necessário ausente. Verifique se você está conectado e se o cluster está associado a uma assinatura, um grupo de recursos e um locatário válidos.", + "Failed to load Azure context": "Falha ao carregar o contexto do Azure", + "just now": "só agora", + "{{seconds}}s ago": "Há {{seconds}} s", + "{{minutes}} min ago": "há {{minutes}} min", + "{{hours}}h ago": "Há {{hours}} hora(s)", + "{{days}}d ago": "{{days}} dia(s) atrás", + "{{weeks}}w ago": "Há {{weeks}} semanas" } diff --git a/plugins/aks-desktop/locales/pt-PT/translation.json b/plugins/aks-desktop/locales/pt-PT/translation.json index 7a1f45b6c..fe748b400 100644 --- a/plugins/aks-desktop/locales/pt-PT/translation.json +++ b/plugins/aks-desktop/locales/pt-PT/translation.json @@ -1,629 +1,682 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"Função de Utilizador de Cluster do AKS\" com âmbito do grupo de recursos", - "(already enabled)": "(já ativado)", + "Failed to load subscriptions": "Falha ao carregar subscrições", + "Failed to load AKS clusters": "Falha ao carregar clusters AKS", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster “{{cluster}}” intercalado com sucesso no kubeconfig", + "Failed to register cluster: {{message}}": "Falha ao registar o cluster: {{message}}", + "Register AKS Cluster": "Registar Cluster do AKS", + "Checking authentication status": "A verificar o estado da autenticação", + "You need to be logged in to Azure to register AKS clusters.": "Tem de ter sessão iniciada no Azure para registar clusters AKS.", + "Subscription": "Subscrição", + "Select an Azure subscription": "Selecionar uma subscrição do Azure", + "Loading subscriptions": "A carregar subscrições", + "Loading AKS clusters": "A carregar clusters do AKS", + "No AKS clusters found in this subscription.": "Não foram encontrados clusters do AKS nesta subscrição.", + "AKS Cluster": "Cluster do AKS", + "Select an AKS cluster": "Parar um cluster do AKS", + "Selected Cluster Details": "Detalhes do Cluster Selecionado", + "Name": "Nome", + "Resource Group": "Grupo de Recursos", + "Location": "Localização", + "Kubernetes Version": "Versão do Kubernetes", + "Done": "Concluído", + "Cancel": "Cancelar", + "Registering": "A registar", + "Register Cluster": "Registar Cluster", + "Initiating Azure login": "A iniciar sessão no Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Conclua a autenticação no seu browser. Esta janela será automaticamente redirecionada assim que o início de sessão estiver concluído.", + "Login successful! Redirecting": "Início de sessão bem-sucedido! A redirecionar", + "Login timeout. Please try again.": "Tempo limite de início de sessão. Tente novamente.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "A aguardar a conclusão do início de sessão... ({{minutes}} minutos restantes)", + "Failed to initiate login: {{message}}": "Falha ao iniciar o início de sessão: {{message}}", + "Azure Authentication": "Autenticação do Azure", + "Sign in with your Azure account to manage AKS clusters and resources": "Inicie sessão com a sua conta Azure para fazer a gestão dos clusters e recursos AKS.", + "Sign in with Azure": "Entrar com o Azure", + "Loading Azure account information": "A carregar informações da conta Azure", + "Back": "Anterior", + "Azure Account": "Conta do Azure", + "Logged in as": "Sessão iniciada como", + "Add Cluster from Azure": "Adicionar cluster a partir do Azure", + "Logging out": "A terminar sessão", + "Log out": "Terminar sessão", + "Azure CLI/aks-preview requirements not met": "Requisitos do Azure CLI/aks-preview não cumpridos", + "Dismiss": "Dispensar", + "Configure Pipeline": "Configurar Pipeline", + "Loading Azure context...": "A carregar o contexto do Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Acesso só de leitura à maioria dos objetos num espaço de nomes. Não pode ver funções, vínculos de funções nem Segredos.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Acesso de leitura/escrita à maioria dos objetos num espaço de nomes. Não pode ver nem modificar funções ou vínculos de funções. Pode aceder a Segredos e executar Pods como qualquer conta de serviço no espaço de nomes.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Acesso de leitura/escrita à maioria dos recursos num espaço de nomes. Pode criar funções e vínculos de funções dentro do espaço de nomes. Não pode escrever na quota de recursos nem no próprio espaço de nomes.", + "Access": "Aceder", + "Assign permissions to users who need access to your namespace": "Atribuir permissões aos utilizadores que precisam de acesso ao seu espao de nomes", + "Assignee": "Detentor", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Função", + "Remove assignee": "Remover detentor", + "Add assignee": "Adicionar detentor", + "Only clusters with Azure Entra ID authentication are shown.": "Apenas são mostrados clusters com autenticação Azure Entra ID.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} cluster(es) oculto(s) - sem Azure Entra ID", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} cluster(es) oculto(s) - sem Azure Entra ID", + "No eligible clusters found in this subscription.": "Não foram encontrados clusters elegíveis nesta subscrição.", "{{count}} eligible cluster(s) found._one": "{{count}} cluster(es) elegível(eis) encontrado(s).", + "{{count}} eligible cluster(s) found._many": "", "{{count}} eligible cluster(s) found._other": "{{count}} cluster(es) elegível(eis) encontrado(s).", - "{{count}} failed._one": "{{count}} falhado(s).", - "{{count}} failed._other": "{{count}} falhado(s).", - "{{count}} min_one": "{{count}} min", - "{{count}} min_other": "{{count}} min", - "{{count}} selected_one": "{{count}} selecionado(s)", - "{{count}} selected_other": "{{count}} selecionado(s)", - "{{days}}d ago": "Há {{days}} dia(s)", - "{{hours}}h ago": "Há {{hours}} h", - "{{minutes}} min ago": "Há {{minutes}} min", - "{{seconds}}s ago": "há {{seconds}}s", - "{{weeks}}w ago": "Há {{weeks}} semanas", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Tem de ser selecionado um cluster", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Será criado um novo espaço de nomes no cluster com etiquetas de projeto aplicadas. Aparecerá na sua lista de projetos imediatamente.", - "Absolute usage": "Utilização absoluta", - "Access": "Aceder", - "Access Control ({{count}} assignee)_one": "Controlo de Acesso ({{count}} detentor)", - "Access Control ({{count}} assignee)_other": "Controlo de Acesso ({{count}} detentores)", - "Actions": "Ações", - "Add assignee": "Adicionar detentor", - "Add Cluster from Azure": "Adicionar cluster a partir do Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Adicione um ou mais manifestos Kubernetes. Carregue ficheiros para preencher o editor ou cole/edite diretamente abaixo.", - "Add variable": "Adicionar variável", - "Advanced": "Avançado", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Depois de intercalar, o agente do Copilot irá analisar o seu repositório e criar um pedido Pull de implementação", - "Agent is working": "O agente está a trabalhar", - "AKS Cluster": "Cluster do AKS", - "AKS desktop logo": "logótipo do AKS desktop", - "AKS Managed": "Gerido pelo AKS", - "AKS Preview Extension installed successfully!": "Extensão de Pré-visualização do AKS instalada com sucesso!", - "AKS Preview Extension Required": "Extensão da CLI de Pré-visualização do AKS", - "AKS Project?": "Projeto do AKS?", - "All selected addons have been enabled successfully.": "Todos os suplementos selecionados foram ativados com êxito.", - "All verifications completed successfully!": "Todas as verificações foram concluídas com sucesso!", - "Allow all traffic": "Permitir todo o tráfego", - "Allow privilege escalation": "Permitir escalamento de privilégios", - "Allow traffic within same namespace": "Permitir tráfego no mesmo espaço de nomes", - "Already AKS projects (will import directly):": "Já são projetos do AKS (serão importados diretamente):", - "Also delete the namespaces (this will remove all resources within them)": "Eliminar também os espaços de nomes (isto irá remover todos os recursos dentro dos mesmos)", - "Another project already exists with same name. Please choose a different name.": "Já existe outro projeto com o mesmo nome. Escolha um nome diferente.", - "Application Health": "Estado de funcionamento da aplicação", - "Application Metrics": "Métricas da Aplicação", - "Application name": "Nome da aplicação", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Foram aplicados {{applied}} recurso(s), mas {{failed}} falhou:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} recurso(s) aplicado(s) com sucesso.", - "Applied {{count}} resource(s) successfully._other": "{{count}} recurso(s) aplicado(s) com sucesso.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Tem a certeza de que pretende eliminar o projeto \"{{projectId}}\"?", - "Assign permissions to users who need access to your namespace": "Atribuir permissões aos utilizadores que precisam de acesso ao seu espao de nomes", - "Assignee": "Detentor", - "Assigning AKS Cluster User Role...": "A atribuir a Função de Utilizador de Cluster do AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorize o AKS Desktop a criar pipelines de implementação no seu repositório.", - "Auto-generated Deployment and Service manifests": "Manifestos de Implementação e Serviço gerados automaticamente", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Dimensiona automaticamente o número de pods com base na utilização da CPU. O HPA aumentará os pods quando a utilização da CPU exceder o alvo e diminuí-los-á quando estiver abaixo do mesmo.", - "Available Replicas": "Réplicas Disponíveis", - "Avg Response Time": "Tempo médio de resposta", - "Azure Account": "Conta do Azure", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Autenticação do Azure", - "Azure CLI/aks-preview requirements not met": "Requisitos do Azure CLI/aks-preview não cumpridos", - "Azure Monitor Metrics (Managed Prometheus)": "Métricas do Azure Monitor (Prometheus Gerido)", - "Back": "Anterior", - "Basics": "Informações Básicas", - "branch": "ramo", - "Bring your own Kubernetes manifests to deploy": "Traga os seus próprios manifestos do Kubernetes para implementar", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Por predefinição, as sondas utilizam HTTP GET no caminho raiz com predefinições sensatas. Ative esta opção para personalizar as definições da sonda.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Por predefinição, a porta de serviço corresponde à porta de destino. Ative esta opção para utilizar uma porta diferente para o serviço.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Por predefinição, isto removerá o espaço de nomes gerido Azure e as etiquetas de projeto dos seguintes espaços de nomes:", - "Cancel": "Cancelar", - "Canceling will discard your pipeline progress. Are you sure?": "Cancelar irá eliminar o progresso do seu pipeline. Tem a certeza?", - "Cancelled deletion of project {{ projectId }}.": "Eliminação do projeto {{ projectId }} cancelada.", - "Checking authentication status": "A verificar o estado da autenticação", - "Checking for existing identity...": "A verificar se existe uma identidade...", - "Checking if another project exists with same name": "A verificar se existe outro projeto com o mesmo nome", - "Checking merge status...": "A verificar o estado da intercalação...", - "Checking repository readiness...": "A verificar a preparação do repositório...", - "Checking...": "A verificar...", - "Choose a source for your deployment (container image, repo, etc.).": "Escolha uma origem para a sua implementação (imagem do contentor, repositório, etc.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "O pipeline de CI/CD para {{repoFullName}} está pronto. Acione implementações no separador Implementar.", - "Clear editor": "Limpar editor", - "Close": "Fechar", - "Cluster": "Cluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Cluster “{{cluster}}” intercalado com sucesso no kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "O cluster {{clusterName}} tem de ser registado antes de importar espaços de nomes normais. Importe primeiro um espaço de nomes gerido a partir deste cluster.", - "Cluster Configuration": "Configuração do Cluster", - "Cluster is being deleted. Cannot deploy to this cluster.": "O cluster está a ser eliminado. Não é possível implementar neste cluster.", "Cluster is currently updating. Deployment may fail.": "O cluster está atualmente a atualizar. A implementação pode falhar.", - "Cluster is deallocated. Please start the cluster before deploying.": "O cluster foi desalocado. Inicie o cluster antes de fazer a implementação.", - "Cluster is in a failed state. Please check Azure portal.": "O cluster está num estado com falhas. Verifique o portal Azure.", + "Cluster is being deleted. Cannot deploy to this cluster.": "O cluster está a ser eliminado. Não é possível implementar neste cluster.", "Cluster is still being created. Please wait until creation completes.": "O cluster ainda está a ser criado. Aguarde até que a criação seja concluída.", + "Cluster is in a failed state. Please check Azure portal.": "O cluster está num estado com falhas. Verifique o portal Azure.", "Cluster is stopped. Please start the cluster before deploying.": "O cluster está parado. Inicie o cluster antes de implementar.", + "Cluster is deallocated. Please start the cluster before deploying.": "O cluster foi desalocado. Inicie o cluster antes de fazer a implementação.", + "AKS Preview Extension Required": "Extensão da CLI de Pré-visualização do AKS", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "A extensão aks-preview é necessária para criar espaços de nomes geridos. Instale-a para continuar.", + "Installing": "A instalar", + "Install Extension": "Instalar Extensão", + "AKS Preview Extension installed successfully!": "Extensão de Pré-visualização do AKS instalada com sucesso!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "A funcionalidade ManagedNamespacePreview tem de estar registada para criar espaços de nomes geridos.", + "Current state": "Estado atual", + "Please register it to continue.": "Registe-o para continuar.", + "Register ManagedNamespacePreview Feature": "Registar Funcionalidade ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "A funcionalidade ManagedNamespacePreview foi registada com êxito!", + "Project Name": "Nome do Projeto", + "Checking if another project exists with same name": "A verificar se existe outro projeto com o mesmo nome", + "Another project already exists with same name. Please choose a different name.": "Já existe outro projeto com o mesmo nome. Escolha um nome diferente.", + "Project name is available": "O nome do projeto está disponível", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "O nome do projeto deve conter apenas letras minúsculas, números e hífens (sem espaços)", + "Project Description": "Descrição do Projeto", + "Enter project description": "Introduza a descrição do projeto", + "Select a subscription": "Selecionar uma subscrição", + "Search subscriptions": "Procurar subscrições", + "No subscriptions found": "Nenhuma subscrição encontrada", + "Retry": "Tentar novamente", + "Cluster": "Cluster", + "Please select a subscription first": "Selecione uma subscrição primeiro", + "Loading clusters": "A carregar clusters", + "Select a cluster": "Selecionar um cluster", + "Search clusters": "Procurar clusters", + "No clusters with Azure Entra ID authentication found for this subscription": "Não foram encontrados clusters com autenticação Azure Entra ID para esta subscrição.", "Cluster Not Ready": "Cluster Não Preparado", - "Collapse panel": "Fechar painel", - "Complete authorization on your browser screen": "Conclua a autorização no ecrã do seu browser", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Conclua a instalação no seu browser. Isto será atualizado automaticamente assim que a aplicação for instalada em {{repoName}}.", - "Compute Quota": "Quota de Computação", - "Configuration Complete": "Configuração Concluída", - "Configuration Error": "Erro de Configuração", + "Refreshing": "A atualizar", + "Refresh": "Atualizar", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "O cluster selecionado está em falta no kubeconfig. Registe-o antes de continuar.", + "Registering cluster": "A registar cluster", + "Wizard steps": "Passos do assistente", + "Azure Monitor Metrics (Managed Prometheus)": "Métricas do Azure Monitor (Prometheus Gerido)", + "KEDA (Event-Driven Autoscaling)": "KEDA (Event-Driven Autoscaling)", + "VPA (Vertical Pod Autoscaler)": "VPA (Dimensionador Automático de Pod Vertical)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "A configuração está a demorar mais do que o esperado. Verifique o portal do Azure para ver o estado atual do seu cluster.", - "Configure": "Configurar", - "Configure Cluster": "Configurar Cluster", - "Configure Container Deployment": "Configurar Implementação de Contentor", - "Configure container health probes.": "Configurar sondas de estado de funcionamento do contentor.", - "Configure Pipeline": "Configurar Pipeline", - "Configure security context settings for the container.": "Configure as definições de contexto de segurança para o contentor.", - "Configure Workload Identity": "Configurar Identidade da Carga de Trabalho", - "Configured Replicas": "Réplicas Configuradas", + "Failed to enable addons": "Falha ao ativar suplementos", + "Failed to enable addon: {{error}}": "Falha ao ativar suplemento: {{error}}", + "Cluster Configuration": "Configuração do Cluster", + "(already enabled)": "(já ativado)", + "The following addons can be enabled on this cluster:": "Os seguintes suplementos podem ser ativados neste cluster:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "O motor da política de rede não pode ser alterado após a criação do cluster. Criar um novo cluster com", + "for full network policy support.": "para suporte completo de política de rede.", + "Enabling these addons may incur additional Azure costs.": "A ativação destes suplementos pode implicar custos adicionais do Azure.", + "Configuration Error": "Erro de Configuração", + "Configuration Complete": "Configuração Concluída", + "All selected addons have been enabled successfully.": "Todos os suplementos selecionados foram ativados com êxito.", "Configuring cluster... This may take a few minutes.": "A configurar cluster... Esta operação pode demorar alguns minutos.", - "Configuring federated credential...": "A configurar credencial federada...", + "Enabling Addons...": "A Ativar Suplementos...", "Configuring...": "A configurar...", - "Confirm & Import": "Confirmar e Importar", - "Connect": "Ligar", - "Connect GitHub": "Ligar o GitHub", - "Connect Source": "Ligar Origem", - "Connect to GitHub": "Ligar ao GitHub", - "Connected": "Ligado", - "Connected to '{{username}}'.": "Ligado a \"{{username}}\".", - "Connecting to GitHub...": "A ligar ao GitHub...", - "Connecting...": "A ligar...", - "Container image": "Imagem de contentor", - "Container Image": "Imagem de Contentor", - "Contents": "Conteúdo", - "Continue": "Continuar", - "Controls whether a process can gain more privileges than its parent process.": "Controla se um processo pode obter mais privilégios do que o respetivo processo principal.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controla se um processo pode obter mais privilégios do que o respetivo processo principal. Desativar esta opção (recomendado) impede ataques de escalamento de privilégios.", - "Convert Namespaces to AKS Projects": "Converter Espaços de Nomes em Projetos do AKS", - "Converting": "Converter", - "Converting {{name}} to AKS project (this may take a moment)...": "A converter {{name}} para projeto do AKS (pode demorar um momento)...", - "Copied!": "Copiado!", - "Copilot agent": "Agente do Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "O agente do Copilot reviu o seu repositório e gerou um pedido Pull de implementação", - "Copy": "Copiar", - "Copy to clipboard": "Copiar para a área de transferência", - "CPU": "CPU", - "CPU limit": "Limite de CPU", - "CPU Limits": "Limites de CPU", - "CPU request": "Pedido de CPU", - "CPU Requests": "Pedidos de CPU", + "Configure Cluster": "Configurar Cluster", + "Compute Quota": "Quota de Computação", + "Set quota limits to prevent overuse and maintain cluster stability": "Defina limites de quota para evitar o uso excessivo e manter a estabilidade do cluster.", "CPU Resources": "Recursos da CPU", - "CPU Usage": "Utilização da CPU", - "CPU Usage / Target": "Utilização/Objetivo da CPU", - "Create a new namespace on an existing cluster and set it up as a project": "Crie um novo espaço de nomes num cluster existente e configure-o como projeto", - "Create Application": "Criar Aplicação", - "Create deployment PRs": "Criar pedidos pull de implementação", - "Create Namespace": "Criar Espaço de Nomes", - "Create New Namespace": "Criar Novo Espaço de Nomes", + "CPU Requests": "Pedidos de CPU", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU mínima garantida (1000m = 1 núcleo de CPU)", + "CPU Limits": "Limites de CPU", + "Maximum CPU allowed (1000m = 1 CPU core)": "CPU máxima permitida (1000m = 1 núcleo de CPU)", + "Memory Resources": "Recursos de Memória", + "Memory Requests": "Pedidos de Memória", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memória mínima garantida (1024 MiB = 1 GiB)", + "Memory Limits": "Limites de Memória", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Memória máxima permitida (1024 MiB = 1 GiB)", + "Basics": "Informações Básicas", + "Networking Policies": "Políticas de Rede", + "Review": "Rever", + "New Project": "Novo Projeto", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Configurar e configurar um novo projeto no Azure Kubernetes Service (AKS).", + "Creating Project": "A Criar Projeto", "Create Project": "Criar Projeto", - "Create Setup PR": "Criar Pedido Pull de Configuração", - "Create setup workflow in .github/workflows/": "Criar fluxo de trabalho de configuração em .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Cria um LoadBalancer para expor a aplicação à Internet.", - "Creating managed identity...": "A criar identidade gerida...", + "Loading": "A carregar", + "Next": "Seguinte", + "Project Created Successfully!": "Projeto Criado com Êxito!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "O seu projeto AKS \"{{projectName}}\" foi criado e está pronto para ser utilizado.", + "Application name": "Nome da aplicação", + "Enter application name": "Introduza o nome da aplicação", + "Enter a name for your first application to get started with deployment.": "Introduza um nome para a sua primeira aplicação para começar a utilizar a implementação.", + "Create Application": "Criar Aplicação", + "Project Creation Failed": "Falha na Criação do Projeto", + "Set security, communication and access rules for incoming and outgoing traffic": "Defina regras de segurança, comunicação e acesso para o tráfego de entrada e saída", + "Allow traffic within same namespace": "Permitir tráfego no mesmo espaço de nomes", + "Allow all traffic": "Permitir todo o tráfego", + "Deny all traffic": "Negar todo o tráfego", + "Review Project Configuration": "Rever Configuração do Projeto", + "Please review all the settings before creating your AKS project": "Reveja todas as definições antes de criar o seu projeto AKS.", + "Project Basics": "Informações Básicas do Projeto", + "Description": "Descrição", + "No description provided": "Nenhuma descrição fornecida", + "Ingress Policy": "Política de Entrada", + "Egress Policy": "Política de Egress", + "CPU": "CPU", + "Requests": "Pedidos", + "Limits": "Limites", + "Memory": "Memória", + "Access Control ({{count}} assignee)_one": "Controlo de Acesso ({{count}} detentor)", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Controlo de Acesso ({{count}} detentores)", + "Not specified": "Não especificado", + "Select an option": "Selecione uma opção", + "No options": "Sem opções", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "A iniciar a criação do projeto", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "A criação do projeto excedeu o tempo limite após 10 minutos. Verifique se o espaço de nomes foi criado e tente novamente.", + "Initiating managed namespace creation": "A iniciar a criação do espaço de nomes gerido", + "Namespace creation failed: {{message}}": "Falha na criação do espaço de nomes: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Criação do espaço de nomes iniciada! A monitorizar o estado da criação", + "Waiting for namespace to propagate": "A aguardar a propagação do espaço de nomes", + "Namespace status check failed: {{message}}": "Falha na verificação do estado do espaço de nomes: {{message}}", + "Waiting for namespace to be created": "A aguardar a criação do namespace", + "Namespace status verification failed: {{message}}": "Falha na verificação do estado do espaço de nomes: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "A API de criação do espaço de nomes foi concluída com êxito, a prosseguir com as atribuições de utilizadores.", + "Namespace creation completed successfully! Adding user access": "A criação do espaço de nomes foi concluída com êxito! A adicionar acesso de utilizador.", + "User assignment completed with errors": "Atribuição de utilizador concluída com erros", + "Project creation completed successfully!": "Criação do projeto concluída com êxito!", + "Performing final status verification": "A efetuar verificação do estado final", + "Final status check failed: {{message}}": "Falha na verificação do estado final: {{message}}", + "Final status verification failed: {{message}}": "Falha na verificação do estado final: {{message}}", + "All verifications completed successfully!": "Todas as verificações foram concluídas com sucesso!", + "Failed to create project": "Falha ao criar projeto", + "A cluster must be selected": "Tem de ser selecionado um cluster", + "Namespace name is required": "O nome do espaço de nomes é obrigatório", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "O nome do espaço de nomes só pode conter letras minúsculas, números e hífenes e tem de começar e terminar num caráter alfanumérico", + "Namespace name must be 63 characters or fewer": "O nome do espaço de nomes tem de ter 63 carateres ou menos", "Creating namespace": "A criar espaço de nomes", + "Updating local settings": "A atualizar as definições locais", + "Namespace created successfully!": "Espaço de nomes criado com êxito!", + "Failed to create namespace": "Não foi possível criar o espaço de nomes", + "No clusters found. Register a cluster first.": "Nenhum cluster encontrado. Registar primeiro um cluster.", + "Namespace Name": "Nome do Espaço de Nomes", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Tem de conter apenas letras minúsculas, números e hífenes, a começar e terminar num caráter alfanumérico", + "The namespace will be created on the selected cluster and set up as a project": "O espaço de nomes será criado no cluster selecionado e configurado como projeto", + "Type": "Tipo", + "Regular Kubernetes namespace": "Espaço de nomes do Kubernetes normal", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Será criado um novo espaço de nomes no cluster com etiquetas de projeto aplicadas. Aparecerá na sua lista de projetos imediatamente.", + "Create New Namespace": "Criar Novo Espaço de Nomes", + "Create a new namespace on an existing cluster and set it up as a project": "Crie um novo espaço de nomes num cluster existente e configure-o como projeto", "Creating Namespace": "A Criar Espaço de Nomes", - "Creating Project": "A Criar Projeto", - "Creating setup PR...": "A criar Pedido Pull de Configuração...", - "Creating the trigger issue for the Copilot coding agent.": "A criar o problema de acionamento para o agente de programação do Copilot.", - "Current Replicas": "Réplicas Atuais", - "Current state": "Estado atual", - "Degraded": "Degradado", + "Namespace Creation Failed": "A Criação do Espaço de Nomes Falhou", + "Namespace Created Successfully!": "Espaço de Nomes Criado com Êxito!", + "Your project \"{{projectName}}\" is ready to use.": "O seu projeto “{{projectName}}” está pronto a ser utilizado.", + "Go To Projects": "Ir para Projetos", + "Create Namespace": "Criar Espaço de Nomes", "Delete project": "Eliminar projeto", "Delete Project": "Eliminar Projeto", + "Are you sure you want to delete project \"{{projectId}}\"?": "Tem a certeza de que pretende eliminar o projeto \"{{projectId}}\"?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Por predefinição, isto removerá o espaço de nomes gerido Azure e as etiquetas de projeto dos seguintes espaços de nomes:", + "Also delete the namespaces (this will remove all resources within them)": "Eliminar também os espaços de nomes (isto irá remover todos os recursos dentro dos mesmos)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Aviso: esta ação não pode ser anulada. Todos os recursos nestes espaços de nomes serão eliminados permanentemente.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Nota: para espaços de nomes geridos pelo AKS, a gestão Azure ARM será removida automaticamente.", "Delete Project & Namespaces": "Eliminar Projeto e Espaços de Nomes", - "Deleted project {{ projectId }}.": "Projeto {{ projectId }} eliminado.", "Deleting project {{ projectId }}…": "A eliminar o projeto {{ projectId }}…", - "Deny all traffic": "Negar todo o tráfego", - "Deploy": "Implementar", - "Deploy {{repo}}": "Implementar {{repo}}", - "Deploy an application to start viewing metrics.": "Implemente uma aplicação para começar a ver as métricas.", - "Deploy an application to view logs.": "Implemente uma aplicação para ver registos.", + "Cancelled deletion of project {{ projectId }}.": "Eliminação do projeto {{ projectId }} cancelada.", + "Deleted project {{ projectId }}.": "Projeto {{ projectId }} eliminado.", + "Error deleting project {{ projectId }}.": "Erro ao eliminar o projeto {{ projectId }}.", "Deploy Application": "Implementar Aplicação", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implementar a partir do Azure Container Registry, Docker Hub ou GHCR", + "Failed to load pipeline runs": "Falha ao carregar execuções do pipeline", + "Pipeline": "Pipeline", + "Set up your pipeline": "Configurar o seu pipeline", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configure um pipeline de CI/CD para automatizar as suas implementações e simplificar o seu fluxo de trabalho", + "Waiting for browser authorization...": "A aguardar autorização no browser...", + "Sign in to GitHub to view pipeline runs.": "Inicie sessão no GitHub para ver execuções do pipeline.", + "Connecting...": "A ligar...", + "No pipeline runs yet.": "Ainda não existem execuções do pipeline.", + "View on GitHub": "Ver no GitHub", + "View run on GitHub": "Ver execução no GitHub", + "Healthy": "Bom Estado de Funcionamento", + "Scaled down": "Reduzido verticalmente", + "Degraded": "Degradado", + "VS Code": "VS Code", + "Manual": "Manual", + "Manual Deploy": "Implementação Manual", + "Deploy {{repo}}": "Implementar {{repo}}", "Deploy via Pipeline": "Implementar através do Pipeline", - "Deploying": "A implementar", + "No deployments found in this namespace.": "Não foram encontradas implementações neste espaço de nomes.", "Deployment": "Implementação", - "Deployment PR": "Pedido pull de Implementação", - "Deployment PR Ready": "Pedido Pull de Implementação Pronto", - "Deployment PR reviewed and merged": "Pedido pull de implementação revisto e intercalado", - "Deployment source": "Origem de implementação", - "Description": "Descrição", - "Deselect All": "Desselecionar Tudo", - "Desired Replicas": "Réplicas Pretendidas", - "Discard": "Eliminar", - "Dismiss": "Dispensar", - "Distributes pods evenly across nodes to improve workload distribution.": "Distribui os pods uniformemente pelos nós para melhorar a distribuição da carga de trabalho.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribui os pods uniformemente entre nós, zonas ou outros domínios de topologia para melhorar a distribuição da carga de trabalho e a disponibilidade.", - "Done": "Concluído", - "Edit Configuration": "Editar Configuração", + "Source": "Origem", + "Replicas": "Réplicas", + "Ready": "Preparada", + "Status": "Estado", + "Actions": "Ações", "Edit deployment": "Editar implementação", - "Edit HPA Configuration": "Editar Configuração HPA", - "Edit Manual Scaling Configuration": "Editar Configuração de Dimensionamento Manual", - "Egress Policy": "Política de Egress", + "View workflow run": "Ver execução do fluxo de trabalho", + "Re-deploy": "Implementar novamente", + "Failed to trigger deployment": "Falha ao acionar a implementação", + "Trigger": "Acionador", + "workflow on": "fluxo de trabalho em", + "with the following parameters:": "com os seguintes parâmetros:", + "Namespace": "Espaço de nomes", + "Sign in": "Iniciar sessão", + "GitHub authentication required to trigger deployment.": "É necessária autenticação do GitHub para acionar a implementação.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "O acionamento do fluxo de trabalho foi efetuado com êxito. Consulte o GitHub Actions para monitorizar o progresso.", + "Close": "Fechar", + "Triggering...": "A acionar...", + "Deploy": "Implementar", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Ative Pipelines do GitHub em Definições → Funcionalidades de Pré-Visualização para utilizar implementações por pipeline.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Ative pipelines de implementação baseados no GitHub para projetos do AKS.", - "Enable Horizontal Pod Autoscaler": "Ativar Dimensionador Automático de Pods Horizontal", - "Enable liveness probe": "Ativar pesquisa liveness", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Ative ou desative funcionalidades que ainda estão em desenvolvimento. As funcionalidades de pré-visualização podem mudar ou ser removidas em versões futuras.", - "Enable pod anti-affinity": "Ativar anti-afinidade de pod", - "Enable public access": "Ativar acesso público", - "Enable readiness probe": "Ativar pesquisa readiness", - "Enable resource requests and limits": "Ativar pedidos e limites de recursos", - "Enable startup probe": "Ativar pesquisa do programa de arranque do sistema", - "Enable topology spread constraints": "Ativar restrições de difusão topológica", - "Enabling Addons...": "A Ativar Suplementos...", - "Enabling these addons may incur additional Azure costs.": "A ativação destes suplementos pode implicar custos adicionais do Azure.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Certifique-se de que mínimo ≤ máximo de réplicas e CPU de destino entre 10% e 95%.", + "Workloads": "Cargas de Trabalho", + "No clusters in this project.": "Não existem clusters neste projeto.", + "Failed to fetch deployments": "Falha ao obter implementações", + "Failed to fetch cluster status": "Falha ao obter o estado do cluster", + "Configure security context settings for the container.": "Configure as definições de contexto de segurança para o contentor.", + "Run as non root user": "Executar como utilizador não raiz", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Garante que o contentor é executado como utilizador não raiz (UID != 0) para maior segurança. Isto impede ataques de escalamento de privilégios.", "Ensures the container runs as a non-root user for better security.": "Garante que o contentor é executado como um utilizador não raiz para uma melhor segurança.", - "Ensuring resource group exists...": "A garantir que o grupo de recursos existe...", - "Enter a name for your first application to get started with deployment.": "Introduza um nome para a sua primeira aplicação para começar a utilizar a implementação.", - "Enter application name": "Introduza o nome da aplicação", - "Enter project description": "Introduza a descrição do projeto", - "Environment Variables": "Variáveis de Ambiente", - "Error deleting project {{ projectId }}.": "Erro ao eliminar o projeto {{ projectId }}.", - "Error Rate": "Taxa de Erros", - "Failed to apply": "Falha ao aplicar", - "Failed to apply resources.": "Falha ao aplicar recursos.", - "Failed to convert namespace: {{message}}": "Não foi possível converter o espaço de nomes: {{message}}", - "Failed to create namespace": "Não foi possível criar o espaço de nomes", - "Failed to create project": "Falha ao criar projeto", - "Failed to enable addon: {{error}}": "Falha ao ativar suplemento: {{error}}", - "Failed to enable addons": "Falha ao ativar suplementos", - "Failed to fetch cluster status": "Falha ao obter o estado do cluster", - "Failed to fetch deployment status": "Falha ao obter o estado da implementação", - "Failed to fetch deployments": "Falha ao obter implementações", - "Failed to fetch managed namespace details": "Falha ao obter os detalhes do espaço de nomes gerido", - "Failed to fetch managed namespaces": "Não foi possível obter os espaços de nomes geridos", - "Failed to fetch pod status": "Falha ao obter o estado do pod", - "Failed to fetch service status": "Falha ao obter o estado do serviço", - "Failed to import any projects. See details below.": "Falha ao importar quaisquer projetos. Veja os detalhes abaixo.", - "Failed to initiate login: {{message}}": "Falha ao iniciar o início de sessão: {{message}}", - "Failed to load AKS clusters": "Falha ao carregar clusters AKS", - "Failed to load Azure context": "Falha ao carregar o contexto do Azure", - "Failed to load pipeline runs": "Falha ao carregar execuções do pipeline", - "Failed to load repositories": "Falha ao carregar repositórios", - "Failed to load subscriptions": "Falha ao carregar subscrições", - "Failed to merge cluster: {{message}}": "Falha ao intercalar o cluster: {{message}}", - "Failed to monitor deployment health": "Falha ao monitorizar o estado de funcionamento da implementação", - "Failed to register cluster: {{message}}": "Falha ao registar o cluster: {{message}}", - "Failed to trigger deployment": "Falha ao acionar a implementação", - "Failed to update managed namespace": "Falha ao atualizar o espaço de nomes gerido", - "failureThreshold": "failureThreshold", - "Features": "Funcionalidades", - "Federated Credential": "Credencial Federada", - "Filter repositories": "Filtrar repositórios", - "Final status check failed: {{message}}": "Falha na verificação do estado final: {{message}}", - "Final status verification failed: {{message}}": "Falha na verificação do estado final: {{message}}", - "for full network policy support.": "para suporte completo de política de rede.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifestos do Kubernetes gerados (espaço de nomes: {{namespace}})", - "GitHub authentication required to trigger deployment.": "É necessária autenticação do GitHub para acionar a implementação.", - "GitHub Pipelines": "Pipelines do GitHub", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Ir para Projetos", - "Guided configuration for ports, replicas, env, and resources": "Configuração guiada para portas, réplicas, variáveis de ambiente e recursos.", + "Read only root filesystem": "Sistema de ficheiros raiz só de leitura", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta o sistema de ficheiros raiz do contentor como só de leitura para impedir operações de escrita. Isto reforça a segurança, ao impedir que código malicioso modifique ficheiros do sistema.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta o sistema de ficheiros raiz do contentor como só de leitura para impedir operações de escrita.", + "Allow privilege escalation": "Permitir escalamento de privilégios", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Controla se um processo pode obter mais privilégios do que o respetivo processo principal. Desativar esta opção (recomendado) impede ataques de escalamento de privilégios.", + "Controls whether a process can gain more privileges than its parent process.": "Controla se um processo pode obter mais privilégios do que o respetivo processo principal.", + "Enable pod anti-affinity": "Ativar anti-afinidade de pod", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "É aconselhável agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas. Isto ajuda a garantir que os pods são distribuídos pelo cluster.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prefira agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas.", + "Enable topology spread constraints": "Ativar restrições de difusão topológica", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribui os pods uniformemente entre nós, zonas ou outros domínios de topologia para melhorar a distribuição da carga de trabalho e a disponibilidade.", + "Distributes pods evenly across nodes to improve workload distribution.": "Distribui os pods uniformemente pelos nós para melhorar a distribuição da carga de trabalho.", + "Container image": "Imagem de contentor", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "O número de réplicas de pods a executar. Mais réplicas proporcionam melhor disponibilidade e distribuição da carga.", + "Continue": "Continuar", + "Configure Container Deployment": "Configurar Implementação de Contentor", + "Networking": "Rede", "Healthchecks": "Verificações de estado de funcionamento", - "Healthy": "Bom Estado de Funcionamento", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Com que frequência (em segundos) efetuar a pesquisa liveness. A predefinição é dez segundos.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Com que frequência (em segundos) efetuar a pesquisa readiness. A predefinição é dez segundos.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Com que frequência (em segundos) efetuar a pesquisa do programa de arranque do sistema. A predefinição é dez segundos.", - "HPA scales pods based on CPU utilization.": "O HPA dimensiona os pods com base na utilização da CPU.", - "Identity Resource Group": "Grupo de Recursos da Identidade", - "Import AKS Projects": "Importar Projetos do AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importe espaços de nomes geridos e espaços de nomes normais existentes como projetos. Os espaços de nomes que ainda não são projetos de Ambiente de Trabalho do AKS serão convertidos ao adicionar a etiqueta de projeto necessária.", - "Import Selected Projects": "Importar Projetos Selecionados", - "Importing": "A importar", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "A importar {{current}} de {{total}}: {{name}} a partir de {{clusterName}}", - "in resource group": "no grupo de recursos", + "Resource Limits": "Limites de Recursos", + "Environment Variables": "Variáveis de Ambiente", + "Workload Identity": "", + "Advanced": "Avançado", "Information about {{label}}": "Informações sobre {{label}}", - "Information about CPU limit": "Informações sobre o limite da CPU", - "Information about CPU request": "Informações sobre o pedido de CPU", - "Information about memory limit": "Informações sobre o limite de memória", - "Information about memory request": "Informações sobre o pedido de memória", - "Information about target CPU utilization": "Informações sobre a utilização-alvo da CPU", - "Ingress Policy": "Política de Entrada", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "A inicializar...", - "Initiating Azure login": "A iniciar sessão no Azure", - "Initiating managed namespace creation": "A iniciar a criação do espaço de nomes gerido", - "Install Extension": "Instalar Extensão", - "Install GitHub App": "Instalar Aplicação GitHub", - "Installing": "A instalar", - "Internal only": "Apenas interno", - "Invalid YAML": "YAML inválido", - "Invalid YAML: List item missing required field (kind)": "YAML inválido: falta o campo obrigatório (tipo) do item de lista", - "Invalid YAML: List item missing required field (metadata.name)": "YAML inválido: falta o campo obrigatório (metadata.name) do item de lista", - "Invalid YAML: List resource must have an array \"items\" field": "YAML inválido: o recurso de lista tem de ter um campo de matriz \"itens\"", - "Invalid YAML: missing required field (kind)": "YAML inválido: campo obrigatório em falta (tipo)", - "Invalid YAML: missing required field (metadata.name)": "YAML inválido: campo obrigatório em falta (metadata.name)", - "Issue {{number}}": "Problema {{number}}", - "Issues": "Problemas", - "just now": "agora mesmo", - "KEDA (Event-Driven Autoscaling)": "KEDA (Event-Driven Autoscaling)", - "Keep Going": "Continuar", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Adicione um ou mais manifestos Kubernetes. Carregue ficheiros para preencher o editor ou cole/edite diretamente abaixo.", + "Upload files": "Carregar ficheiros", + "Clear editor": "Limpar editor", + "Review & Deploy": "Rever & Implementar", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Manifestos do Kubernetes gerados (espaço de nomes: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Recursos a implementar ({{count}} objeto)", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Recursos a implementar ({{count}} objeto)", + "namespace: {{namespace}}": "espaço de nomes: {{namespace}}", + "Configure": "Configurar", + "Deploying": "A implementar", "Key": "Chave", - "Kubernetes restarts the container if this check fails repeatedly.": "O Kubernetes reinicia o contentor se esta verificação falhar repetidamente.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Valor", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "remover", + "Add variable": "Adicionar variável", + "Configure container health probes.": "Configurar sondas de estado de funcionamento do contentor.", + "Manually configure settings": "Configurar definições manualmente", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Por predefinição, as sondas utilizam HTTP GET no caminho raiz com predefinições sensatas. Ative esta opção para personalizar as definições da sonda.", + "Enable liveness probe": "Ativar pesquisa liveness", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "O Kubernetes reinicia o contentor se esta verificação falhar repetidamente. Utilizado para detetar e recuperar de impasses ou contentores sem resposta.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "O Kubernetes desativa temporariamente a liveness/readiness até o arranque ter êxito.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "O Kubernetes desativa temporariamente a pesquisa liveness/readiness até que o programa de arranque do sistema tenha êxito. Útil para contentores que demoram muito tempo a iniciar.", - "Kubernetes Version": "Versão do Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "O Kubernetes não enviará tráfego para o pod até esta verificação ser bem-sucedida.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "O Kubernetes não enviará tráfego para o pod até esta verificação ter êxito. Utilizada para indicar quando um contentor está pronto para aceitar tráfego.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "menos de um minuto", - "Limits": "Limites", + "Kubernetes restarts the container if this check fails repeatedly.": "O Kubernetes reinicia o contentor se esta verificação falhar repetidamente.", "Liveness path": "Caminho de liveness", - "Loading": "A carregar", - "Loading AKS clusters": "A carregar clusters do AKS", - "Loading Azure account information": "A carregar informações da conta Azure", - "Loading Azure context...": "A carregar o contexto do Azure...", - "Loading clusters": "A carregar clusters", - "Loading configuration...": "A carregar a configuração...", - "Loading deployments": "A carregar implementações", - "Loading metrics": "A carregar métricas", - "Loading scaling metrics from Prometheus": "A carregar métricas de dimensionamento a partir do Prometheus", - "Loading subscriptions": "A carregar subscrições", - "Loading...": "A carregar...", - "Location": "Localização", - "Log out": "Terminar sessão", - "Logged in as": "Sessão iniciada como", - "Logging out": "A terminar sessão", - "Login successful! Redirecting": "Início de sessão bem-sucedido! A redirecionar", - "Login timeout. Please try again.": "Tempo limite de início de sessão. Tente novamente.", - "Managed Identity": "Identidade Gerida", - "managed namespaces only": "apenas espaços de nomes geridos", - "ManagedNamespacePreview feature registered successfully!": "A funcionalidade ManagedNamespacePreview foi registada com êxito!", - "Manual": "Manual", - "Manual Deploy": "Implementação Manual", - "Manually configure settings": "Configurar definições manualmente", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar o estado de liveness (por exemplo, /healthz). A pesquisa executa um pedido HTTP GET neste caminho.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Número de segundos após o início do contentor antes de as pesquisas liveness serem iniciadas.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Com que frequência (em segundos) efetuar a pesquisa liveness. A predefinição é dez segundos.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "O número de segundos até que a pesquisa exceda o limite de tempo. A predefinição é 1 segundo.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Quando uma pesquisa falha, o Kubernetes tentará este número de vezes antes de desistir e reiniciar o contentor.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "O número mínimo de êxitos consecutivos para que a pesquisa seja considerada bem-sucedida depois de ter falhado. A predefinição é 1.", + "Enable readiness probe": "Ativar pesquisa readiness", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "O Kubernetes não enviará tráfego para o pod até esta verificação ter êxito. Utilizada para indicar quando um contentor está pronto para aceitar tráfego.", + "Kubernetes won't send traffic to the pod until this check passes.": "O Kubernetes não enviará tráfego para o pod até esta verificação ser bem-sucedida.", + "Readiness path": "Caminho de readiness", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar o estado de readiness (por exemplo, /ready). A pesquisa executa um pedido HTTP GET neste caminho.", + "Number of seconds after the container has started before readiness probes are initiated.": "Número de segundos após o início do contentor antes de as pesquisas readiness serem iniciadas.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Com que frequência (em segundos) efetuar a pesquisa readiness. A predefinição é dez segundos.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Quando uma pesquisa falha, o Kubernetes tentará este número de vezes antes de marcar o pod como não pronto.", + "Enable startup probe": "Ativar pesquisa do programa de arranque do sistema", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "O Kubernetes desativa temporariamente a pesquisa liveness/readiness até que o programa de arranque do sistema tenha êxito. Útil para contentores que demoram muito tempo a iniciar.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "O Kubernetes desativa temporariamente a liveness/readiness até o arranque ter êxito.", + "Startup path": "Caminho do programa de arranque do sistema", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar o programa de arranque do sistema (por exemplo, /startup). A pesquisa executa um pedido HTTP GET neste caminho.", + "Number of seconds after the container has started before startup probes are initiated.": "Número de segundos após o início do contentor antes de as pesquisas do programa de arranque do sistema serem iniciadas.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Com que frequência (em segundos) efetuar a pesquisa do programa de arranque do sistema. A predefinição é dez segundos.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Quando uma pesquisa falha, o Kubernetes tentará este número de vezes antes de desistir. Para pesquisas do programa de arranque do sistema, este valor determina quanto tempo esperar antes de reiniciar.", + "Enable Horizontal Pod Autoscaler": "Ativar Dimensionador Automático de Pods Horizontal", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Dimensiona automaticamente o número de pods com base na utilização da CPU. O HPA aumentará os pods quando a utilização da CPU exceder o alvo e diminuí-los-á quando estiver abaixo do mesmo.", + "HPA scales pods based on CPU utilization.": "O HPA dimensiona os pods com base na utilização da CPU.", + "Min replicas": "Mínimo de réplicas", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "O número mínimo de réplicas de pods que o HPA manterá, mesmo quando a utilização da CPU for baixa.", "Max replicas": "Máximo de réplicas", - "Maximum CPU allowed (1000m = 1 CPU core)": "CPU máxima permitida (1000m = 1 núcleo de CPU)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Memória máxima permitida (1024 MiB = 1 GiB)", - "Maximum Replicas": "Máximo de réplicas", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "O número máximo de réplicas de pods até ao qual o HPA pode aumentar verticalmente quando a utilização da CPU é elevada.", + "Target CPU utilization": "Utilização da CPU alvo", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "A percentagem média de utilização da CPU de destino em todos os pods. O HPA aumentará a escala quando a utilização da CPU exceder este valor e diminuirá quando estiver abaixo.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Certifique-se de que mínimo ≤ máximo de réplicas e CPU de destino entre 10% e 95%.", + "Target port": "Porta de destino", + "The port number that your container listens on. This is the port inside the container where your application runs.": "O número de porta em que o seu contentor escuta. Esta é a porta no interior do contentor onde a sua aplicação é executada.", + "Service port": "Porta de serviço", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "O número de porta exposta pelo serviço do Kubernetes. O tráfego para esta porta é encaminhado para a porta de destino.", + "Use custom service port": "Utilizar porta de serviço personalizada", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Por predefinição, a porta de serviço corresponde à porta de destino. Ative esta opção para utilizar uma porta diferente para o serviço.", + "Service type": "Tipo de serviço", + "Internal only": "Apenas interno", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Utilize ClusterIP. Ideal para serviços que só estão acessíveis dentro do cluster.", + "Enable public access": "Ativar acesso público", + "Creates a LoadBalancer to expose the application to the internet.": "Cria um LoadBalancer para expor a aplicação à Internet.", + "Enable resource requests and limits": "Ativar pedidos e limites de recursos", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Defina pedidos de CPU e memória (recursos garantidos) e limites (recursos máximos) para controlar a alocação de recursos e impedir que os contentores consumam recursos excessivos do cluster.", + "CPU request": "Pedido de CPU", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "A quantidade mínima de CPU garantida ao contentor. O Kubernetes agendará o pod num nó com pelo menos essa quantidade de CPU disponível.", + "millicores": "milinúcleos", + "CPU limit": "Limite de CPU", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "A quantidade máxima de CPU que o contentor pode utilizar. Se for excedida, o contentor será limitado.", + "Memory request": "Pedido de memória", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "A quantidade mínima de memória garantida para o contentor. O Kubernetes irá agendar o pod num nó com, pelo menos, esta quantidade de memória disponível.", "mebibytes": "mebibytes", - "Memory": "Memória", "Memory limit": "Limite de memória", - "Memory Limits": "Limites de Memória", - "Memory request": "Pedido de memória", - "Memory Requests": "Pedidos de Memória", - "Memory Resources": "Recursos de Memória", - "Memory Usage": "Utilização da Memória", - "Memory utilization": "Utilização da memória", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "A unir o cluster {{clusterName}} ({{count}} espaço(s) de nomes)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "A unir o cluster {{clusterName}} ({{count}} espaço(s) de nomes)", - "Metrics": "Métrica", - "Metrics refreshed every 30 seconds": "Métricas atualizadas a cada 30 segundos", - "Metrics Unavailable": "Métricas Indisponíveis", - "millicores": "milinúcleos", - "Min replicas": "Mínimo de réplicas", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "O número mínimo de êxitos consecutivos para que a pesquisa seja considerada bem-sucedida depois de ter falhado. A predefinição é 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "CPU mínima garantida (1000m = 1 núcleo de CPU)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Memória mínima garantida (1024 MiB = 1 GiB)", - "Minimum Replicas": "Mínimo de Réplicas", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contexto necessário do Azure em falta. Certifique-se de que tem sessão iniciada e de que o cluster está associado a uma subscrição, grupo de recursos e inquilino válidos.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Monta o sistema de ficheiros raiz do contentor como só de leitura para impedir operações de escrita.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monta o sistema de ficheiros raiz do contentor como só de leitura para impedir operações de escrita. Isto reforça a segurança, ao impedir que código malicioso modifique ficheiros do sistema.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Suporte para vários ficheiros (Implementações, Serviços, Ingressos, etc.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Tem de conter apenas letras minúsculas, números e hífenes, a começar e terminar num caráter alfanumérico", - "Name": "Nome", - "Namespace": "Espaço de nomes", - "Namespace '{{name}}' converted and imported as project": "Espaço de nomes “{{name}}” convertido e importado como projeto", - "Namespace created successfully!": "Espaço de nomes criado com êxito!", - "Namespace Created Successfully!": "Espaço de Nomes Criado com Êxito!", - "Namespace creation API succeeded, proceeding with user assignments": "A API de criação do espaço de nomes foi concluída com êxito, a prosseguir com as atribuições de utilizadores.", - "Namespace creation completed successfully! Adding user access": "A criação do espaço de nomes foi concluída com êxito! A adicionar acesso de utilizador.", - "Namespace Creation Failed": "A Criação do Espaço de Nomes Falhou", - "Namespace creation failed: {{message}}": "Falha na criação do espaço de nomes: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Criação do espaço de nomes iniciada! A monitorizar o estado da criação", - "Namespace Name": "Nome do Espaço de Nomes", - "Namespace name is required": "O nome do espaço de nomes é obrigatório", - "Namespace name must be 63 characters or fewer": "O nome do espaço de nomes tem de ter 63 carateres ou menos", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "O nome do espaço de nomes só pode conter letras minúsculas, números e hífenes e tem de começar e terminar num caráter alfanumérico", - "Namespace status check failed: {{message}}": "Falha na verificação do estado do espaço de nomes: {{message}}", - "Namespace status verification failed: {{message}}": "Falha na verificação do estado do espaço de nomes: {{message}}", - "namespace: {{namespace}}": "espaço de nomes: {{namespace}}", - "Namespaces to convert:": "Espaços de nomes a converter:", - "Network I/O": "E/S de Rede", - "Network In": "Entrada na Rede", - "Network Out": "Saída da Rede", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "O motor da política de rede não pode ser alterado após a criação do cluster. Criar um novo cluster com", - "Networking": "Rede", - "Networking Policies": "Políticas de Rede", - "New Project": "Novo Projeto", - "Next": "Seguinte", - "No": "Não", - "No AKS clusters found in this subscription.": "Não foram encontrados clusters do AKS nesta subscrição.", - "No cluster is associated with this project.": "Não existe nenhum cluster associado a este projeto.", - "No clusters found. Register a cluster first.": "Nenhum cluster encontrado. Registar primeiro um cluster.", - "No clusters in this project.": "Não existem clusters neste projeto.", - "No clusters with Azure Entra ID authentication found for this subscription": "Não foram encontrados clusters com autenticação Azure Entra ID para esta subscrição.", - "No data available": "Sem dados disponíveis", - "No deployments found": "Nenhuma implementação encontrada", - "No Deployments Found": "Não Foram Encontradas implementações", - "No deployments found in this namespace.": "Não foram encontradas implementações neste espaço de nomes.", - "No description provided": "Nenhuma descrição fornecida", - "No eligible clusters found in this subscription.": "Não foram encontrados clusters elegíveis nesta subscrição.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "A quantidade máxima de memória que o contentor pode utilizar. Se for excedida, o contentor será terminado (OOMKilled).", + "Container Image": "Imagem de Contentor", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Implementar a partir do Azure Container Registry, Docker Hub ou GHCR", + "Auto-generated Deployment and Service manifests": "Manifestos de Implementação e Serviço gerados automaticamente", + "Guided configuration for ports, replicas, env, and resources": "Configuração guiada para portas, réplicas, variáveis de ambiente e recursos.", "No Kubernetes expertise required to get started": "Não são necessários conhecimentos do Kubernetes para começar", - "No options": "Sem opções", - "No pipeline runs yet.": "Ainda não existem execuções do pipeline.", - "No pods found for deployment \"{{name}}\"": "Não foram encontrados pods para a implementação \"{{name}}\"", - "No repositories found": "Nenhum repositório encontrado", - "No repositories match your filter": "Nenhum repositório corresponde ao seu filtro", - "No response time data available": "Não existem dados de tempo de resposta disponíveis", - "No scaling data available": "Não existem dados de dimensionamento disponíveis", - "No subscriptions found": "Nenhuma subscrição encontrada", - "Not specified": "Não especificado", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Nota: para espaços de nomes geridos pelo AKS, a gestão Azure ARM será removida automaticamente.", - "Number of Replicas": "Número de Réplicas", - "Number of seconds after the container has started before liveness probes are initiated.": "Número de segundos após o início do contentor antes de as pesquisas liveness serem iniciadas.", - "Number of seconds after the container has started before readiness probes are initiated.": "Número de segundos após o início do contentor antes de as pesquisas readiness serem iniciadas.", - "Number of seconds after the container has started before startup probes are initiated.": "Número de segundos após o início do contentor antes de as pesquisas do programa de arranque do sistema serem iniciadas.", - "Number of seconds after which the probe times out. Default is 1 second.": "O número de segundos até que a pesquisa exceda o limite de tempo. A predefinição é 1 segundo.", - "OIDC trust for": "Confiança OIDC para", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Assim que o agente tiver criado o pedido Pull de implementação, reveja os ficheiros gerados e intercale para iniciar o pipeline de implementação", - "Only clusters with Azure Entra ID authentication are shown.": "Apenas são mostrados clusters com autenticação Azure Entra ID.", - "Performing final status verification": "A efetuar verificação do estado final", - "periodSeconds": "periodSeconds", - "Pipeline": "Pipeline", - "Pipeline configured": "Pipeline configurado", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Conclua a autenticação no seu browser. Esta janela será automaticamente redirecionada assim que o início de sessão estiver concluído.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Registe-o para continuar.", - "Please review all the settings before creating your AKS project": "Reveja todas as definições antes de criar o seu projeto AKS.", - "Please select a deployment to view metrics": "Selecione uma implementação para ver as métricas", - "Please select a subscription first": "Selecione uma subscrição primeiro", - "Please select at least one namespace to import": "Selecione, pelo menos, um espaço de nomes para importar", - "Please sign in to Azure to continue.": "Inicie sessão no Azure para continuar.", - "Pod Details": "Detalhes do Pod", - "Pod Name": "Nome do Pod", - "PR {{number}}": "Pedido pull {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prefira agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "É aconselhável agendar pods em nós diferentes para melhorar a disponibilidade e a tolerância a falhas. Isto ajuda a garantir que os pods são distribuídos pelo cluster.", + "Bring your own Kubernetes manifests to deploy": "Traga os seus próprios manifestos do Kubernetes para implementar", + "Use existing manifests for full control": "Utilizar manifestos existentes para controlo total", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Suporte para vários ficheiros (Implementações, Serviços, Ingressos, etc.)", "Preview and basic validation before apply": "Pré-visualização e validação básica antes da aplicação", - "Preview Features": "Funcionalidades de Pré-visualização", - "Project '{{name}}' successfully imported": "Projeto “{{name}}” importado com êxito", - "Project Basics": "Informações Básicas do Projeto", - "Project Created Successfully!": "Projeto Criado com Êxito!", - "Project creation completed successfully!": "Criação do projeto concluída com êxito!", - "Project Creation Failed": "Falha na Criação do Projeto", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "A criação do projeto excedeu o tempo limite após 10 minutos. Verifique se o espaço de nomes foi criado e tente novamente.", - "Project Description": "Descrição do Projeto", - "Project Name": "Nome do Projeto", - "Project name is available": "O nome do projeto está disponível", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "O nome do projeto deve conter apenas letras minúsculas, números e hífens (sem espaços)", - "Project Status": "Estado do Projeto", - "Pull requests": "Pedidos Pull", + "Select Source": "Selecionar Origem", + "Choose a source for your deployment (container image, repo, etc.).": "Escolha uma origem para a sua implementação (imagem do contentor, repositório, etc.).", + "Deployment source": "Origem de implementação", + "Features": "Funcionalidades", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Grupo de Recursos da Identidade", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "A verificar se existe uma identidade...", + "Creating managed identity...": "A criar identidade gerida...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "YAML inválido: campo obrigatório em falta (tipo)", + "Invalid YAML: List resource must have an array \"items\" field": "YAML inválido: o recurso de lista tem de ter um campo de matriz \"itens\"", + "Invalid YAML: List item missing required field (kind)": "YAML inválido: falta o campo obrigatório (tipo) do item de lista", + "Invalid YAML: List item missing required field (metadata.name)": "YAML inválido: falta o campo obrigatório (metadata.name) do item de lista", + "Invalid YAML: missing required field (metadata.name)": "YAML inválido: campo obrigatório em falta (metadata.name)", + "Invalid YAML": "YAML inválido", + "Validation failed": "A validação falhou", + "Failed to apply": "Falha ao aplicar", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Foram aplicados {{applied}} recurso(s), mas {{failed}} falhou:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "{{count}} recurso(s) aplicado(s) com sucesso.", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "{{count}} recurso(s) aplicado(s) com sucesso.", + "Failed to apply resources.": "Falha ao aplicar recursos.", + "unnamed": "sem nome", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Conteúdo", "Push agent config files": "Emitir ficheiros de configuração do agente", - "Re-deploy": "Implementar novamente", - "Read only root filesystem": "Sistema de ficheiros raiz só de leitura", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Acesso só de leitura à maioria dos objetos num espaço de nomes. Não pode ver funções, vínculos de funções nem Segredos.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Acesso de leitura/escrita à maioria dos objetos num espaço de nomes. Não pode ver nem modificar funções ou vínculos de funções. Pode aceder a Segredos e executar Pods como qualquer conta de serviço no espaço de nomes.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Acesso de leitura/escrita à maioria dos recursos num espaço de nomes. Pode criar funções e vínculos de funções dentro do espaço de nomes. Não pode escrever na quota de recursos nem no próprio espaço de nomes.", - "Readiness path": "Caminho de readiness", - "Ready": "Preparada", - "Refresh": "Atualizar", - "Refreshing": "A atualizar", - "Register AKS Cluster": "Registar Cluster do AKS", - "Register Cluster": "Registar Cluster", - "Register ManagedNamespacePreview Feature": "Registar Funcionalidade ManagedNamespacePreview", - "Registering": "A registar", - "Registering cluster": "A registar cluster", - "Regular": "Normal", - "Regular Kubernetes namespace": "Espaço de nomes do Kubernetes normal", - "remove": "remover", - "Remove assignee": "Remover detentor", - "Reopen install page": "Reabrir página de instalação", - "Replica Bounds": "Limites de Réplica", - "Replicas": "Réplicas", - "Request & error rate": "Taxa de pedidos e erros", - "Request Rate": "Taxa de Pedido", - "Requests": "Pedidos", - "Required Permissions": "Permissões obrigatórias", - "Resource Group": "Grupo de Recursos", - "Resource group where the managed identity will be created": "Grupo de recursos onde a identidade gerida será criada", - "Resource Limits": "Limites de Recursos", - "Resource Usage": "Utilização de Recursos", - "Resources to be deployed ({{count}} object)_one": "Recursos a implementar ({{count}} objeto)", - "Resources to be deployed ({{count}} object)_other": "Recursos a implementar ({{count}} objeto)", - "Response Time": "Tempo de Resposta", - "Restarts": "Reinícios", - "Retry": "Tentar novamente", - "Review": "Rever", - "Review & Deploy": "Rever & Implementar", - "Review & Merge": "Rever e Intercalar", - "Review and merge the setup PR to enable the Copilot agent.": "Reveja e intercale o pedido Pull da configuração para ativar o agente do Copilot.", - "Review on GitHub": "Rever no GitHub", - "Review Project Configuration": "Rever Configuração do Projeto", - "Role": "Função", - "Role Assignment": "Atribuição de Função", - "Run as non root user": "Executar como utilizador não raiz", + "Workflows": "Fluxos de trabalho", + "Create setup workflow in .github/workflows/": "Criar fluxo de trabalho de configuração em .github/workflows/", + "Pull requests": "Pedidos Pull", + "Create deployment PRs": "Criar pedidos pull de implementação", + "Issues": "Problemas", + "Track agent progress": "Monitorizar o progresso do agente", "Run deployment workflows": "Executar fluxos de trabalho de implementação", - "Save": "Guardar", - "Scaled down": "Reduzido verticalmente", - "Scaling": "Dimensionamento", - "Scaling Chart Unavailable": "Gráfico de Dimensionamento Indisponível", - "Scaling History (Last 24 Hours)": "Histórico de Dimensionamento (Últimas 24 Horas)", - "Scaling Mode": "Modo de Dimensionamento", - "Scaling Overview": "Descrição Geral do Dimensionamento", - "Search clusters": "Procurar clusters", - "Search subscriptions": "Procurar subscrições", - "Select a cluster": "Selecionar um cluster", - "Select a deployment to view metrics": "Selecione uma implementação para ver as métricas", - "Select a deployment to view scaling metrics": "Selecione uma implementação para ver as métricas de dimensionamento", - "Select a subscription": "Selecionar uma subscrição", - "Select All": "Selecionar Tudo", - "Select an AKS cluster": "Parar um cluster do AKS", - "Select an Azure subscription": "Selecionar uma subscrição do Azure", - "Select an option": "Selecione uma opção", - "Select Deployment": "Selecionar Implementação", - "Select Namespaces to Import": "Selecionar Espaços de Nomes a Importar", + "Connect to GitHub": "Ligar ao GitHub", + "Connected to '{{username}}'.": "Ligado a \"{{username}}\".", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Autorize o AKS Desktop a criar pipelines de implementação no seu repositório.", + "Required Permissions": "Permissões obrigatórias", + "Complete authorization on your browser screen": "Conclua a autorização no ecrã do seu browser", + "Connect": "Ligar", "Select repository": "Selecionar repositório", - "Select Source": "Selecionar Origem", - "Selected Cluster Details": "Detalhes do Cluster Selecionado", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "O cluster selecionado está em falta no kubeconfig. Registe-o antes de continuar.", - "Service port": "Porta de serviço", - "Service type": "Tipo de serviço", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Defina pedidos de CPU e memória (recursos garantidos) e limites (recursos máximos) para controlar a alocação de recursos e impedir que os contentores consumam recursos excessivos do cluster.", - "Set quota limits to prevent overuse and maintain cluster stability": "Defina limites de quota para evitar o uso excessivo e manter a estabilidade do cluster.", - "Set security, communication and access rules for incoming and outgoing traffic": "Defina regras de segurança, comunicação e acesso para o tráfego de entrada e saída", - "Set the desired number of pod replicas for this deployment": "Defina o número pretendido de réplicas de pods para esta implementação.", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Configure um pipeline de CI/CD para automatizar as suas implementações e simplificar o seu fluxo de trabalho", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Configurar e configurar um novo projeto no Azure Kubernetes Service (AKS).", - "Set up Copilot Agent": "Configurar Agente do Copilot", - "Set up your pipeline": "Configurar o seu pipeline", - "Setting up Copilot agent...": "A configurar o agente do Copilot...", - "Setup PR Created": "Pedido Pull de Configuração Criado", - "Setup PR reviewed and merged": "Pedido pull de configuração revisto e intercalado", - "Sign in": "Iniciar sessão", - "Sign in to GitHub": "Iniciar sessão no GitHub", - "Sign in to GitHub to view pipeline runs.": "Inicie sessão no GitHub para ver execuções do pipeline.", - "Sign in with Azure": "Entrar com o Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Inicie sessão com a sua conta Azure para fazer a gestão dos clusters e recursos AKS.", - "Source": "Origem", - "Starting project creation": "A iniciar a criação do projeto", - "Startup path": "Caminho do programa de arranque do sistema", - "Status": "Estado", - "Subscription": "Subscrição", - "Successfully merged {{count}} cluster(s)_one": "{{count}} cluster(s) unido(s) com êxito", - "Successfully merged {{count}} cluster(s)_other": "{{count}} cluster(s) unido(s) com êxito", - "successThreshold": "successThreshold", - "Target CPU utilization": "Utilização da CPU alvo", - "Target CPU Utilization (%)": "Utilização da CPU alvo (%)", - "Target port": "Porta de destino", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "O agente criou o pedido Pull de implementação. Reveja os ficheiros gerados e intercale-os para iniciar o pipeline de implementação.", - "The agent is creating the setup PR to enable the Copilot agent.": "O agente está a criar o pedido Pull de configuração para ativar o agente do Copilot.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Conclua a instalação no seu browser. Isto será atualizado automaticamente assim que a aplicação for instalada em {{repoName}}.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "A Aplicação GitHub do AKS Desktop tem de estar instalada em {{repoName}} para continuar.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "A extensão aks-preview é necessária para criar espaços de nomes geridos. Instale-a para continuar.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "O agente de programação do Copilot está a analisar o seu repositório e a gerar um pedido Pull de implementação com Dockerfile, manifestos do Kubernetes e um fluxo de trabalho do GitHub Actions.", - "The following addons can be enabled on this cluster:": "Os seguintes suplementos podem ser ativados neste cluster:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Serão criados os seguintes recursos do Azure para permitir que o seu pipeline do GitHub Actions se autentique junto do seu cluster do AKS:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Os seguintes espaços de nomes serão convertidos em projetos de Ambiente de Trabalho do AKS ao adicionar estas etiquetas:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar o estado de liveness (por exemplo, /healthz). A pesquisa executa um pedido HTTP GET neste caminho.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar o estado de readiness (por exemplo, /ready). A pesquisa executa um pedido HTTP GET neste caminho.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "O caminho HTTP para verificar o programa de arranque do sistema (por exemplo, /startup). A pesquisa executa um pedido HTTP GET neste caminho.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "A funcionalidade ManagedNamespacePreview tem de estar registada para criar espaços de nomes geridos.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "A quantidade máxima de CPU que o contentor pode utilizar. Se for excedida, o contentor será limitado.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "A quantidade máxima de memória que o contentor pode utilizar. Se for excedida, o contentor será terminado (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "O número máximo de réplicas de pods até ao qual o HPA pode aumentar verticalmente quando a utilização da CPU é elevada.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "A quantidade mínima de CPU garantida ao contentor. O Kubernetes agendará o pod num nó com pelo menos essa quantidade de CPU disponível.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "A quantidade mínima de memória garantida para o contentor. O Kubernetes irá agendar o pod num nó com, pelo menos, esta quantidade de memória disponível.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "O número mínimo de réplicas de pods que o HPA manterá, mesmo quando a utilização da CPU for baixa.", - "The namespace will be created on the selected cluster and set up as a project": "O espaço de nomes será criado no cluster selecionado e configurado como projeto", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "O número de réplicas de pods a executar. Mais réplicas proporcionam melhor disponibilidade e distribuição da carga.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "A operação poderá ainda estar em execução no GitHub. Verifique a ligação acima para ver o estado mais recente.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "O número de porta exposta pelo serviço do Kubernetes. O tráfego para esta porta é encaminhado para a porta de destino.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "O número de porta em que o seu contentor escuta. Esta é a porta no interior do contentor onde a sua aplicação é executada.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "A percentagem média de utilização da CPU de destino em todos os pods. O HPA aumentará a escala quando a utilização da CPU exceder este valor e diminuirá quando estiver abaixo.", - "There are no deployments in this project namespace yet.": "Ainda não existem implementações neste espaço de nomes do projeto.", + "Reopen install page": "Reabrir página de instalação", + "Install GitHub App": "Instalar Aplicação GitHub", + "Checking...": "A verificar...", + "Connecting to GitHub...": "A ligar ao GitHub...", + "Connect GitHub": "Ligar o GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Ligado", + "Sign in to GitHub": "Iniciar sessão no GitHub", + "Failed to load repositories": "Falha ao carregar repositórios", + "Filter repositories": "Filtrar repositórios", + "No repositories match your filter": "Nenhum repositório corresponde ao seu filtro", + "No repositories found": "Nenhum repositório encontrado", + "less than a minute": "menos de um minuto", + "{{count}} min_one": "{{count}} min", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}} min", + "Up next": "A seguir", + "PR {{number}}": "Pedido pull {{number}}", + "Checking merge status...": "A verificar o estado da intercalação...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "A operação está a demorar mais tempo do que o esperado. Consulte o pedido Pull no GitHub para obter o estado mais recente.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Isto pode tratar-se de um problema de permissões. Verifique as permissões da sua Aplicação GitHub e tente novamente.", "This PR was closed without merging. You may need to restart the process.": "Este pedido pull foi fechado sem ser intercalado. Poderá ter de reiniciar o processo.", + "Review on GitHub": "Rever no GitHub", + "Agent is working": "O agente está a trabalhar", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "O agente de programação do Copilot está a analisar o seu repositório e a gerar um pedido Pull de implementação com Dockerfile, manifestos do Kubernetes e um fluxo de trabalho do GitHub Actions.", + "Issue {{number}}": "Problema {{number}}", + "Waiting for agent workflow to start...": "A aguardar que o fluxo de trabalho do agente seja iniciado...", "This typically takes 10–25 minutes.": "Normalmente, esta operação demora 10 a 25 minutos.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Total de Pods", - "Track agent progress": "Monitorizar o progresso do agente", - "Trigger": "Acionador", - "Trigger Copilot Agent": "Acionar Agente do Copilot", - "Triggering...": "A acionar...", + "Pipeline configured": "Pipeline configurado", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "O pipeline de CI/CD para {{repoFullName}} está pronto. Acione implementações no separador Implementar.", + "Setup PR reviewed and merged": "Pedido pull de configuração revisto e intercalado", + "Copilot agent reviewed your repo and generated deployment PR": "O agente do Copilot reviu o seu repositório e gerou um pedido Pull de implementação", + "Deployment PR reviewed and merged": "Pedido pull de implementação revisto e intercalado", + "View deployment": "Ver implementação", + "You can collapse this panel. Progress is saved and will resume when you return.": "Pode fechar este painel. O progresso é guardado e será retomado quando regressar.", + "Creating setup PR...": "A criar Pedido Pull de Configuração...", + "The agent is creating the setup PR to enable the Copilot agent.": "O agente está a criar o pedido Pull de configuração para ativar o agente do Copilot.", + "Setup PR Created": "Pedido Pull de Configuração Criado", + "Review and merge the setup PR to enable the Copilot agent.": "Reveja e intercale o pedido Pull da configuração para ativar o agente do Copilot.", + "Setting up Copilot agent...": "A configurar o agente do Copilot...", + "Creating the trigger issue for the Copilot coding agent.": "A criar o problema de acionamento para o agente de programação do Copilot.", + "Deployment PR Ready": "Pedido Pull de Implementação Pronto", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "O agente criou o pedido Pull de implementação. Reveja os ficheiros gerados e intercale-os para iniciar o pipeline de implementação.", + "Copilot agent": "Agente do Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Depois de intercalar, o agente do Copilot irá analisar o seu repositório e criar um pedido Pull de implementação", + "Deployment PR": "Pedido pull de Implementação", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Assim que o agente tiver criado o pedido Pull de implementação, reveja os ficheiros gerados e intercale para iniciar o pipeline de implementação", + "Connect Source": "Ligar Origem", + "Set up Copilot Agent": "Configurar Agente do Copilot", + "Review & Merge": "Rever e Intercalar", + "Collapse panel": "Fechar painel", + "Keep Going": "Continuar", + "Discard": "Eliminar", + "Canceling will discard your pipeline progress. Are you sure?": "Cancelar irá eliminar o progresso do seu pipeline. Tem a certeza?", + "Ensuring resource group exists...": "A garantir que o grupo de recursos existe...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "A configurar credencial federada...", + "Workload identity configured": "Identidade da carga de trabalho configurada", + "Configure Workload Identity": "Configurar Identidade da Carga de Trabalho", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Serão criados os seguintes recursos do Azure para permitir que o seu pipeline do GitHub Actions se autentique junto do seu cluster do AKS:", + "Managed Identity": "Identidade Gerida", + "in resource group": "no grupo de recursos", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Credencial Federada", + "OIDC trust for": "Confiança OIDC para", + "branch": "ramo", + "Resource group where the managed identity will be created": "Grupo de recursos onde a identidade gerida será criada", + "Workload identity configured successfully.": "Identidade da carga de trabalho configurada com êxito.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Isto pode tratar-se de um problema de permissões. Verifique as permissões da sua Aplicação GitHub e tente novamente.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "A operação poderá ainda estar em execução no GitHub. Verifique a ligação acima para ver o estado mais recente.", "Try again, or check GitHub for details.": "Tente novamente ou consulte o GitHub para obter detalhes.", - "Type": "Tipo", + "Initializing...": "A inicializar...", + "Checking repository readiness...": "A verificar a preparação do repositório...", + "Loading configuration...": "A carregar a configuração...", "Unknown error": "Erro desconhecido", - "unnamed": "sem nome", - "Up next": "A seguir", - "Update": "Atualizar", - "Updating": "A atualizar", - "Updating local settings": "A atualizar as definições locais", - "Upload files": "Carregar ficheiros", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Utilize ClusterIP. Ideal para serviços que só estão acessíveis dentro do cluster.", - "Use custom service port": "Utilizar porta de serviço personalizada", - "Use existing manifests for full control": "Utilizar manifestos existentes para controlo total", - "User assignment completed with errors": "Atribuição de utilizador concluída com erros", - "Validation failed": "A validação falhou", - "Value": "Valor", - "View deployment": "Ver implementação", - "View on GitHub": "Ver no GitHub", - "View run on GitHub": "Ver execução no GitHub", - "View workflow run": "Ver execução do fluxo de trabalho", - "VPA (Vertical Pod Autoscaler)": "VPA (Dimensionador Automático de Pod Vertical)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "A aguardar que o fluxo de trabalho do agente seja iniciado...", - "Waiting for browser authorization...": "A aguardar autorização no browser...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "A aguardar a conclusão do início de sessão... ({{minutes}} minutos restantes)", - "Waiting for namespace to be created": "A aguardar a criação do namespace", - "Waiting for namespace to propagate": "A aguardar a propagação do espaço de nomes", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Aviso: esta ação não pode ser anulada. Todos os recursos nestes espaços de nomes serão eliminados permanentemente.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Quando uma pesquisa falha, o Kubernetes tentará este número de vezes antes de desistir e reiniciar o contentor.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Quando uma pesquisa falha, o Kubernetes tentará este número de vezes antes de desistir. Para pesquisas do programa de arranque do sistema, este valor determina quanto tempo esperar antes de reiniciar.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Quando uma pesquisa falha, o Kubernetes tentará este número de vezes antes de marcar o pod como não pronto.", + "Trigger Copilot Agent": "Acionar Agente do Copilot", + "Create Setup PR": "Criar Pedido Pull de Configuração", + "Failed to fetch deployment status": "Falha ao obter o estado da implementação", + "Failed to fetch pod status": "Falha ao obter o estado do pod", + "Failed to fetch service status": "Falha ao obter o estado do serviço", + "Failed to monitor deployment health": "Falha ao monitorizar o estado de funcionamento da implementação", + "Convert Namespaces to AKS Projects": "Converter Espaços de Nomes em Projetos do AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Os seguintes espaços de nomes serão convertidos em projetos de Ambiente de Trabalho do AKS ao adicionar estas etiquetas:", + "managed namespaces only": "apenas espaços de nomes geridos", + "Namespaces to convert:": "Espaços de nomes a converter:", + "Already AKS projects (will import directly):": "Já são projetos do AKS (serão importados diretamente):", + "Converting": "Converter", + "Confirm & Import": "Confirmar e Importar", + "Please select at least one namespace to import": "Selecione, pelo menos, um espaço de nomes para importar", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "O cluster {{clusterName}} tem de ser registado antes de importar espaços de nomes normais. Importe primeiro um espaço de nomes gerido a partir deste cluster.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "A unir o cluster {{clusterName}} ({{count}} espaço(s) de nomes)", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "A unir o cluster {{clusterName}} ({{count}} espaço(s) de nomes)", + "Failed to merge cluster: {{message}}": "Falha ao intercalar o cluster: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "A converter {{name}} para projeto do AKS (pode demorar um momento)...", + "Failed to convert namespace: {{message}}": "Não foi possível converter o espaço de nomes: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "A importar {{current}} de {{total}}: {{name}} a partir de {{clusterName}}", + "Project '{{name}}' successfully imported": "Projeto “{{name}}” importado com êxito", + "Namespace '{{name}}' converted and imported as project": "Espaço de nomes “{{name}}” convertido e importado como projeto", + "Successfully merged {{count}} cluster(s)_one": "{{count}} cluster(s) unido(s) com êxito", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "{{count}} cluster(s) unido(s) com êxito", "with {{count}} project(s)_one": "com {{count}} projeto(s)", + "with {{count}} project(s)_many": "", "with {{count}} project(s)_other": "com {{count}} projeto(s)", - "with the following parameters:": "com os seguintes parâmetros:", - "Wizard steps": "Passos do assistente", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "O acionamento do fluxo de trabalho foi efetuado com êxito. Consulte o GitHub Actions para monitorizar o progresso.", - "workflow on": "fluxo de trabalho em", - "Workflows": "Fluxos de trabalho", - "Workload identity configured": "Identidade da carga de trabalho configurada", - "Workload identity configured successfully.": "Identidade da carga de trabalho configurada com êxito.", - "Workloads": "Cargas de Trabalho", + "{{count}} failed._one": "{{count}} falhado(s).", + "{{count}} failed._many": "", + "{{count}} failed._other": "{{count}} falhado(s).", + "Failed to import any projects. See details below.": "Falha ao importar quaisquer projetos. Veja os detalhes abaixo.", + "Import AKS Projects": "Importar Projetos do AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importe espaços de nomes geridos e espaços de nomes normais existentes como projetos. Os espaços de nomes que ainda não são projetos de Ambiente de Trabalho do AKS serão convertidos ao adicionar a etiqueta de projeto necessária.", + "Select Namespaces to Import": "Selecionar Espaços de Nomes a Importar", + "{{count}} selected_one": "{{count}} selecionado(s)", + "{{count}} selected_many": "", + "{{count}} selected_other": "{{count}} selecionado(s)", + "Select All": "Selecionar Tudo", + "Deselect All": "Desselecionar Tudo", + "AKS Managed": "Gerido pelo AKS", + "Regular": "Normal", + "AKS Project?": "Projeto do AKS?", "Yes": "Sim", - "You can collapse this panel. Progress is saved and will resume when you return.": "Pode fechar este painel. O progresso é guardado e será retomado quando regressar.", - "You need to be logged in to Azure to register AKS clusters.": "Tem de ter sessão iniciada no Azure para registar clusters AKS.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "O seu projeto AKS \"{{projectName}}\" foi criado e está pronto para ser utilizado.", - "Your project \"{{projectName}}\" is ready to use.": "O seu projeto “{{projectName}}” está pronto a ser utilizado." + "No": "Não", + "Importing": "A importar", + "Import Selected Projects": "Importar Projetos Selecionados", + "Failed to fetch managed namespaces": "Não foi possível obter os espaços de nomes geridos", + "Failed to fetch managed namespace details": "Falha ao obter os detalhes do espaço de nomes gerido", + "Failed to update managed namespace": "Falha ao atualizar o espaço de nomes gerido", + "Updating": "A atualizar", + "Update": "Atualizar", + "AKS desktop logo": "logótipo do AKS desktop", + "No Deployments Found": "Não Foram Encontradas implementações", + "There are no deployments in this project namespace yet.": "Ainda não existem implementações neste espaço de nomes do projeto.", + "Deploy an application to view logs.": "Implemente uma aplicação para ver registos.", + "Metrics": "Métrica", + "CPU Usage": "Utilização da CPU", + "Memory Usage": "Utilização da Memória", + "Request Rate": "Taxa de Pedido", + "Error Rate": "Taxa de Erros", + "Metrics refreshed every 30 seconds": "Métricas atualizadas a cada 30 segundos", + "Select a deployment to view metrics": "Selecione uma implementação para ver as métricas", + "Metrics Unavailable": "Métricas Indisponíveis", + "Application Metrics": "Métricas da Aplicação", + "Request & error rate": "Taxa de pedidos e erros", + "No data available": "Sem dados disponíveis", + "Response Time": "Tempo de Resposta", + "Memory utilization": "Utilização da memória", + "Network I/O": "E/S de Rede", + "Deploy an application to start viewing metrics.": "Implemente uma aplicação para começar a ver as métricas.", + "Please select a deployment to view metrics": "Selecione uma implementação para ver as métricas", + "Project Status": "Estado do Projeto", + "Total Pods": "Total de Pods", + "Application Health": "Estado de funcionamento da aplicação", + "Loading metrics": "A carregar métricas", + "Resource Usage": "Utilização de Recursos", + "Avg Response Time": "Tempo médio de resposta", + "No response time data available": "Não existem dados de tempo de resposta disponíveis", + "Absolute usage": "Utilização absoluta", + "Network In": "Entrada na Rede", + "Network Out": "Saída da Rede", + "Pod Details": "Detalhes do Pod", + "Pod Name": "Nome do Pod", + "Restarts": "Reinícios", + "No pods found for deployment \"{{name}}\"": "Não foram encontrados pods para a implementação \"{{name}}\"", + "Preview Features": "Funcionalidades de Pré-visualização", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Ative ou desative funcionalidades que ainda estão em desenvolvimento. As funcionalidades de pré-visualização podem mudar ou ser removidas em versões futuras.", + "GitHub Pipelines": "Pipelines do GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Ative pipelines de implementação baseados no GitHub para projetos do AKS.", + "Loading scaling metrics from Prometheus": "A carregar métricas de dimensionamento a partir do Prometheus", + "Scaling Chart Unavailable": "Gráfico de Dimensionamento Indisponível", + "No scaling data available": "Não existem dados de dimensionamento disponíveis", + "Edit HPA Configuration": "Editar Configuração HPA", + "Edit Manual Scaling Configuration": "Editar Configuração de Dimensionamento Manual", + "Minimum Replicas": "Mínimo de Réplicas", + "Maximum Replicas": "Máximo de réplicas", + "Target CPU Utilization (%)": "Utilização da CPU alvo (%)", + "Number of Replicas": "Número de Réplicas", + "Set the desired number of pod replicas for this deployment": "Defina o número pretendido de réplicas de pods para esta implementação.", + "Save": "Guardar", + "Scaling Mode": "Modo de Dimensionamento", + "Current Replicas": "Réplicas Atuais", + "Desired Replicas": "Réplicas Pretendidas", + "Configured Replicas": "Réplicas Configuradas", + "Replica Bounds": "Limites de Réplica", + "Available Replicas": "Réplicas Disponíveis", + "CPU Usage / Target": "Utilização/Objetivo da CPU", + "Scaling": "Dimensionamento", + "Select a deployment to view scaling metrics": "Selecione uma implementação para ver as métricas de dimensionamento", + "Scaling Overview": "Descrição Geral do Dimensionamento", + "Edit Configuration": "Editar Configuração", + "Scaling History (Last 24 Hours)": "Histórico de Dimensionamento (Últimas 24 Horas)", + "Copied!": "Copiado!", + "Copy": "Copiar", + "Copy to clipboard": "Copiar para a área de transferência", + "No deployments found": "Nenhuma implementação encontrada", + "Select Deployment": "Selecionar Implementação", + "Loading deployments": "A carregar implementações", + "No cluster is associated with this project.": "Não existe nenhum cluster associado a este projeto.", + "Please sign in to Azure to continue.": "Inicie sessão no Azure para continuar.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Contexto necessário do Azure em falta. Certifique-se de que tem sessão iniciada e de que o cluster está associado a uma subscrição, grupo de recursos e inquilino válidos.", + "Failed to load Azure context": "Falha ao carregar o contexto do Azure", + "just now": "agora mesmo", + "{{seconds}}s ago": "há {{seconds}}s", + "{{minutes}} min ago": "Há {{minutes}} min", + "{{hours}}h ago": "Há {{hours}}\u00a0h", + "{{days}}d ago": "Há {{days}} dia(s)", + "{{weeks}}w ago": "Há {{weeks}} semanas" } diff --git a/plugins/aks-desktop/locales/ru/translation.json b/plugins/aks-desktop/locales/ru/translation.json index e089cb518..3978a7f85 100644 --- a/plugins/aks-desktop/locales/ru/translation.json +++ b/plugins/aks-desktop/locales/ru/translation.json @@ -1,629 +1,693 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "Область действия варианта \"Роль пользователя кластера AKS\" ограничена группой ресурсов", - "(already enabled)": "(уже включено)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} кластер скрыт — отсутствует Azure Entra ID", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} кластеров скрыто — отсутствует Azure Entra ID", - "{{count}} eligible cluster(s) found._one": "Найден {{count}} подходящий кластер.", - "{{count}} eligible cluster(s) found._other": "Найдено {{count}} подходящих кластеров.", - "{{count}} failed._one": "Сбой {{count}}.", - "{{count}} failed._other": "Сбой {{count}}.", - "{{count}} min_one": "{{count}} мин", - "{{count}} min_other": "{{count}} мин", - "{{count}} selected_one": "Выбран {{count}}", - "{{count}} selected_other": "Выбрано {{count}}", - "{{days}}d ago": "{{days}} дн. назад", - "{{hours}}h ago": "{{hours}} ч назад", - "{{minutes}} min ago": "{{minutes}} мин. назад", - "{{seconds}}s ago": "{{seconds}} сек. назад", - "{{weeks}}w ago": "{{weeks}} нед. назад", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Необходимо выбрать кластер", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "В кластере будет создано новое пространство имен с примененными метками проектов. Оно сразу появится в вашем списке проектов.", - "Absolute usage": "Абсолютное использование", - "Access": "Доступ", - "Access Control ({{count}} assignee)_one": "Контроль доступа ({{count}} назначенный пользователь)", - "Access Control ({{count}} assignee)_other": "Контроль доступа (уполномоченных: {{count}})", - "Actions": "Действия", - "Add assignee": "Добавить назначенного пользователя", - "Add Cluster from Azure": "Добавить кластер из Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Добавьте один или несколько манифестов Kubernetes. Отправьте файлы для заполнения редактора или вставьте/отредактируйте их ниже.", - "Add variable": "Добавить переменную", - "Advanced": "Дополнительно", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "После слияния агент Copilot проанализирует ваш репозиторий и создаст PR развертывания", - "Agent is working": "Агент работает", + "Failed to load subscriptions": "Не удалось загрузить подписки.", + "Failed to load AKS clusters": "Не удалось загрузить кластеры AKS", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Кластер \"{{cluster}}\" успешно добавлен в kubeconfig", + "Failed to register cluster: {{message}}": "Не удалось зарегистрировать кластер: {{message}}", + "Register AKS Cluster": "Зарегистрировать кластер AKS", + "Checking authentication status": "Проверяется статус проверки подлинности", + "You need to be logged in to Azure to register AKS clusters.": "Для регистрации кластеров AKS вам нужно войти в Azure.", + "Subscription": "Подписка", + "Select an Azure subscription": "Выберите подписку Azure", + "Loading subscriptions": "Загружаются подписки", + "Loading AKS clusters": "Загружаются кластеры AKS", + "No AKS clusters found in this subscription.": "В этой подписке не найдены кластеры AKS.", "AKS Cluster": "Кластер AKS", - "AKS desktop logo": "Логотип классической версии AKS", - "AKS Managed": "Управляемый AKS", - "AKS Preview Extension installed successfully!": "Расширение предварительного просмотра AKS успешно установлено!", - "AKS Preview Extension Required": "Требуется расширение предварительного просмотра AKS", - "AKS Project?": "Проект AKS?", - "All selected addons have been enabled successfully.": "Все выбранные надстройки включены.", - "All verifications completed successfully!": "Все проверки успешно завершены!", - "Allow all traffic": "Разрешить весь трафик", - "Allow privilege escalation": "Разрешить повышение привилегий", - "Allow traffic within same namespace": "Разрешить трафик в пределах одного пространства имен", - "Already AKS projects (will import directly):": "Уже проекты AKS (будут импортированы напрямую):", - "Also delete the namespaces (this will remove all resources within them)": "Также удалить пространства имен (эта операция удалит все ресурсы внутри них)", - "Another project already exists with same name. Please choose a different name.": "Проект с таким именем уже существует. Выберите другое имя.", - "Application Health": "Работоспособность приложения", - "Application Metrics": "Метрики приложений", - "Application name": "Имя приложения", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Применено ресурсов: {{applied}}, но произошёл сбой {{failed}}:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Один или несколько ресурсов ({{count}}) успешно применены.", - "Applied {{count}} resource(s) successfully._other": "Один или несколько ресурсов ({{count}}) успешно применены.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Вы действительно хотите удалить проект \"{{projectId}}\"?", - "Assign permissions to users who need access to your namespace": "Назначьте разрешения пользователям, которым нужен доступ к вашему пространству имен", - "Assignee": "Уполномоченный", - "Assigning AKS Cluster User Role...": "Назначение роли пользователя кластера AKS...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Авторизуйте классическую версию AKS для создания конвейеров развертывания в вашем репозитории.", - "Auto-generated Deployment and Service manifests": "Автоматически созданные манифесты развертывания и служб", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Автоматически масштабирует количество объектов pod на основе использования ЦП. HPA увеличит количество объектов pod, когда использование ЦП превысит целевое значение, и уменьшит, если оно будет ниже.", - "Available Replicas": "Доступные реплики", - "Avg Response Time": "Среднее время отклика", - "Azure Account": "Учетная запись Azure", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "Выберите кластер AKS", + "Selected Cluster Details": "Сведения о выбранном кластере", + "Name": "Имя", + "Resource Group": "Группа ресурсов", + "Location": "Расположение", + "Kubernetes Version": "Версия Kubernetes", + "Done": "Готово", + "Cancel": "Отмена", + "Registering": "Выполняется регистрация", + "Register Cluster": "Регистрация кластера", + "Initiating Azure login": "Инициируется вход в Azure", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Завершите проверку подлинности в браузере. Это окно будет автоматически перенаправлено после входа.", + "Login successful! Redirecting": "Вход успешно выполнен! Выполняется перенаправление", + "Login timeout. Please try again.": "Время ожидания входа истекло. Повторите попытку.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Ждем завершения входа... ( осталось{{minutes}} мин.)", + "Failed to initiate login: {{message}}": "Не удалось инициировать вход: {{message}}", "Azure Authentication": "Проверка подлинности Azure", - "Azure CLI/aks-preview requirements not met": "Требования Azure CLI/aks-preview не выполнены", - "Azure Monitor Metrics (Managed Prometheus)": "Метрики Azure Monitor (управляемый Prometheus)", + "Sign in with your Azure account to manage AKS clusters and resources": "Чтобы управлять кластерами и ресурсами AKS, войдите с помощью учетной записи Azure", + "Sign in with Azure": "Войти с помощью Azure", + "Loading Azure account information": "Загружаются сведения учетной записи Azure", "Back": "Назад", - "Basics": "Основные", - "branch": "ветвь", - "Bring your own Kubernetes manifests to deploy": "Используйте для развертывания собственные манифесты Kubernetes", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "По умолчанию пробы используют HTTP GET по корневому пути с разумными настройками. Включите эту опцию, чтобы задать пользовательские настройки проверки.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "По умолчанию порт службы совпадает с целевым портом. Включите эту опцию, чтобы использовать для службы другой порт.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "По умолчанию это удалит управляемые Azure метки пространства имён и проектов из следующих пространств имен:", - "Cancel": "Отмена", - "Canceling will discard your pipeline progress. Are you sure?": "Отмена приведет к удалению прогресса конвейера. Вы уверены?", - "Cancelled deletion of project {{ projectId }}.": "Удаление проекта {{ projectId }} отменено.", - "Checking authentication status": "Проверяется статус проверки подлинности", - "Checking for existing identity...": "Проверка существующего удостоверения...", - "Checking if another project exists with same name": "Проверяется наличие другого проекта с таким же именем", - "Checking merge status...": "Проверка состояния слияния...", - "Checking repository readiness...": "Проверка готовности репозитория...", - "Checking...": "Проверка...", - "Choose a source for your deployment (container image, repo, etc.).": "Выберите источник для развертывания (образ контейнера, репозиторий и т. д.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Конвейер CI/CD для {{repoFullName}} готов. Активируйте развертывания на вкладке \"Развертывание\".", - "Clear editor": "Очистить редактор", - "Close": "Закрыть", - "Cluster": "Кластер", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Кластер \"{{cluster}}\" успешно добавлен в kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Кластер {{clusterName}} должен быть зарегистрирован перед импортом обычных пространств имен. Сначала импортируйте управляемое пространство имен из этого кластера.", - "Cluster Configuration": "Конфигурация кластера", - "Cluster is being deleted. Cannot deploy to this cluster.": "Выполняется удаление данного кластера. Развертывание в нем невозможно.", + "Azure Account": "Учетная запись Azure", + "Logged in as": "Выполнен вход в систему от имени", + "Add Cluster from Azure": "Добавить кластер из Azure", + "Logging out": "Выполняется выход", + "Log out": "Выйти", + "Azure CLI/aks-preview requirements not met": "Требования Azure CLI/aks-preview не выполнены", + "Dismiss": "Отклонить", + "Configure Pipeline": "Настройка конвейера", + "Loading Azure context...": "Загрузка контекста Azure...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Доступ только для чтения к большинству объектов в пространстве имен. Не может просматривать роли, привязки ролей и секреты.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Доступ для чтения/записи к большинству объектов в пространстве имен. Не может просматривать или изменять роли и привязки ролей. Может получить доступ к секретам и запускать объекты pod от имени любой учетной записи ServiceAccount в пространстве имен.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Доступ для чтения/записи к большинству ресурсов в пространстве имен. Может создавать роли и привязки ролей в пространстве имен. Не может выполнять запись в квоте ресурсов или самом пространстве имен.", + "Access": "Доступ", + "Assign permissions to users who need access to your namespace": "Назначьте разрешения пользователям, которым нужен доступ к вашему пространству имен", + "Assignee": "Уполномоченный", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Роль", + "Remove assignee": "Удалить назначенного пользователя", + "Add assignee": "Добавить назначенного пользователя", + "Only clusters with Azure Entra ID authentication are shown.": "Показаны только кластеры с аутентификацией Azure Entra ID.", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} кластер скрыт\u00a0— отсутствует Azure Entra ID", + "{{count}} cluster(s) hidden — no Azure Entra ID_few": "", + "{{count}} cluster(s) hidden — no Azure Entra ID_many": "", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} кластеров скрыто\u00a0— отсутствует Azure Entra ID", + "No eligible clusters found in this subscription.": "В этой подписке не найдено подходящих кластеров.", + "{{count}} eligible cluster(s) found._one": "Найден {{count}} подходящий кластер.", + "{{count}} eligible cluster(s) found._few": "", + "{{count}} eligible cluster(s) found._many": "", + "{{count}} eligible cluster(s) found._other": "Найдено {{count}} подходящих кластеров.", "Cluster is currently updating. Deployment may fail.": "Кластер сейчас обновляется. Развертывание может завершиться сбоем.", - "Cluster is deallocated. Please start the cluster before deploying.": "Ресурсы кластера освобождены. Перед развертыванием запустите кластер.", - "Cluster is in a failed state. Please check Azure portal.": "Кластер находится в состоянии сбоя. Проверьте портал Azure.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Выполняется удаление данного кластера. Развертывание в нем невозможно.", "Cluster is still being created. Please wait until creation completes.": "Кластер всё еще создается. Дождитесь завершения создания.", + "Cluster is in a failed state. Please check Azure portal.": "Кластер находится в состоянии сбоя. Проверьте портал Azure.", "Cluster is stopped. Please start the cluster before deploying.": "Кластер остановлен. Перед развертыванием запустите кластер.", + "Cluster is deallocated. Please start the cluster before deploying.": "Ресурсы кластера освобождены. Перед развертыванием запустите кластер.", + "AKS Preview Extension Required": "Требуется расширение предварительного просмотра AKS", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Для создания управляемых пространств имен требуется расширение aks-preview. Установите его, чтобы продолжить.", + "Installing": "Идет установка.", + "Install Extension": "Установить расширение", + "AKS Preview Extension installed successfully!": "Расширение предварительного просмотра AKS успешно установлено!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Для создания управляемых пространств имен нужно зарегистрировать функцию ManagedNamespacePreview.", + "Current state": "Текущее состояние", + "Please register it to continue.": "Зарегистрируйте его для продолжения.", + "Register ManagedNamespacePreview Feature": "Зарегистрируйте функцию ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "Функция ManagedNamespacePreview успешно зарегистрирована!", + "Project Name": "Имя проекта", + "Checking if another project exists with same name": "Проверяется наличие другого проекта с таким же именем", + "Another project already exists with same name. Please choose a different name.": "Проект с таким именем уже существует. Выберите другое имя.", + "Project name is available": "Это имя проекта доступно", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Имя проекта может содержать только строчные буквы, цифры и дефисы (пробелы запрещены)", + "Project Description": "Описание проекта", + "Enter project description": "Введите описание проекта", + "Select a subscription": "Выберите подписку", + "Search subscriptions": "Поиск подписок", + "No subscriptions found": "Подписки не найдены", + "Retry": "Повторить", + "Cluster": "Кластер", + "Please select a subscription first": "Сначала выберите подписку", + "Loading clusters": "Загружаются кластеры", + "Select a cluster": "Выбрать кластер", + "Search clusters": "Поиск кластеров", + "No clusters with Azure Entra ID authentication found for this subscription": "Для этой подписки не найдены кластеры с аутентификацией Azure Entra ID", "Cluster Not Ready": "Кластер не готов", - "Collapse panel": "Свернуть панель", - "Complete authorization on your browser screen": "Завершите авторизацию на экране браузера", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Завершите установку в браузере. Обновление произойдет автоматически после установки приложения в {{repoName}}.", - "Compute Quota": "Квота вычислительной мощности", - "Configuration Complete": "Настройка завершена", - "Configuration Error": "Ошибка конфигурации", + "Refreshing": "Идет обновление", + "Refresh": "Обновить", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Выбранный кластер отсутствует в kubeconfig. Зарегистрируйте его, прежде чем продолжить работу.", + "Registering cluster": "Выполняется регистрация кластера", + "Wizard steps": "Шаги мастера", + "Azure Monitor Metrics (Managed Prometheus)": "Метрики Azure Monitor (управляемый Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (автомасштабирование на основе событий)", + "VPA (Vertical Pod Autoscaler)": "VPA (средство вертикального автомасштабирования объектов pod)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Настройка занимает больше времени, чем ожидалось. Проверьте текущее состояние кластера на портале Azure.", - "Configure": "Настроить", - "Configure Cluster": "Конфигурация кластера", - "Configure Container Deployment": "Настроить развертывание контейнера", - "Configure container health probes.": "Настроить проверки работоспособности контейнера.", - "Configure Pipeline": "Настройка конвейера", - "Configure security context settings for the container.": "Настройте параметры контекста безопасности для контейнера.", - "Configure Workload Identity": "Настройка удостоверения рабочей нагрузки", - "Configured Replicas": "Настроенные реплики", + "Failed to enable addons": "Не удалось включить надстройки", + "Failed to enable addon: {{error}}": "Не удалось включить надстройку: {{error}}", + "Cluster Configuration": "Конфигурация кластера", + "(already enabled)": "(уже включено)", + "The following addons can be enabled on this cluster:": "В этом кластере можно включить следующие надстройки:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Подсистему политики сети нельзя изменить после создания кластера. Создайте новый кластер с помощью", + "for full network policy support.": "для полной поддержки политики сети.", + "Enabling these addons may incur additional Azure costs.": "Включение этих надстроек может привести к дополнительным расходам в Azure.", + "Configuration Error": "Ошибка конфигурации", + "Configuration Complete": "Настройка завершена", + "All selected addons have been enabled successfully.": "Все выбранные надстройки включены.", "Configuring cluster... This may take a few minutes.": "Настройка кластера... Это может занять несколько минут.", - "Configuring federated credential...": "Настройка федеративных учетных данных...", + "Enabling Addons...": "Включение надстроек...", "Configuring...": "Настройка...", - "Confirm & Import": "Подтвердить и импортировать", - "Connect": "Подключить", - "Connect GitHub": "Подключить GitHub", - "Connect Source": "Подключить источник", - "Connect to GitHub": "Подключение к GitHub", - "Connected": "Подключение имеется", - "Connected to '{{username}}'.": "Подключено к \"{{username}}\".", - "Connecting to GitHub...": "Подключение к GitHub...", - "Connecting...": "Подключение...", - "Container image": "Образ контейнера", - "Container Image": "Образ контейнера", - "Contents": "Содержимое", - "Continue": "Продолжить", - "Controls whether a process can gain more privileges than its parent process.": "Указывает, может ли процесс получить больше привилегий, чем его родительский процесс.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Определяет, может ли процесс получить больше привилегий, чем его родительский процесс. Отключение этой функции (рекомендуется) предотвращает атаки с повышением привилегий.", - "Convert Namespaces to AKS Projects": "Преобразовать пространства имен в проекты AKS", - "Converting": "Выполняется преобразование", - "Converting {{name}} to AKS project (this may take a moment)...": "Преобразование {{name}} в проект AKS (это может занять некоторое время)...", - "Copied!": "Скопировано!", - "Copilot agent": "Агент Copilot", - "Copilot agent reviewed your repo and generated deployment PR": "Агент Copilot проверил ваш репозиторий и создал PR развертывания", - "Copy": "Копировать", - "Copy to clipboard": "Копировать в буфер обмена", - "CPU": "ЦП", - "CPU limit": "Ограничение ЦП", - "CPU Limits": "Ограничения ЦП", - "CPU request": "Запрос на ЦП", - "CPU Requests": "Запросы ЦП", + "Configure Cluster": "Конфигурация кластера", + "Compute Quota": "Квота вычислительной мощности", + "Set quota limits to prevent overuse and maintain cluster stability": "Установите ограничения квоты, чтобы предотвратить чрезмерную нагрузку и поддерживать стабильность кластера", "CPU Resources": "Ресурсы ЦП", - "CPU Usage": "Загрузка ЦП", - "CPU Usage / Target": "Фактическая / целевая загрузка ЦП %", - "Create a new namespace on an existing cluster and set it up as a project": "Создайте новое пространство имен в существующем кластере и настройте его в качестве проекта", - "Create Application": "Создать приложение", - "Create deployment PRs": "Создать PR развертывания", - "Create Namespace": "Создать пространство имен", - "Create New Namespace": "Создать пространство имен", + "CPU Requests": "Запросы ЦП", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Минимальное гарантированное количество ЦП (1000 миллиядер = 1 ядро ЦП)", + "CPU Limits": "Ограничения ЦП", + "Maximum CPU allowed (1000m = 1 CPU core)": "Максимальное разрешенное число используемых CPU (1000 миллиядер = 1 ядро CPU)", + "Memory Resources": "Ресурсы памяти", + "Memory Requests": "Запросы памяти", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Минимальный гарантированный объем памяти (1024 МиБ = 1 ГиБ)", + "Memory Limits": "Ограничения памяти", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Максимальный разрешенный объем памяти (1024 МиБ = 1 ГиБ)", + "Basics": "Основные", + "Networking Policies": "Сетевые политики", + "Review": "Проверка", + "New Project": "Новый проект", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Установите и настройте новый проект в Службе Azure Kubernetes (AKS)", + "Creating Project": "Создается проект", "Create Project": "Создать проект", - "Create Setup PR": "Создать PR настройки", - "Create setup workflow in .github/workflows/": "Создать рабочий процесс настройки в .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Создаёт LoadBalancer для доступа к приложению из Интернета.", - "Creating managed identity...": "Создание управляемого удостоверения...", + "Loading": "Загрузка", + "Next": "Далее", + "Project Created Successfully!": "Проект успешно создан!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Ваш проект AKS \"{{projectName}}\" создан и готов к использованию.", + "Application name": "Имя приложения", + "Enter application name": "Введите имя приложения", + "Enter a name for your first application to get started with deployment.": "Введите имя первого приложения, чтобы начать развертывание.", + "Create Application": "Создать приложение", + "Project Creation Failed": "Не удалось создать проект", + "Set security, communication and access rules for incoming and outgoing traffic": "Задайте правила безопасности, обмена данными и доступа для входящего и исходящего трафика", + "Allow traffic within same namespace": "Разрешить трафик в пределах одного пространства имен", + "Allow all traffic": "Разрешить весь трафик", + "Deny all traffic": "Запретить весь трафик", + "Review Project Configuration": "Проверьте конфигурацию проекта", + "Please review all the settings before creating your AKS project": "Проверьте все параметры перед созданием проекта AKS", + "Project Basics": "Основы проекта", + "Description": "Описание", + "No description provided": "Описание не указано", + "Ingress Policy": "Политика входящего трафика", + "Egress Policy": "Политика исходящего трафика", + "CPU": "ЦП", + "Requests": "Запросы", + "Limits": "Ограничения", + "Memory": "Память", + "Access Control ({{count}} assignee)_one": "Контроль доступа ({{count}} назначенный пользователь)", + "Access Control ({{count}} assignee)_few": "", + "Access Control ({{count}} assignee)_many": "", + "Access Control ({{count}} assignee)_other": "Контроль доступа (уполномоченных: {{count}})", + "Not specified": "Не указано", + "Select an option": "Выберите вариант", + "No options": "Нет параметров", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Начинается создание проекта", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Время ожидания создания проекта истекло через 10 минут. Проверьте, создано ли пространство имен, и попробуйте еще раз.", + "Initiating managed namespace creation": "Инициируется создание управляемого пространства имен", + "Namespace creation failed: {{message}}": "Не удалось создать пространство имен: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Инициировано создание пространства имен! Отслеживается статус создания", + "Waiting for namespace to propagate": "Ждем распространения пространства имен", + "Namespace status check failed: {{message}}": "Не удалось проверить статус пространства имен: {{message}}", + "Waiting for namespace to be created": "Ждем, пока закончится создание пространства имен", + "Namespace status verification failed: {{message}}": "Не удалось подтвердить статус пространства имен: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "API создания пространства имен завершил работу успешно, сейчас начнется назначение пользователей", + "Namespace creation completed successfully! Adding user access": "Пространство имен создано! Выполняется добавление доступа пользователя", + "User assignment completed with errors": "Назначение пользователя завершено с ошибками", + "Project creation completed successfully!": "Проект успешно создан!", + "Performing final status verification": "Выполняется финальное подтверждение статуса", + "Final status check failed: {{message}}": "Не удалось выполнить финальную проверку статуса: {{message}}", + "Final status verification failed: {{message}}": "Не удалось выполнить финальное подтверждение статуса: {{message}}", + "All verifications completed successfully!": "Все проверки успешно завершены!", + "Failed to create project": "Не удалось создать проект", + "A cluster must be selected": "Необходимо выбрать кластер", + "Namespace name is required": "Требуется имя пространства имен", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Имя пространства имен должно содержать только строчные буквы, цифры и дефисы, при этом начинаться и заканчиваться буквенно-цифровым символом", + "Namespace name must be 63 characters or fewer": "Имя пространства имен должно содержать не более 63 символов", "Creating namespace": "Создание пространства имен", + "Updating local settings": "Обновление локальных параметров", + "Namespace created successfully!": "Пространство имен создано!", + "Failed to create namespace": "Не удалось создать пространство имен", + "No clusters found. Register a cluster first.": "Кластеры не найдены. Сначала зарегистрируйте кластер.", + "Namespace Name": "Имя пространства имен", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Должно содержать только строчные буквы, цифры и дефисы, при этом начинаться и заканчиваться буквенно-цифровым символом", + "The namespace will be created on the selected cluster and set up as a project": "Пространство имен будет создано в выбранном кластере и настроено в качестве проекта", + "Type": "Тип", + "Regular Kubernetes namespace": "Обычное пространство имен Kubernetes", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "В кластере будет создано новое пространство имен с примененными метками проектов. Оно сразу появится в вашем списке проектов.", + "Create New Namespace": "Создать пространство имен", + "Create a new namespace on an existing cluster and set it up as a project": "Создайте новое пространство имен в существующем кластере и настройте его в качестве проекта", "Creating Namespace": "Создается пространство имен", - "Creating Project": "Создается проект", - "Creating setup PR...": "Создание PR настройки...", - "Creating the trigger issue for the Copilot coding agent.": "Создание запроса триггера для агента написания кода Copilot.", - "Current Replicas": "Существующие реплики", - "Current state": "Текущее состояние", - "Degraded": "Неполный", + "Namespace Creation Failed": "Не удалось создать пространство имен", + "Namespace Created Successfully!": "Пространство имен создано!", + "Your project \"{{projectName}}\" is ready to use.": "Ваш проект \"{{projectName}}\" готов к использованию.", + "Go To Projects": "Перейти к проектам", + "Create Namespace": "Создать пространство имен", "Delete project": "Удалить проект", "Delete Project": "Удалить проект", + "Are you sure you want to delete project \"{{projectId}}\"?": "Вы действительно хотите удалить проект \"{{projectId}}\"?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "По умолчанию это удалит управляемые Azure метки пространства имён и проектов из следующих пространств имен:", + "Also delete the namespaces (this will remove all resources within them)": "Также удалить пространства имен (эта операция удалит все ресурсы внутри них)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Внимание! Это действие невозможно отменить. Все ресурсы в этих пространствах имен будут удалены без возможности восстановления.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Примечание. Для управляемых пространств имен AKS управление Azure ARM будет удалено автоматически.", "Delete Project & Namespaces": "Удалить проекты и пространства имен", - "Deleted project {{ projectId }}.": "Удален проект {{ projectId }}.", "Deleting project {{ projectId }}…": "Удаление проекта {{ projectId }}...", - "Deny all traffic": "Запретить весь трафик", - "Deploy": "Развернуть", - "Deploy {{repo}}": "Развернуть {{repo}}", - "Deploy an application to start viewing metrics.": "Разверните приложение, чтобы начать просмотр метрик.", - "Deploy an application to view logs.": "Разверните приложение для просмотра журналов.", + "Cancelled deletion of project {{ projectId }}.": "Удаление проекта {{ projectId }} отменено.", + "Deleted project {{ projectId }}.": "Удален проект {{ projectId }}.", + "Error deleting project {{ projectId }}.": "Ошибка при удалении проекта {{ projectId }}.", "Deploy Application": "Развернуть приложение", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Развертывать из Реестра контейнеров Azure, Docker Hub или GHCR", + "Failed to load pipeline runs": "Не удалось загрузить выполнения конвейера", + "Pipeline": "Конвейер", + "Set up your pipeline": "Настройка конвейера", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Настройте конвейер CI/CD для автоматизации развертываний и упрощения рабочего процесса", + "Waiting for browser authorization...": "Ожидание авторизации браузера...", + "Sign in to GitHub to view pipeline runs.": "Войдите в GitHub, чтобы просмотреть выполнения конвейера.", + "Connecting...": "Подключение...", + "No pipeline runs yet.": "Выполнений конвейера пока нет.", + "View on GitHub": "Просмотреть на GitHub", + "View run on GitHub": "Просмотреть выполнение на GitHub", + "Healthy": "Работоспособен", + "Scaled down": "Вертикальное уменьшение масштаба завершено", + "Degraded": "Неполный", + "VS Code": "VS Code", + "Manual": "Вручную", + "Manual Deploy": "Ручное развертывание", + "Deploy {{repo}}": "Развернуть {{repo}}", "Deploy via Pipeline": "Развертывание через конвейер", - "Deploying": "Развертывание", + "No deployments found in this namespace.": "В этом пространстве имен не найдены развертывания.", "Deployment": "Развертывание", - "Deployment PR": "PR развертывания", - "Deployment PR Ready": "PR развертывания готов", - "Deployment PR reviewed and merged": "Для PR развертывания выполнена проверка и слияние", - "Deployment source": "Источник развертывания", - "Description": "Описание", - "Deselect All": "Отменить выбор всех", - "Desired Replicas": "Нужные реплики", - "Discard": "Отменить", - "Dismiss": "Отклонить", - "Distributes pods evenly across nodes to improve workload distribution.": "Равномерно распределяет объекты pod между узлами для улучшения распределения нагрузки.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Равномерно распределяет объекты pod между узлами, зонами или другими топологическими доменами для улучшения распределения рабочей нагрузки и доступности.", - "Done": "Готово", - "Edit Configuration": "Изменить конфигурацию", + "Source": "Источник", + "Replicas": "Реплики", + "Ready": "Готово", + "Status": "Состояние", + "Actions": "Действия", "Edit deployment": "Изменить развертывание", - "Edit HPA Configuration": "Изменить конфигурацию HPA", - "Edit Manual Scaling Configuration": "Изменить вручную масштабирование конфигурации", - "Egress Policy": "Политика исходящего трафика", + "View workflow run": "Просмотреть выполнение рабочего процесса", + "Re-deploy": "Развернуть повторно", + "Failed to trigger deployment": "Не удалось активировать развертывание", + "Trigger": "Триггер", + "workflow on": "рабочий процесс в", + "with the following parameters:": "со следующими параметрами:", + "Namespace": "Пространство имен", + "Sign in": "Вход", + "GitHub authentication required to trigger deployment.": "Чтобы активировать развертывание, требуется проверка подлинности GitHub.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Подготовка к отправке рабочего процесса активирована. Проверьте ход выполнения в GitHub Actions.", + "Close": "Закрыть", + "Triggering...": "Активация...", + "Deploy": "Развернуть", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Включите конвейеры GitHub в разделе \"Параметры\" → \"Предварительные версии функций\", чтобы использовать развертывания конвейеров.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Включите конвейеры развертывания на основе GitHub для проектов AKS.", - "Enable Horizontal Pod Autoscaler": "Включить средство горизонтального автомасштабирования объектов pod", - "Enable liveness probe": "Включить пробу активности", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Включайте или отключайте функции, которые еще находятся в разработке. Предварительные версии функций могут изменяться или удаляться в будущих выпусках.", - "Enable pod anti-affinity": "Включить анти-сходство для объекта pod", - "Enable public access": "Включить общий доступ", - "Enable readiness probe": "Включить пробу готовности", - "Enable resource requests and limits": "Включить запросы и ограничения ресурсов", - "Enable startup probe": "Включить пробу запуска", - "Enable topology spread constraints": "Включить ограничения распространения топологии", - "Enabling Addons...": "Включение надстроек...", - "Enabling these addons may incur additional Azure costs.": "Включение этих надстроек может привести к дополнительным расходам в Azure.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Проверьте, что указанное минимальное число реплик не превышает указанного максимального числа, а целевая загрузка ЦП находится в диапазоне 10–95 %.", + "Workloads": "Рабочие нагрузки", + "No clusters in this project.": "В этом проекте нет кластеров.", + "Failed to fetch deployments": "Не удалось получить развертывания", + "Failed to fetch cluster status": "Не удалось получить состояние кластера", + "Configure security context settings for the container.": "Настройте параметры контекста безопасности для контейнера.", + "Run as non root user": "Запуск от имени непривелигированного пользователя", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Обеспечивает запуск контейнера от имени непривелигированного пользователя (UID != 0), для улучшения безопасности. Это предотвращает атаки с повышением привилегий.", "Ensures the container runs as a non-root user for better security.": "Обеспечивает запуск контейнера от имени пользователя, не являющегося пользователем root, для укрепления безопасности.", - "Ensuring resource group exists...": "Проверка существования группы ресурсов...", - "Enter a name for your first application to get started with deployment.": "Введите имя первого приложения, чтобы начать развертывание.", - "Enter application name": "Введите имя приложения", - "Enter project description": "Введите описание проекта", + "Read only root filesystem": "Корневая файловая система только для чтения", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Подключает корневую файловую систему контейнера в режиме только для чтения, чтобы предотвратить операции записи. Это улучшает безопасность, не позволяя вредоносному коду изменять системные файлы.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Подключает корневую файловую систему контейнера в режиме только для чтения, чтобы предотвратить операции записи.", + "Allow privilege escalation": "Разрешить повышение привилегий", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Определяет, может ли процесс получить больше привилегий, чем его родительский процесс. Отключение этой функции (рекомендуется) предотвращает атаки с повышением привилегий.", + "Controls whether a process can gain more privileges than its parent process.": "Указывает, может ли процесс получить больше привилегий, чем его родительский процесс.", + "Enable pod anti-affinity": "Включить анти-сходство для объекта pod", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Отдавать предпочтение планированию pod на разных узлах для повышения доступности и отказоустойчивости. Это обеспечивает равномерное распределение объектов pod по кластеру.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Отдавать предпочтение планированию pod на разных узлах для повышения доступности и отказоустойчивости.", + "Enable topology spread constraints": "Включить ограничения распространения топологии", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Равномерно распределяет объекты pod между узлами, зонами или другими топологическими доменами для улучшения распределения рабочей нагрузки и доступности.", + "Distributes pods evenly across nodes to improve workload distribution.": "Равномерно распределяет объекты pod между узлами для улучшения распределения нагрузки.", + "Container image": "Образ контейнера", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Количество реплик pod для запуска. Большое количество реплик обеспечивает улучшенную доступность и распределение нагрузки.", + "Continue": "Продолжить", + "Configure Container Deployment": "Настроить развертывание контейнера", + "Networking": "Сеть", + "Healthchecks": "Проверки работоспособности", + "Resource Limits": "Ограничения ресурсов", "Environment Variables": "Переменные среды", - "Error deleting project {{ projectId }}.": "Ошибка при удалении проекта {{ projectId }}.", - "Error Rate": "Частота ошибок", - "Failed to apply": "Не удалось применить", - "Failed to apply resources.": "Не удалось применить ресурсы.", - "Failed to convert namespace: {{message}}": "Не удалось преобразовать пространство имен: {{message}}", - "Failed to create namespace": "Не удалось создать пространство имен", - "Failed to create project": "Не удалось создать проект", - "Failed to enable addon: {{error}}": "Не удалось включить надстройку: {{error}}", - "Failed to enable addons": "Не удалось включить надстройки", - "Failed to fetch cluster status": "Не удалось получить состояние кластера", - "Failed to fetch deployment status": "Не удалось получить состояние развертывания", - "Failed to fetch deployments": "Не удалось получить развертывания", - "Failed to fetch managed namespace details": "Не удалось получить сведения об управляемом пространстве имен", - "Failed to fetch managed namespaces": "Не удалось получить управляемые пространства имен", - "Failed to fetch pod status": "Не удалось получить состояние объекта pod", - "Failed to fetch service status": "Не удалось получить состояние службы", - "Failed to import any projects. See details below.": "Не удалось импортировать проекты. Подробности см. ниже.", - "Failed to initiate login: {{message}}": "Не удалось инициировать вход: {{message}}", - "Failed to load AKS clusters": "Не удалось загрузить кластеры AKS", - "Failed to load Azure context": "Не удалось загрузить контекст Azure", - "Failed to load pipeline runs": "Не удалось загрузить выполнения конвейера", - "Failed to load repositories": "Не удалось загрузить репозитории", - "Failed to load subscriptions": "Не удалось загрузить подписки.", - "Failed to merge cluster: {{message}}": "Не удалось объединить кластер: {{message}}", - "Failed to monitor deployment health": "Сбой отслеживания работоспособности развертывания", - "Failed to register cluster: {{message}}": "Не удалось зарегистрировать кластер: {{message}}", - "Failed to trigger deployment": "Не удалось активировать развертывание", - "Failed to update managed namespace": "Не удалось изменить управляемое пространство имен", - "failureThreshold": "failureThreshold", - "Features": "Функции", - "Federated Credential": "Федеративные учетные данные", - "Filter repositories": "Фильтровать репозитории", - "Final status check failed: {{message}}": "Не удалось выполнить финальную проверку статуса: {{message}}", - "Final status verification failed: {{message}}": "Не удалось выполнить финальное подтверждение статуса: {{message}}", - "for full network policy support.": "для полной поддержки политики сети.", + "Workload Identity": "", + "Advanced": "Дополнительно", + "Information about {{label}}": "Дополнительные сведения о {{label}}", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Добавьте один или несколько манифестов Kubernetes. Отправьте файлы для заполнения редактора или вставьте/отредактируйте их ниже.", + "Upload files": "Отправить файлы", + "Clear editor": "Очистить редактор", + "Review & Deploy": "Проверка и развертывание", "Generated Kubernetes manifests (namespace: {{namespace}})": "Сгенерированные манифесты Kubernetes (пространство имен: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Чтобы активировать развертывание, требуется проверка подлинности GitHub.", - "GitHub Pipelines": "Конвейеры GitHub", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Перейти к проектам", - "Guided configuration for ports, replicas, env, and resources": "Настройка портов, реплик, переменных окружения и ресурсов с помощью пошаговых инструкций", - "Healthchecks": "Проверки работоспособности", - "Healthy": "Работоспособен", + "Resources to be deployed ({{count}} object)_one": "Ресурсы для развертывания ({{count}} объект)", + "Resources to be deployed ({{count}} object)_few": "", + "Resources to be deployed ({{count}} object)_many": "", + "Resources to be deployed ({{count}} object)_other": "Ресурсы для развертывания ({{count}} объектов)", + "namespace: {{namespace}}": "пространство имен: {{namespace}}", + "Configure": "Настроить", + "Deploying": "Развертывание", + "Key": "Ключ", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Значение", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "удалить", + "Add variable": "Добавить переменную", + "Configure container health probes.": "Настроить проверки работоспособности контейнера.", + "Manually configure settings": "Настроить параметры вручную", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "По умолчанию пробы используют HTTP GET по корневому пути с разумными настройками. Включите эту опцию, чтобы задать пользовательские настройки проверки.", + "Enable liveness probe": "Включить пробу активности", + "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Если эта проверка не пройдена несколько раз подряд, Kubernetes перезапускает контейнер. Используется для обнаружения и восстановления в случае взаимоблокировок или нереагирующих контейнеров.", + "Kubernetes restarts the container if this check fails repeatedly.": "Если эта проверка не пройдена несколько раз подряд, Kubernetes перезапускает контейнер.", + "Liveness path": "Путь активности", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "HTTP-путь для проверки активности (например, /healthz). Проба выполняет HTTP-запрос GET по этому пути.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Количество секунд после запуска контейнера до инициирования проб активности.", + "periodSeconds": "periodSeconds", "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Как часто (в секундах) выполнять пробу активности. Значение по умолчанию: 10 секунд.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Как часто (в секундах) выполнять пробу готовности. Значение по умолчанию: 10 секунд.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Как часто (в секундах) выполнять пробу запуска. Значение по умолчанию: 10 секунд.", - "HPA scales pods based on CPU utilization.": "HPA масштабирует объекты pod на основе загрузки ЦП.", - "Identity Resource Group": "Группа ресурсов удостоверения", - "Import AKS Projects": "Импорт проектов AKS", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Импортируйте существующие управляемые и обычные пространства имен в качестве проектов. Пространства имен, которые еще не являются проектами AKS Desktop, будут преобразованы путем добавления необходимой метки проекта.", - "Import Selected Projects": "Импортировать выбранные проекты", - "Importing": "Выполняется импорт", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Выполняется импорт {{current}} из {{total}}: {{name}} из {{clusterName}}", - "in resource group": "в группе ресурсов", - "Information about {{label}}": "Дополнительные сведения о {{label}}", - "Information about CPU limit": "Сведения об ограничении ЦП", - "Information about CPU request": "Сведения о запросе ЦП", - "Information about memory limit": "Информация об ограничении памяти", - "Information about memory request": "Сведения о запросе памяти", - "Information about target CPU utilization": "Информация об использовании целевого ЦП", - "Ingress Policy": "Политика входящего трафика", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Выполняется инициализация…", - "Initiating Azure login": "Инициируется вход в Azure", - "Initiating managed namespace creation": "Инициируется создание управляемого пространства имен", - "Install Extension": "Установить расширение", - "Install GitHub App": "Установить Приложение GitHub", - "Installing": "Идет установка.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Количество секунд, после которых истекает время ожидания пробы. Значение по умолчанию: 1 секунда.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Если происходит сбой пробы, Kubernetes выполнит несколько попыток, прежде чем отказаться и перезапустить контейнер.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Минимальное последовательное количество успешных попыток, чтобы проба считалась успешной после сбоя. Значение по умолчанию: 1.", + "Enable readiness probe": "Включить пробу готовности", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes не направляет трафик в объект pod, пока проверка не пройдена. Используется для указания готовности контейнера принимать трафик.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes не направляет трафик в объект pod, пока проверка не пройдена.", + "Readiness path": "Путь готовности", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "HTTP-путь для проверки готовности (например, /ready). Проба выполняет HTTP-запрос GET по этому пути.", + "Number of seconds after the container has started before readiness probes are initiated.": "Количество секунд после запуска контейнера до инициирования проб готовности.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Как часто (в секундах) выполнять пробу готовности. Значение по умолчанию: 10 секунд.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Если происходит сбой пробы, Kubernetes выполнит несколько попыток, прежде чем пометить объект pod как неготовый.", + "Enable startup probe": "Включить пробу запуска", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes временно отключает проверки активности и готовности до успешного запуска. Полезно для контейнеров с длительным временем запуска.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes временно отключает проверки активности и готовности до успешного запуска.", + "Startup path": "Путь запуска", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "HTTP-путь для проверки запуска (например, /startup). Проба выполняет HTTP-запрос GET по этому пути.", + "Number of seconds after the container has started before startup probes are initiated.": "Количество секунд после запуска контейнера до инициирования проб запуска.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Как часто (в секундах) выполнять пробу запуска. Значение по умолчанию: 10 секунд.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Если происходит сбой пробы, Kubernetes выполнит несколько попыток, прежде чем отказаться. Для проб запуска это определяет время ожидания перед перезапуском.", + "Enable Horizontal Pod Autoscaler": "Включить средство горизонтального автомасштабирования объектов pod", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Автоматически масштабирует количество объектов pod на основе использования ЦП. HPA увеличит количество объектов pod, когда использование ЦП превысит целевое значение, и уменьшит, если оно будет ниже.", + "HPA scales pods based on CPU utilization.": "HPA масштабирует объекты pod на основе загрузки ЦП.", + "Min replicas": "Минимальное количество реплик", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Минимальное количество реплик pod, которое HPA будет поддерживать, даже при низком уровне использования ЦП.", + "Max replicas": "Максимальное количество реплик", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Максимальное количество реплик pod, до которого HPA может вертикально увеличить масштаб при высоком уровне использования ЦП.", + "Target CPU utilization": "Целевая загрузка ЦП узла", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Целевой средний процент загрузки ЦП во всех объектах pod. HPA вертикально увеличит масштаб, если загрузка выше этого значения, и уменьшит, если она ниже.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Проверьте, что указанное минимальное число реплик не превышает указанного максимального числа, а целевая загрузка ЦП находится в диапазоне 10–95\u00a0%.", + "Target port": "Целевой порт", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Номер порта, который прослушивает ваш контейнер. Это порт внутри контейнера, где работает ваше приложение.", + "Service port": "Порт службы", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Номер порта, раскрытого службой Kubernetes. Трафик к этому порту перенаправляется на целевой порт.", + "Use custom service port": "Использовать пользовательский порт службы", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "По умолчанию порт службы совпадает с целевым портом. Включите эту опцию, чтобы использовать для службы другой порт.", + "Service type": "Тип службы", "Internal only": "Только внутренние", - "Invalid YAML": "Недействительный YAML", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Используйте ClusterIP. Лучше всего подходит для служб, доступных только внутри кластера.", + "Enable public access": "Включить общий доступ", + "Creates a LoadBalancer to expose the application to the internet.": "Создаёт LoadBalancer для доступа к приложению из Интернета.", + "Enable resource requests and limits": "Включить запросы и ограничения ресурсов", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Настройте запросы ЦП и памяти (гарантированные ресурсы) и ограничения (максимальные ресурсы) для управления выделением ресурсов и предотвращения чрезмерного потребления ресурсов кластера контейнерами.", + "CPU request": "Запрос на ЦП", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Минимальное число ЦП, гарантированное контейнеру. Kubernetes запланирует объект pod на узле с доступными ЦП не меньше указанного числа.", + "millicores": "миллиядра", + "CPU limit": "Ограничение ЦП", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Максимальное количество ЦП, которое может использовать контейнер. При превышении работа контейнера будет ограничена.", + "Memory request": "Запрос памяти", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Минимальный объём памяти, гарантированный контейнеру. Kubernetes запланирует объект pod на узле с доступной памятью не меньше этого объёма.", + "mebibytes": "мебибайты", + "Memory limit": "Ограничение памяти", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Максимальное количество памяти, которое может использовать контейнер. При превышении указанного количества работа контейнера будет принудительно завершена (OOMKilled).", + "Container Image": "Образ контейнера", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Развертывать из Реестра контейнеров Azure, Docker Hub или GHCR", + "Auto-generated Deployment and Service manifests": "Автоматически созданные манифесты развертывания и служб", + "Guided configuration for ports, replicas, env, and resources": "Настройка портов, реплик, переменных окружения и ресурсов с помощью пошаговых инструкций", + "No Kubernetes expertise required to get started": "Чтобы начать работу, не нужны знания Kubernetes", + "Bring your own Kubernetes manifests to deploy": "Используйте для развертывания собственные манифесты Kubernetes", + "Use existing manifests for full control": "Использовать существующие манифесты для полного контроля", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Поддержка нескольких файлов (развертывания, службы, входящий трафик и др.)", + "Preview and basic validation before apply": "Предварительный просмотр и базовая проверка перед применением", + "Select Source": "Выбор источника", + "Choose a source for your deployment (container image, repo, etc.).": "Выберите источник для развертывания (образ контейнера, репозиторий и т.\u00a0д.).", + "Deployment source": "Источник развертывания", + "Features": "Функции", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Группа ресурсов удостоверения", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Проверка существующего удостоверения...", + "Creating managed identity...": "Создание управляемого удостоверения...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Недействительный YAML: отсутствует обязательное поле (kind)", + "Invalid YAML: List resource must have an array \"items\" field": "Недопустимый YAML: ресурс списка должен содержать поле \"items\" с массивом", "Invalid YAML: List item missing required field (kind)": "Недействительный YAML: в элементе списка отсутствует обязательное поле (kind)", "Invalid YAML: List item missing required field (metadata.name)": "Недействительный YAML: в элементе списка отсутствует обязательное поле (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "Недопустимый YAML: ресурс списка должен содержать поле \"items\" с массивом", - "Invalid YAML: missing required field (kind)": "Недействительный YAML: отсутствует обязательное поле (kind)", "Invalid YAML: missing required field (metadata.name)": "Недействительный YAML: отсутствует обязательное поле (metadata.name)", - "Issue {{number}}": "Проблема {{number}}", + "Invalid YAML": "Недействительный YAML", + "Validation failed": "Проверка не пройдена", + "Failed to apply": "Не удалось применить", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Применено ресурсов: {{applied}}, но произошёл сбой {{failed}}:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "Один или несколько ресурсов ({{count}}) успешно применены.", + "Applied {{count}} resource(s) successfully._few": "", + "Applied {{count}} resource(s) successfully._many": "", + "Applied {{count}} resource(s) successfully._other": "Один или несколько ресурсов ({{count}}) успешно применены.", + "Failed to apply resources.": "Не удалось применить ресурсы.", + "unnamed": "без имени", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Содержимое", + "Push agent config files": "Отправить файлы конфигурации агента", + "Workflows": "Рабочие процессы", + "Create setup workflow in .github/workflows/": "Создать рабочий процесс настройки в .github/workflows/", + "Pull requests": "Запросы на вытягивание", + "Create deployment PRs": "Создать PR развертывания", "Issues": "Проблемы", - "just now": "только что", - "KEDA (Event-Driven Autoscaling)": "KEDA (автомасштабирование на основе событий)", - "Keep Going": "Продолжайте", - "Key": "Ключ", - "Kubernetes restarts the container if this check fails repeatedly.": "Если эта проверка не пройдена несколько раз подряд, Kubernetes перезапускает контейнер.", - "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Если эта проверка не пройдена несколько раз подряд, Kubernetes перезапускает контейнер. Используется для обнаружения и восстановления в случае взаимоблокировок или нереагирующих контейнеров.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes временно отключает проверки активности и готовности до успешного запуска.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes временно отключает проверки активности и готовности до успешного запуска. Полезно для контейнеров с длительным временем запуска.", - "Kubernetes Version": "Версия Kubernetes", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes не направляет трафик в объект pod, пока проверка не пройдена.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes не направляет трафик в объект pod, пока проверка не пройдена. Используется для указания готовности контейнера принимать трафик.", - "Kubernetes YAML": "Kubernetes YAML", + "Track agent progress": "Отслеживание хода выполнения агента", + "Run deployment workflows": "Запустить рабочие процессы развертывания", + "Connect to GitHub": "Подключение к GitHub", + "Connected to '{{username}}'.": "Подключено к \"{{username}}\".", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Авторизуйте классическую версию AKS для создания конвейеров развертывания в вашем репозитории.", + "Required Permissions": "Необходимые разрешения", + "Complete authorization on your browser screen": "Завершите авторизацию на экране браузера", + "Connect": "Подключить", + "Select repository": "Выберите репозиторий", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Завершите установку в браузере. Обновление произойдет автоматически после установки приложения в {{repoName}}.", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Для продолжения необходимо установить Приложение GitHub классической версии AKS на {{repoName}}.", + "Reopen install page": "Повторно открыть страницу установки", + "Install GitHub App": "Установить Приложение GitHub", + "Checking...": "Проверка...", + "Connecting to GitHub...": "Подключение к GitHub...", + "Connect GitHub": "Подключить GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Подключение имеется", + "Sign in to GitHub": "Войти в GitHub", + "Failed to load repositories": "Не удалось загрузить репозитории", + "Filter repositories": "Фильтровать репозитории", + "No repositories match your filter": "Нет репозиториев, соответствующих вашему фильтру", + "No repositories found": "Репозитории не найдены", "less than a minute": "менее минуты", - "Limits": "Ограничения", - "Liveness path": "Путь активности", - "Loading": "Загрузка", - "Loading AKS clusters": "Загружаются кластеры AKS", - "Loading Azure account information": "Загружаются сведения учетной записи Azure", - "Loading Azure context...": "Загрузка контекста Azure...", - "Loading clusters": "Загружаются кластеры", - "Loading configuration...": "Загрузка конфигурации...", - "Loading deployments": "Загружаются развертывания", - "Loading metrics": "Загружаются метрики", - "Loading scaling metrics from Prometheus": "Загружаются метрики масштабирования из Prometheus", - "Loading subscriptions": "Загружаются подписки", - "Loading...": "Загрузка...", - "Location": "Расположение", - "Log out": "Выйти", - "Logged in as": "Выполнен вход в систему от имени", - "Logging out": "Выполняется выход", - "Login successful! Redirecting": "Вход успешно выполнен! Выполняется перенаправление", - "Login timeout. Please try again.": "Время ожидания входа истекло. Повторите попытку.", + "{{count}} min_one": "{{count}} мин", + "{{count}} min_few": "", + "{{count}} min_many": "", + "{{count}} min_other": "{{count}} мин", + "Up next": "Далее", + "PR {{number}}": "ЗАПРОС НА ВЫТЯГИВАНИЕ {{number}}", + "Checking merge status...": "Проверка состояния слияния...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Это занимает больше времени, чем ожидалось. Проверьте PR в GitHub для получения актуального состояния.", + "This PR was closed without merging. You may need to restart the process.": "Этот запрос на вытягивание был закрыт без слияния. Возможно, потребуется перезапустить процесс.", + "Review on GitHub": "Просмотреть на GitHub", + "Agent is working": "Агент работает", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Агент написания кода Copilot анализирует ваш репозиторий и создает PR развертывания с Dockerfile, манифестами Kubernetes и рабочим процессом GitHub Actions.", + "Issue {{number}}": "Проблема {{number}}", + "Waiting for agent workflow to start...": "Ожидание запуска рабочего процесса агента...", + "This typically takes 10–25 minutes.": "Обычно это занимает 10–25 минут.", + "Pipeline configured": "Конвейер настроен", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "Конвейер CI/CD для {{repoFullName}} готов. Активируйте развертывания на вкладке \"Развертывание\".", + "Setup PR reviewed and merged": "Для PR настройки выполнена проверка и слияние", + "Copilot agent reviewed your repo and generated deployment PR": "Агент Copilot проверил ваш репозиторий и создал PR развертывания", + "Deployment PR reviewed and merged": "Для PR развертывания выполнена проверка и слияние", + "View deployment": "Просмотреть развертывание", + "You can collapse this panel. Progress is saved and will resume when you return.": "Вы можете свернуть эту панель. Ход выполнения сохранен и возобновится при возвращении.", + "Creating setup PR...": "Создание PR настройки...", + "The agent is creating the setup PR to enable the Copilot agent.": "Агент создает PR настройки для включения агента Copilot.", + "Setup PR Created": "Создан PR настройки", + "Review and merge the setup PR to enable the Copilot agent.": "Просмотрите и выполните слияние PR настройки, чтобы включить агент Copilot.", + "Setting up Copilot agent...": "Настройка агента Copilot...", + "Creating the trigger issue for the Copilot coding agent.": "Создание запроса триггера для агента написания кода Copilot.", + "Deployment PR Ready": "PR развертывания готов", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Агент создал PR развертывания. Просмотрите созданные файлы и выполните слияние, чтобы запустить конвейер развертывания.", + "Copilot agent": "Агент Copilot", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "После слияния агент Copilot проанализирует ваш репозиторий и создаст PR развертывания", + "Deployment PR": "PR развертывания", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "После создания агентом PR развертывания проверьте созданные файлы и выполните слияние, чтобы запустить конвейер развертывания", + "Connect Source": "Подключить источник", + "Set up Copilot Agent": "Настроить агент Copilot", + "Review & Merge": "Проверка и слияние", + "Collapse panel": "Свернуть панель", + "Keep Going": "Продолжайте", + "Discard": "Отменить", + "Canceling will discard your pipeline progress. Are you sure?": "Отмена приведет к удалению прогресса конвейера. Вы уверены?", + "Ensuring resource group exists...": "Проверка существования группы ресурсов...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Настройка федеративных учетных данных...", + "Workload identity configured": "Удостоверение рабочей нагрузки настроено", + "Configure Workload Identity": "Настройка удостоверения рабочей нагрузки", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Будут созданы следующие ресурсы Azure для обеспечения проверки подлинности конвейера GitHub Actions в вашем кластере AKS:", "Managed Identity": "Управляемое удостоверение", + "in resource group": "в группе ресурсов", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Федеративные учетные данные", + "OIDC trust for": "Доверие OIDC для", + "branch": "ветвь", + "Resource group where the managed identity will be created": "Группа ресурсов, в которой будет создано управляемое удостоверение", + "Workload identity configured successfully.": "Удостоверение рабочей нагрузки настроено.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Это может быть проблемой с разрешениями. Проверьте разрешения Приложения GitHub и повторите попытку.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Возможно, операция еще выполняется на GitHub. Проверьте ссылку выше, чтобы узнать актуальный статус.", + "Try again, or check GitHub for details.": "Повторите попытку или ознакомьтесь с подробностями на GitHub.", + "Initializing...": "Выполняется инициализация…", + "Checking repository readiness...": "Проверка готовности репозитория...", + "Loading configuration...": "Загрузка конфигурации...", + "Unknown error": "Неизвестная ошибка", + "Trigger Copilot Agent": "Активировать агент Copilot", + "Create Setup PR": "Создать PR настройки", + "Failed to fetch deployment status": "Не удалось получить состояние развертывания", + "Failed to fetch pod status": "Не удалось получить состояние объекта pod", + "Failed to fetch service status": "Не удалось получить состояние службы", + "Failed to monitor deployment health": "Сбой отслеживания работоспособности развертывания", + "Convert Namespaces to AKS Projects": "Преобразовать пространства имен в проекты AKS", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Следующие пространства имен будут преобразованы в проекты AKS Desktop с добавлением этих меток:", "managed namespaces only": "только управляемые пространства имен", - "ManagedNamespacePreview feature registered successfully!": "Функция ManagedNamespacePreview успешно зарегистрирована!", - "Manual": "Вручную", - "Manual Deploy": "Ручное развертывание", - "Manually configure settings": "Настроить параметры вручную", - "Max replicas": "Максимальное количество реплик", - "Maximum CPU allowed (1000m = 1 CPU core)": "Максимальное разрешенное число используемых CPU (1000 миллиядер = 1 ядро CPU)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Максимальный разрешенный объем памяти (1024 МиБ = 1 ГиБ)", - "Maximum Replicas": "Максимальное число реплик", - "mebibytes": "мебибайты", - "Memory": "Память", - "Memory limit": "Ограничение памяти", - "Memory Limits": "Ограничения памяти", - "Memory request": "Запрос памяти", - "Memory Requests": "Запросы памяти", - "Memory Resources": "Ресурсы памяти", - "Memory Usage": "Использование памяти", - "Memory utilization": "Загрузка памяти", + "Namespaces to convert:": "Пространства имен для преобразования:", + "Already AKS projects (will import directly):": "Уже проекты AKS (будут импортированы напрямую):", + "Converting": "Выполняется преобразование", + "Confirm & Import": "Подтвердить и импортировать", + "Please select at least one namespace to import": "Выберите хотя бы одно пространство имен для импорта", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Кластер {{clusterName}} должен быть зарегистрирован перед импортом обычных пространств имен. Сначала импортируйте управляемое пространство имен из этого кластера.", "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Выполняется слияние кластера {{clusterName}} ({{count}} пространство имен)", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_few": "", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_many": "", "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Выполняется слияние кластера {{clusterName}} (пространств имен: {{count}})", - "Metrics": "Метрики", - "Metrics refreshed every 30 seconds": "Метрики обновляются каждые 30 секунд", - "Metrics Unavailable": "Метрики недоступны", - "millicores": "миллиядра", - "Min replicas": "Минимальное количество реплик", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Минимальное последовательное количество успешных попыток, чтобы проба считалась успешной после сбоя. Значение по умолчанию: 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Минимальное гарантированное количество ЦП (1000 миллиядер = 1 ядро ЦП)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Минимальный гарантированный объем памяти (1024 МиБ = 1 ГиБ)", - "Minimum Replicas": "Минимальное количество реплик", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Отсутствует необходимый контекст Azure. Убедитесь, что вы вошли в систему и кластер связан с действующей подпиской, группой ресурсов и клиентом.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Подключает корневую файловую систему контейнера в режиме только для чтения, чтобы предотвратить операции записи.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Подключает корневую файловую систему контейнера в режиме только для чтения, чтобы предотвратить операции записи. Это улучшает безопасность, не позволяя вредоносному коду изменять системные файлы.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Поддержка нескольких файлов (развертывания, службы, входящий трафик и др.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Должно содержать только строчные буквы, цифры и дефисы, при этом начинаться и заканчиваться буквенно-цифровым символом", - "Name": "Имя", - "Namespace": "Пространство имен", + "Failed to merge cluster: {{message}}": "Не удалось объединить кластер: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Преобразование {{name}} в проект AKS (это может занять некоторое время)...", + "Failed to convert namespace: {{message}}": "Не удалось преобразовать пространство имен: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Выполняется импорт {{current}} из {{total}}: {{name}} из {{clusterName}}", + "Project '{{name}}' successfully imported": "Проект \"{{name}}\" импортирован", "Namespace '{{name}}' converted and imported as project": "Пространство имен \"{{name}}\" преобразовано и импортировано в качестве проекта", - "Namespace created successfully!": "Пространство имен создано!", - "Namespace Created Successfully!": "Пространство имен создано!", - "Namespace creation API succeeded, proceeding with user assignments": "API создания пространства имен завершил работу успешно, сейчас начнется назначение пользователей", - "Namespace creation completed successfully! Adding user access": "Пространство имен создано! Выполняется добавление доступа пользователя", - "Namespace Creation Failed": "Не удалось создать пространство имен", - "Namespace creation failed: {{message}}": "Не удалось создать пространство имен: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Инициировано создание пространства имен! Отслеживается статус создания", - "Namespace Name": "Имя пространства имен", - "Namespace name is required": "Требуется имя пространства имен", - "Namespace name must be 63 characters or fewer": "Имя пространства имен должно содержать не более 63 символов", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Имя пространства имен должно содержать только строчные буквы, цифры и дефисы, при этом начинаться и заканчиваться буквенно-цифровым символом", - "Namespace status check failed: {{message}}": "Не удалось проверить статус пространства имен: {{message}}", - "Namespace status verification failed: {{message}}": "Не удалось подтвердить статус пространства имен: {{message}}", - "namespace: {{namespace}}": "пространство имен: {{namespace}}", - "Namespaces to convert:": "Пространства имен для преобразования:", - "Network I/O": "Сетевые операции ввода-вывода", - "Network In": "Входящий сетевой трафик", - "Network Out": "Исходящий сетевой трафик", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Подсистему политики сети нельзя изменить после создания кластера. Создайте новый кластер с помощью", - "Networking": "Сеть", - "Networking Policies": "Сетевые политики", - "New Project": "Новый проект", - "Next": "Далее", + "Successfully merged {{count}} cluster(s)_one": "Объединен {{count}} кластер", + "Successfully merged {{count}} cluster(s)_few": "", + "Successfully merged {{count}} cluster(s)_many": "", + "Successfully merged {{count}} cluster(s)_other": "Объединено кластеров: {{count}}", + "with {{count}} project(s)_one": "с {{count}} проектом", + "with {{count}} project(s)_few": "", + "with {{count}} project(s)_many": "", + "with {{count}} project(s)_other": "с проектами ({{count}})", + "{{count}} failed._one": "Сбой {{count}}.", + "{{count}} failed._few": "", + "{{count}} failed._many": "", + "{{count}} failed._other": "Сбой {{count}}.", + "Failed to import any projects. See details below.": "Не удалось импортировать проекты. Подробности см. ниже.", + "Import AKS Projects": "Импорт проектов AKS", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Импортируйте существующие управляемые и обычные пространства имен в качестве проектов. Пространства имен, которые еще не являются проектами AKS Desktop, будут преобразованы путем добавления необходимой метки проекта.", + "Select Namespaces to Import": "Выберите пространства имен для импорта", + "{{count}} selected_one": "Выбран {{count}}", + "{{count}} selected_few": "", + "{{count}} selected_many": "", + "{{count}} selected_other": "Выбрано {{count}}", + "Select All": "Выбрать все", + "Deselect All": "Отменить выбор всех", + "AKS Managed": "Управляемый AKS", + "Regular": "обычный", + "AKS Project?": "Проект AKS?", + "Yes": "Да", "No": "Нет", - "No AKS clusters found in this subscription.": "В этой подписке не найдены кластеры AKS.", - "No cluster is associated with this project.": "С этим проектом не связан ни один кластер.", - "No clusters found. Register a cluster first.": "Кластеры не найдены. Сначала зарегистрируйте кластер.", - "No clusters in this project.": "В этом проекте нет кластеров.", - "No clusters with Azure Entra ID authentication found for this subscription": "Для этой подписки не найдены кластеры с аутентификацией Azure Entra ID", - "No data available": "Нет доступных данных", - "No deployments found": "Развертывания не найдены", + "Importing": "Выполняется импорт", + "Import Selected Projects": "Импортировать выбранные проекты", + "Failed to fetch managed namespaces": "Не удалось получить управляемые пространства имен", + "Failed to fetch managed namespace details": "Не удалось получить сведения об управляемом пространстве имен", + "Failed to update managed namespace": "Не удалось изменить управляемое пространство имен", + "Updating": "Обновление", + "Update": "Обновить", + "AKS desktop logo": "Логотип классической версии AKS", "No Deployments Found": "Развертывания не найдены", - "No deployments found in this namespace.": "В этом пространстве имен не найдены развертывания.", - "No description provided": "Описание не указано", - "No eligible clusters found in this subscription.": "В этой подписке не найдено подходящих кластеров.", - "No Kubernetes expertise required to get started": "Чтобы начать работу, не нужны знания Kubernetes", - "No options": "Нет параметров", - "No pipeline runs yet.": "Выполнений конвейера пока нет.", - "No pods found for deployment \"{{name}}\"": "Объекты pod для развертывания \"{{name}}\" не найдены", - "No repositories found": "Репозитории не найдены", - "No repositories match your filter": "Нет репозиториев, соответствующих вашему фильтру", - "No response time data available": "Данные о времени ответа отсутствуют", - "No scaling data available": "Данные о масштабировании отсутствуют", - "No subscriptions found": "Подписки не найдены", - "Not specified": "Не указано", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Примечание. Для управляемых пространств имен AKS управление Azure ARM будет удалено автоматически.", - "Number of Replicas": "Число реплик", - "Number of seconds after the container has started before liveness probes are initiated.": "Количество секунд после запуска контейнера до инициирования проб активности.", - "Number of seconds after the container has started before readiness probes are initiated.": "Количество секунд после запуска контейнера до инициирования проб готовности.", - "Number of seconds after the container has started before startup probes are initiated.": "Количество секунд после запуска контейнера до инициирования проб запуска.", - "Number of seconds after which the probe times out. Default is 1 second.": "Количество секунд, после которых истекает время ожидания пробы. Значение по умолчанию: 1 секунда.", - "OIDC trust for": "Доверие OIDC для", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "После создания агентом PR развертывания проверьте созданные файлы и выполните слияние, чтобы запустить конвейер развертывания", - "Only clusters with Azure Entra ID authentication are shown.": "Показаны только кластеры с аутентификацией Azure Entra ID.", - "Performing final status verification": "Выполняется финальное подтверждение статуса", - "periodSeconds": "periodSeconds", - "Pipeline": "Конвейер", - "Pipeline configured": "Конвейер настроен", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Завершите проверку подлинности в браузере. Это окно будет автоматически перенаправлено после входа.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Зарегистрируйте его для продолжения.", - "Please review all the settings before creating your AKS project": "Проверьте все параметры перед созданием проекта AKS", + "There are no deployments in this project namespace yet.": "В этом пространстве имен проекта пока нет развертываний.", + "Deploy an application to view logs.": "Разверните приложение для просмотра журналов.", + "Metrics": "Метрики", + "CPU Usage": "Загрузка ЦП", + "Memory Usage": "Использование памяти", + "Request Rate": "Частота запросов", + "Error Rate": "Частота ошибок", + "Metrics refreshed every 30 seconds": "Метрики обновляются каждые 30 секунд", + "Select a deployment to view metrics": "Выберите развертывание для просмотра метрик", + "Metrics Unavailable": "Метрики недоступны", + "Application Metrics": "Метрики приложений", + "Request & error rate": "Частота ошибок и частота запросов", + "No data available": "Нет доступных данных", + "Response Time": "Время отклика", + "Memory utilization": "Загрузка памяти", + "Network I/O": "Сетевые операции ввода-вывода", + "Deploy an application to start viewing metrics.": "Разверните приложение, чтобы начать просмотр метрик.", "Please select a deployment to view metrics": "Выберите развертывание для просмотра метрик", - "Please select a subscription first": "Сначала выберите подписку", - "Please select at least one namespace to import": "Выберите хотя бы одно пространство имен для импорта", - "Please sign in to Azure to continue.": "Чтобы продолжить, войдите в Azure.", - "Pod Details": "Детали объекта pod", - "Pod Name": "Имя объекта pod", - "PR {{number}}": "ЗАПРОС НА ВЫТЯГИВАНИЕ {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Отдавать предпочтение планированию pod на разных узлах для повышения доступности и отказоустойчивости.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Отдавать предпочтение планированию pod на разных узлах для повышения доступности и отказоустойчивости. Это обеспечивает равномерное распределение объектов pod по кластеру.", - "Preview and basic validation before apply": "Предварительный просмотр и базовая проверка перед применением", - "Preview Features": "Предварительные версии функций", - "Project '{{name}}' successfully imported": "Проект \"{{name}}\" импортирован", - "Project Basics": "Основы проекта", - "Project Created Successfully!": "Проект успешно создан!", - "Project creation completed successfully!": "Проект успешно создан!", - "Project Creation Failed": "Не удалось создать проект", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Время ожидания создания проекта истекло через 10 минут. Проверьте, создано ли пространство имен, и попробуйте еще раз.", - "Project Description": "Описание проекта", - "Project Name": "Имя проекта", - "Project name is available": "Это имя проекта доступно", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Имя проекта может содержать только строчные буквы, цифры и дефисы (пробелы запрещены)", "Project Status": "Статус проекта", - "Pull requests": "Запросы на вытягивание", - "Push agent config files": "Отправить файлы конфигурации агента", - "Re-deploy": "Развернуть повторно", - "Read only root filesystem": "Корневая файловая система только для чтения", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Доступ только для чтения к большинству объектов в пространстве имен. Не может просматривать роли, привязки ролей и секреты.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Доступ для чтения/записи к большинству объектов в пространстве имен. Не может просматривать или изменять роли и привязки ролей. Может получить доступ к секретам и запускать объекты pod от имени любой учетной записи ServiceAccount в пространстве имен.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Доступ для чтения/записи к большинству ресурсов в пространстве имен. Может создавать роли и привязки ролей в пространстве имен. Не может выполнять запись в квоте ресурсов или самом пространстве имен.", - "Readiness path": "Путь готовности", - "Ready": "Готово", - "Refresh": "Обновить", - "Refreshing": "Идет обновление", - "Register AKS Cluster": "Зарегистрировать кластер AKS", - "Register Cluster": "Регистрация кластера", - "Register ManagedNamespacePreview Feature": "Зарегистрируйте функцию ManagedNamespacePreview", - "Registering": "Выполняется регистрация", - "Registering cluster": "Выполняется регистрация кластера", - "Regular": "обычный", - "Regular Kubernetes namespace": "Обычное пространство имен Kubernetes", - "remove": "удалить", - "Remove assignee": "Удалить назначенного пользователя", - "Reopen install page": "Повторно открыть страницу установки", - "Replica Bounds": "Границы реплик", - "Replicas": "Реплики", - "Request & error rate": "Частота ошибок и частота запросов", - "Request Rate": "Частота запросов", - "Requests": "Запросы", - "Required Permissions": "Необходимые разрешения", - "Resource Group": "Группа ресурсов", - "Resource group where the managed identity will be created": "Группа ресурсов, в которой будет создано управляемое удостоверение", - "Resource Limits": "Ограничения ресурсов", + "Total Pods": "Всего объектов pod", + "Application Health": "Работоспособность приложения", + "Loading metrics": "Загружаются метрики", "Resource Usage": "Использование ресурсов", - "Resources to be deployed ({{count}} object)_one": "Ресурсы для развертывания ({{count}} объект)", - "Resources to be deployed ({{count}} object)_other": "Ресурсы для развертывания ({{count}} объектов)", - "Response Time": "Время отклика", + "Avg Response Time": "Среднее время отклика", + "No response time data available": "Данные о времени ответа отсутствуют", + "Absolute usage": "Абсолютное использование", + "Network In": "Входящий сетевой трафик", + "Network Out": "Исходящий сетевой трафик", + "Pod Details": "Детали объекта pod", + "Pod Name": "Имя объекта\u00a0pod", "Restarts": "Перезапуски", - "Retry": "Повторить", - "Review": "Проверка", - "Review & Deploy": "Проверка и развертывание", - "Review & Merge": "Проверка и слияние", - "Review and merge the setup PR to enable the Copilot agent.": "Просмотрите и выполните слияние PR настройки, чтобы включить агент Copilot.", - "Review on GitHub": "Просмотреть на GitHub", - "Review Project Configuration": "Проверьте конфигурацию проекта", - "Role": "Роль", - "Role Assignment": "Назначение ролей", - "Run as non root user": "Запуск от имени непривелигированного пользователя", - "Run deployment workflows": "Запустить рабочие процессы развертывания", - "Save": "Сохранить", - "Scaled down": "Вертикальное уменьшение масштаба завершено", - "Scaling": "Масштабирование", + "No pods found for deployment \"{{name}}\"": "Объекты pod для развертывания \"{{name}}\" не найдены", + "Preview Features": "Предварительные версии функций", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Включайте или отключайте функции, которые еще находятся в разработке. Предварительные версии функций могут изменяться или удаляться в будущих выпусках.", + "GitHub Pipelines": "Конвейеры GitHub", + "Enable GitHub-based deployment pipelines for AKS projects.": "Включите конвейеры развертывания на основе GitHub для проектов AKS.", + "Loading scaling metrics from Prometheus": "Загружаются метрики масштабирования из Prometheus", "Scaling Chart Unavailable": "Диаграмма масштабирования недоступна", - "Scaling History (Last 24 Hours)": "Журнал масштабирования (за последние 24 часа)", + "No scaling data available": "Данные о масштабировании отсутствуют", + "Edit HPA Configuration": "Изменить конфигурацию HPA", + "Edit Manual Scaling Configuration": "Изменить вручную масштабирование конфигурации", + "Minimum Replicas": "Минимальное количество реплик", + "Maximum Replicas": "Максимальное число реплик", + "Target CPU Utilization (%)": "Целевая загрузка ЦП узла (%)", + "Number of Replicas": "Число реплик", + "Set the desired number of pod replicas for this deployment": "Установите нужное количество реплик pod для этого развертывания", + "Save": "Сохранить", "Scaling Mode": "Режим масштабирования", - "Scaling Overview": "Обзор масштабирования", - "Search clusters": "Поиск кластеров", - "Search subscriptions": "Поиск подписок", - "Select a cluster": "Выбрать кластер", - "Select a deployment to view metrics": "Выберите развертывание для просмотра метрик", + "Current Replicas": "Существующие реплики", + "Desired Replicas": "Нужные реплики", + "Configured Replicas": "Настроенные реплики", + "Replica Bounds": "Границы реплик", + "Available Replicas": "Доступные реплики", + "CPU Usage / Target": "Фактическая / целевая загрузка ЦП %", + "Scaling": "Масштабирование", "Select a deployment to view scaling metrics": "Выберите развертывание для просмотра метрик масштабирования", - "Select a subscription": "Выберите подписку", - "Select All": "Выбрать все", - "Select an AKS cluster": "Выберите кластер AKS", - "Select an Azure subscription": "Выберите подписку Azure", - "Select an option": "Выберите вариант", + "Scaling Overview": "Обзор масштабирования", + "Edit Configuration": "Изменить конфигурацию", + "Scaling History (Last 24 Hours)": "Журнал масштабирования (за последние 24 часа)", + "Copied!": "Скопировано!", + "Copy": "Копировать", + "Copy to clipboard": "Копировать в буфер обмена", + "No deployments found": "Развертывания не найдены", "Select Deployment": "Выберите развертывание", - "Select Namespaces to Import": "Выберите пространства имен для импорта", - "Select repository": "Выберите репозиторий", - "Select Source": "Выбор источника", - "Selected Cluster Details": "Сведения о выбранном кластере", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Выбранный кластер отсутствует в kubeconfig. Зарегистрируйте его, прежде чем продолжить работу.", - "Service port": "Порт службы", - "Service type": "Тип службы", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Настройте запросы ЦП и памяти (гарантированные ресурсы) и ограничения (максимальные ресурсы) для управления выделением ресурсов и предотвращения чрезмерного потребления ресурсов кластера контейнерами.", - "Set quota limits to prevent overuse and maintain cluster stability": "Установите ограничения квоты, чтобы предотвратить чрезмерную нагрузку и поддерживать стабильность кластера", - "Set security, communication and access rules for incoming and outgoing traffic": "Задайте правила безопасности, обмена данными и доступа для входящего и исходящего трафика", - "Set the desired number of pod replicas for this deployment": "Установите нужное количество реплик pod для этого развертывания", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Настройте конвейер CI/CD для автоматизации развертываний и упрощения рабочего процесса", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Установите и настройте новый проект в Службе Azure Kubernetes (AKS)", - "Set up Copilot Agent": "Настроить агент Copilot", - "Set up your pipeline": "Настройка конвейера", - "Setting up Copilot agent...": "Настройка агента Copilot...", - "Setup PR Created": "Создан PR настройки", - "Setup PR reviewed and merged": "Для PR настройки выполнена проверка и слияние", - "Sign in": "Вход", - "Sign in to GitHub": "Войти в GitHub", - "Sign in to GitHub to view pipeline runs.": "Войдите в GitHub, чтобы просмотреть выполнения конвейера.", - "Sign in with Azure": "Войти с помощью Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Чтобы управлять кластерами и ресурсами AKS, войдите с помощью учетной записи Azure", - "Source": "Источник", - "Starting project creation": "Начинается создание проекта", - "Startup path": "Путь запуска", - "Status": "Состояние", - "Subscription": "Подписка", - "Successfully merged {{count}} cluster(s)_one": "Объединен {{count}} кластер", - "Successfully merged {{count}} cluster(s)_other": "Объединено кластеров: {{count}}", - "successThreshold": "successThreshold", - "Target CPU utilization": "Целевая загрузка ЦП узла", - "Target CPU Utilization (%)": "Целевая загрузка ЦП узла (%)", - "Target port": "Целевой порт", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Агент создал PR развертывания. Просмотрите созданные файлы и выполните слияние, чтобы запустить конвейер развертывания.", - "The agent is creating the setup PR to enable the Copilot agent.": "Агент создает PR настройки для включения агента Copilot.", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Для продолжения необходимо установить Приложение GitHub классической версии AKS на {{repoName}}.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Для создания управляемых пространств имен требуется расширение aks-preview. Установите его, чтобы продолжить.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Агент написания кода Copilot анализирует ваш репозиторий и создает PR развертывания с Dockerfile, манифестами Kubernetes и рабочим процессом GitHub Actions.", - "The following addons can be enabled on this cluster:": "В этом кластере можно включить следующие надстройки:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Будут созданы следующие ресурсы Azure для обеспечения проверки подлинности конвейера GitHub Actions в вашем кластере AKS:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Следующие пространства имен будут преобразованы в проекты AKS Desktop с добавлением этих меток:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "HTTP-путь для проверки активности (например, /healthz). Проба выполняет HTTP-запрос GET по этому пути.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "HTTP-путь для проверки готовности (например, /ready). Проба выполняет HTTP-запрос GET по этому пути.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "HTTP-путь для проверки запуска (например, /startup). Проба выполняет HTTP-запрос GET по этому пути.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Для создания управляемых пространств имен нужно зарегистрировать функцию ManagedNamespacePreview.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Максимальное количество ЦП, которое может использовать контейнер. При превышении работа контейнера будет ограничена.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Максимальное количество памяти, которое может использовать контейнер. При превышении указанного количества работа контейнера будет принудительно завершена (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Максимальное количество реплик pod, до которого HPA может вертикально увеличить масштаб при высоком уровне использования ЦП.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Минимальное число ЦП, гарантированное контейнеру. Kubernetes запланирует объект pod на узле с доступными ЦП не меньше указанного числа.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Минимальный объём памяти, гарантированный контейнеру. Kubernetes запланирует объект pod на узле с доступной памятью не меньше этого объёма.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Минимальное количество реплик pod, которое HPA будет поддерживать, даже при низком уровне использования ЦП.", - "The namespace will be created on the selected cluster and set up as a project": "Пространство имен будет создано в выбранном кластере и настроено в качестве проекта", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Количество реплик pod для запуска. Большое количество реплик обеспечивает улучшенную доступность и распределение нагрузки.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Возможно, операция еще выполняется на GitHub. Проверьте ссылку выше, чтобы узнать актуальный статус.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Номер порта, раскрытого службой Kubernetes. Трафик к этому порту перенаправляется на целевой порт.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Номер порта, который прослушивает ваш контейнер. Это порт внутри контейнера, где работает ваше приложение.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Целевой средний процент загрузки ЦП во всех объектах pod. HPA вертикально увеличит масштаб, если загрузка выше этого значения, и уменьшит, если она ниже.", - "There are no deployments in this project namespace yet.": "В этом пространстве имен проекта пока нет развертываний.", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Это занимает больше времени, чем ожидалось. Проверьте PR в GitHub для получения актуального состояния.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Это может быть проблемой с разрешениями. Проверьте разрешения Приложения GitHub и повторите попытку.", - "This PR was closed without merging. You may need to restart the process.": "Этот запрос на вытягивание был закрыт без слияния. Возможно, потребуется перезапустить процесс.", - "This typically takes 10–25 minutes.": "Обычно это занимает 10–25 минут.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Всего объектов pod", - "Track agent progress": "Отслеживание хода выполнения агента", - "Trigger": "Триггер", - "Trigger Copilot Agent": "Активировать агент Copilot", - "Triggering...": "Активация...", - "Try again, or check GitHub for details.": "Повторите попытку или ознакомьтесь с подробностями на GitHub.", - "Type": "Тип", - "Unknown error": "Неизвестная ошибка", - "unnamed": "без имени", - "Up next": "Далее", - "Update": "Обновить", - "Updating": "Обновление", - "Updating local settings": "Обновление локальных параметров", - "Upload files": "Отправить файлы", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Используйте ClusterIP. Лучше всего подходит для служб, доступных только внутри кластера.", - "Use custom service port": "Использовать пользовательский порт службы", - "Use existing manifests for full control": "Использовать существующие манифесты для полного контроля", - "User assignment completed with errors": "Назначение пользователя завершено с ошибками", - "Validation failed": "Проверка не пройдена", - "Value": "Значение", - "View deployment": "Просмотреть развертывание", - "View on GitHub": "Просмотреть на GitHub", - "View run on GitHub": "Просмотреть выполнение на GitHub", - "View workflow run": "Просмотреть выполнение рабочего процесса", - "VPA (Vertical Pod Autoscaler)": "VPA (средство вертикального автомасштабирования объектов pod)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Ожидание запуска рабочего процесса агента...", - "Waiting for browser authorization...": "Ожидание авторизации браузера...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Ждем завершения входа... ( осталось{{minutes}} мин.)", - "Waiting for namespace to be created": "Ждем, пока закончится создание пространства имен", - "Waiting for namespace to propagate": "Ждем распространения пространства имен", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Внимание! Это действие невозможно отменить. Все ресурсы в этих пространствах имен будут удалены без возможности восстановления.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Если происходит сбой пробы, Kubernetes выполнит несколько попыток, прежде чем отказаться и перезапустить контейнер.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Если происходит сбой пробы, Kubernetes выполнит несколько попыток, прежде чем отказаться. Для проб запуска это определяет время ожидания перед перезапуском.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Если происходит сбой пробы, Kubernetes выполнит несколько попыток, прежде чем пометить объект pod как неготовый.", - "with {{count}} project(s)_one": "с {{count}} проектом", - "with {{count}} project(s)_other": "с проектами ({{count}})", - "with the following parameters:": "со следующими параметрами:", - "Wizard steps": "Шаги мастера", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Подготовка к отправке рабочего процесса активирована. Проверьте ход выполнения в GitHub Actions.", - "workflow on": "рабочий процесс в", - "Workflows": "Рабочие процессы", - "Workload identity configured": "Удостоверение рабочей нагрузки настроено", - "Workload identity configured successfully.": "Удостоверение рабочей нагрузки настроено.", - "Workloads": "Рабочие нагрузки", - "Yes": "Да", - "You can collapse this panel. Progress is saved and will resume when you return.": "Вы можете свернуть эту панель. Ход выполнения сохранен и возобновится при возвращении.", - "You need to be logged in to Azure to register AKS clusters.": "Для регистрации кластеров AKS вам нужно войти в Azure.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Ваш проект AKS \"{{projectName}}\" создан и готов к использованию.", - "Your project \"{{projectName}}\" is ready to use.": "Ваш проект \"{{projectName}}\" готов к использованию." + "Loading deployments": "Загружаются развертывания", + "No cluster is associated with this project.": "С этим проектом не связан ни один кластер.", + "Please sign in to Azure to continue.": "Чтобы продолжить, войдите в Azure.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Отсутствует необходимый контекст Azure. Убедитесь, что вы вошли в систему и кластер связан с действующей подпиской, группой ресурсов и клиентом.", + "Failed to load Azure context": "Не удалось загрузить контекст Azure", + "just now": "только что", + "{{seconds}}s ago": "{{seconds}} сек. назад", + "{{minutes}} min ago": "{{minutes}} мин. назад", + "{{hours}}h ago": "{{hours}} ч назад", + "{{days}}d ago": "{{days}}\u00a0дн. назад", + "{{weeks}}w ago": "{{weeks}} нед. назад" } diff --git a/plugins/aks-desktop/locales/sv/translation.json b/plugins/aks-desktop/locales/sv/translation.json index 6239d56c2..72913693a 100644 --- a/plugins/aks-desktop/locales/sv/translation.json +++ b/plugins/aks-desktop/locales/sv/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "AKS-klusteranvändarroll begränsas till resursgruppen", - "(already enabled)": "(redan aktiverat)", + "Failed to load subscriptions": "Det gick inte att läsa in prenumerationer", + "Failed to load AKS clusters": "Det gick inte att läsa in AKS-kluster", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "Klustret {{cluster}} har sammanslagits i kubeconfig", + "Failed to register cluster: {{message}}": "Det gick inte att registrera klustret: {{message}}", + "Register AKS Cluster": "Registrera AKS-kluster", + "Checking authentication status": "Kontrollerar autentiseringsstatus", + "You need to be logged in to Azure to register AKS clusters.": "Du måste vara inloggad i Azure för att registrera AKS-kluster.", + "Subscription": "Prenumeration", + "Select an Azure subscription": "Välj en Azure-prenumeration", + "Loading subscriptions": "Läser in prenumerationer", + "Loading AKS clusters": "Läser in AKS-kluster", + "No AKS clusters found in this subscription.": "Inga AKS-kluster hittades i den här prenumerationen.", + "AKS Cluster": "AKS-kluster", + "Select an AKS cluster": "Välj ett AKS-kluster", + "Selected Cluster Details": "Information om valt kluster", + "Name": "Namn", + "Resource Group": "Resursgrupp", + "Location": "Plats", + "Kubernetes Version": "Kubernetes-version", + "Done": "Klart", + "Cancel": "Avbryt", + "Registering": "Registrering", + "Register Cluster": "Registrera kluster", + "Initiating Azure login": "Initierar Azure-inloggning", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Slutför autentiseringen i webbläsaren. Det här fönstret omdirigeras automatiskt när inloggningen är klar.", + "Login successful! Redirecting": "Inloggningen lyckades! Omdirigering", + "Login timeout. Please try again.": "Inloggningstiden gick ut. Försök igen.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Väntar på att inloggningen ska slutföras... ({{minutes}} minuter kvar)", + "Failed to initiate login: {{message}}": "Det gick inte att initiera inloggning: {{message}}", + "Azure Authentication": "Azure-autentisering", + "Sign in with your Azure account to manage AKS clusters and resources": "Logga in med ditt Azure-konto för att hantera AKS-kluster och resurser", + "Sign in with Azure": "Logga in med Azure", + "Loading Azure account information": "Läser in Azure-kontoinformation", + "Back": "Tillbaka", + "Azure Account": "Azure-konto", + "Logged in as": "Inloggad som", + "Add Cluster from Azure": "Lägg till kluster från Azure", + "Logging out": "Loggar ut", + "Log out": "Logga ut", + "Azure CLI/aks-preview requirements not met": "Kraven för Azure CLI/aks-preview har inte uppfyllts", + "Dismiss": "Ignorera", + "Configure Pipeline": "Konfigurera pipeline", + "Loading Azure context...": "Läser in Azure-sammanhang...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Skrivskyddad åtkomst till de flesta objekt i en namnrymd. Kan inte visa roller, rollbindningar eller hemligheter.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Läs- och skrivåtkomst till de flesta objekt i en namnrymd. Kan inte visa eller ändra roller eller rollbindningar. Kan komma åt hemligheter och köra poddar som vilken ServiceAccount som helst i namnrymden.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Läs- och skrivåtkomst till de flesta resurser i en namnrymd. Kan skapa roller och rollbindningar inom namnrymden. Kan inte skriva till resurskvot eller själva namnrymden.", + "Access": "Åtkomst", + "Assign permissions to users who need access to your namespace": "Ge behörighet till de användare som behöver åtkomst till din namnrymd", + "Assignee": "Tilldelad person", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Roll", + "Remove assignee": "Ta bort tilldelad person", + "Add assignee": "Lägg till tilldelad person", + "Only clusters with Azure Entra ID authentication are shown.": "Endast kluster med Azure Entra ID-autentisering visas.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} kluster är dolda – inga Azure Entra ID", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} kluster är dolda – inga Azure Entra ID", + "No eligible clusters found in this subscription.": "Inga behöriga kluster hittades i den här prenumerationen.", "{{count}} eligible cluster(s) found._one": "{{count}} berättigade kluster hittades.", "{{count}} eligible cluster(s) found._other": "{{count}} berättigade kluster hittades.", - "{{count}} failed._one": "{{count}} misslyckades.", - "{{count}} failed._other": "{{count}} misslyckades.", - "{{count}} min_one": "{{count}} minut", - "{{count}} min_other": "{{count}} minut", - "{{count}} selected_one": "{{count}} har valts", - "{{count}} selected_other": "{{count}} har valts", - "{{days}}d ago": "{{days}} d sedan", - "{{hours}}h ago": "{{hours}}tim sedan", - "{{minutes}} min ago": "{{minutes}} min sedan", - "{{seconds}}s ago": "{{seconds}}s sedan", - "{{weeks}}w ago": "{{weeks}} v sedan", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Ett kluster måste väljas", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Ett nytt namnområde skapas i klustret med projektetiketter tillämpade. Den visas direkt i projektlistan.", - "Absolute usage": "Absolut användning", - "Access": "Åtkomst", - "Access Control ({{count}} assignee)_one": "Åtkomstkontroll ({{count}} tilldelad person)", - "Access Control ({{count}} assignee)_other": "Access Control ({{count}} tilldelade)", - "Actions": "Åtgärder", - "Add assignee": "Lägg till tilldelad person", - "Add Cluster from Azure": "Lägg till kluster från Azure", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Lägg till ett eller flera Kubernetes-manifest. Ladda upp filer för att fylla i redigeraren eller klistra in/redigera direkt nedan.", - "Add variable": "Lägg till variabel", - "Advanced": "Avancerat", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Efter sammanslagning analyserar Copilot-agenten din lagringsplats och skapar en pull-begäran för distribution", - "Agent is working": "Agenten fungerar", - "AKS Cluster": "AKS-kluster", - "AKS desktop logo": "AKS Desktop-logotyp", - "AKS Managed": "AKS-hanterad", - "AKS Preview Extension installed successfully!": "AKS Preview-tillägget har installerats!", - "AKS Preview Extension Required": "AKS Preview-tillägg krävs", - "AKS Project?": "AKS-projekt?", - "All selected addons have been enabled successfully.": "Alla valda tillägg har aktiverats.", - "All verifications completed successfully!": "Alla verifieringar har slutförts!", - "Allow all traffic": "Tillåt all trafik", - "Allow privilege escalation": "Tillåt privilegieeskalering", - "Allow traffic within same namespace": "Tillåt trafik inom samma namnområde", - "Already AKS projects (will import directly):": "Redan AKS-projekt (importeras direkt):", - "Also delete the namespaces (this will remove all resources within them)": "Ta även bort namnrymderna (det här tar bort alla resurser inom dem)", - "Another project already exists with same name. Please choose a different name.": "Det finns redan ett projekt med samma namn. Välj ett annat namn.", - "Application Health": "Programhälsa", - "Application Metrics": "Programmätvärden", - "Application name": "Programnamn", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} resurser tillämpades, men {{failed}} misslyckades:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "Resursen {{count}} har tillämpats.", - "Applied {{count}} resource(s) successfully._other": "Resursen {{count}} har tillämpats.", - "Are you sure you want to delete project \"{{projectId}}\"?": "Vill du ta bort projektet {{projectId}}?", - "Assign permissions to users who need access to your namespace": "Ge behörighet till de användare som behöver åtkomst till din namnrymd", - "Assignee": "Tilldelad person", - "Assigning AKS Cluster User Role...": "Tilldelar AKS-klusteranvändarroll...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "Ge AKS Desktop rätt att skapa distributionskanaler på din lagringsplats.", - "Auto-generated Deployment and Service manifests": "Automatiskt genererade distributions- och tjänstmanifest", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Skalar automatiskt antalet poddar baserat på CPU-användning. HPA ökar antalet poddar när CPU-användningen överstiger målet, och minskar när användningen är under.", - "Available Replicas": "Tillgängliga repliker", - "Avg Response Time": "Genomsnittlig svarstid", - "Azure Account": "Azure-konto", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Azure-autentisering", - "Azure CLI/aks-preview requirements not met": "Kraven för Azure CLI/aks-preview har inte uppfyllts", - "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor-mått (hanterad Prometheus)", - "Back": "Tillbaka", - "Basics": "Grundläggande information", - "branch": "gren", - "Bring your own Kubernetes manifests to deploy": "Ta med dina egna Kubernetes-manifest som ska distribueras", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Avsökningar använder som standard HTTP GET på rotsökvägen med förvalda inställningar. Aktivera det här för att anpassa avsökningsinställningarna.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Som standard matchar tjänstporten målporten. Aktivera det här om du vill använda en annan port för tjänsten.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Som standard tas Azure-hanterade namnrymden och projektetiketterna bort från följande namnrymder:", - "Cancel": "Avbryt", - "Canceling will discard your pipeline progress. Are you sure?": "Om du avbryter tas pipeline-förloppet bort. Är du säker?", - "Cancelled deletion of project {{ projectId }}.": "Borttagning av projektet {{ projectId }} har avbrutits.", - "Checking authentication status": "Kontrollerar autentiseringsstatus", - "Checking for existing identity...": "Söker efter befintlig identitet...", - "Checking if another project exists with same name": "Kontrollerar om ett det finns ett annat projekt med samma namn", - "Checking merge status...": "Kontrollerar sammanslagningsstatus...", - "Checking repository readiness...": "Kontrollerar lagringsplatsens beredskap...", - "Checking...": "Kontrollerar...", - "Choose a source for your deployment (container image, repo, etc.).": "Välj en källa för distributionen (containeravbildning, lagringsplats och så vidare.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "CI/CD-pipelinen för {{repoFullName}} är klar. Starta distributioner från fliken Distribuera.", - "Clear editor": "Rensa redigeraren", - "Close": "Stäng", - "Cluster": "Kluster", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "Klustret {{cluster}} har sammanslagits i kubeconfig", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Klustret {{clusterName}} måste registreras innan du importerar vanliga namnområden. Importera först ett hanterat namnområde från det här klustret.", - "Cluster Configuration": "Klusterkonfiguration", - "Cluster is being deleted. Cannot deploy to this cluster.": "Klustret håller på att tas bort. Det går inte att distribuera till det här klustret.", "Cluster is currently updating. Deployment may fail.": "Klustret uppdateras just nu. Det kanske inte går att distribuera.", - "Cluster is deallocated. Please start the cluster before deploying.": "Klustret har frigjorts. Starta klustret innan du distribuerar.", - "Cluster is in a failed state. Please check Azure portal.": "Klustret är i feltillstånd. Se efter på Azure Portal.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Klustret håller på att tas bort. Det går inte att distribuera till det här klustret.", "Cluster is still being created. Please wait until creation completes.": "Klustret håller fortfarande på att skapas. Vänta tills det är klart.", + "Cluster is in a failed state. Please check Azure portal.": "Klustret är i feltillstånd. Se efter på Azure Portal.", "Cluster is stopped. Please start the cluster before deploying.": "Klustret har stoppats. Starta klustret innan du distribuerar.", + "Cluster is deallocated. Please start the cluster before deploying.": "Klustret har frigjorts. Starta klustret innan du distribuerar.", + "AKS Preview Extension Required": "AKS Preview-tillägg krävs", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Tillägget aks-preview krävs för att skapa hanterade namnrymder. Installera det om du vill fortsätta.", + "Installing": "Installerar", + "Install Extension": "Installera tillägg", + "AKS Preview Extension installed successfully!": "AKS Preview-tillägget har installerats!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Funktionen ManagedNamespacePreview måste registreras för att kunna skapa hanterade namnrymder.", + "Current state": "Nuvarande tillstånd", + "Please register it to continue.": "Registrera det om du vill fortsätta.", + "Register ManagedNamespacePreview Feature": "Registrera funktionen ManagedNamespacePreview", + "ManagedNamespacePreview feature registered successfully!": "Funktionen ManagedNamespacePreview har registrerats!", + "Project Name": "Projektnamn", + "Checking if another project exists with same name": "Kontrollerar om ett det finns ett annat projekt med samma namn", + "Another project already exists with same name. Please choose a different name.": "Det finns redan ett projekt med samma namn. Välj ett annat namn.", + "Project name is available": "Projektnamn är tillgängligt", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Projektnamnet får bara innehålla gemener, siffror och bindestreck (inga blanksteg)", + "Project Description": "Projektbeskrivning", + "Enter project description": "Redigera projektbeskrivning", + "Select a subscription": "Välj en prenumeration", + "Search subscriptions": "Sök efter prenumerationer", + "No subscriptions found": "Inga prenumerationer hittades", + "Retry": "Försök igen", + "Cluster": "Kluster", + "Please select a subscription first": "Välj en prenumeration först", + "Loading clusters": "Läser in kluster", + "Select a cluster": "Välj ett kluster", + "Search clusters": "Sök kluster", + "No clusters with Azure Entra ID authentication found for this subscription": "Inga kluster med Azure Entra ID-autentisering hittades för den här prenumerationen", "Cluster Not Ready": "Klustret är inte klart", - "Collapse panel": "Dölj panel", - "Complete authorization on your browser screen": "Slutför auktoriseringen på webbläsarskärmen", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Slutför installationen i webbläsaren. Det här uppdateras automatiskt när appen har installerats på {{repoName}}.", - "Compute Quota": "Beräkningskvot", - "Configuration Complete": "Konfigurationen har slutförts", - "Configuration Error": "Konfigurationsfel", + "Refreshing": "Uppdaterar", + "Refresh": "Uppdatera", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Det valda klustret saknas i kubeconfig. Registrera det innan du fortsätter.", + "Registering cluster": "Registrerar kluster", + "Wizard steps": "Guidesteg", + "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor-mått (hanterad Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (händelsestyrd automatisk skalning)", + "VPA (Vertical Pod Autoscaler)": "Vertical Pod Autoscaler-verktyg (VPA)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Konfigurationen tar längre tid än förväntat. På Azure Portal finns information om aktuell status för klustret.", - "Configure": "Konfigurera", - "Configure Cluster": "Konfigurera kluster", - "Configure Container Deployment": "Konfigurera containerdistribution", - "Configure container health probes.": "Konfigurera hälsoavsökningar för container.", - "Configure Pipeline": "Konfigurera pipeline", - "Configure security context settings for the container.": "Konfigurera inställningar för säkerhetssammanhanget för containern.", - "Configure Workload Identity": "Konfigurera arbetsbelastningsidentitet", - "Configured Replicas": "Konfigurerade repliker", + "Failed to enable addons": "Det gick inte att aktivera tillägg", + "Failed to enable addon: {{error}}": "Det gick inte att aktivera tillägg: {{error}}", + "Cluster Configuration": "Klusterkonfiguration", + "(already enabled)": "(redan aktiverat)", + "The following addons can be enabled on this cluster:": "Följande tillägg kan aktiveras på det här klustret:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Nätverkspolicymotorn går inte att ändra efter att klustret skapats. Skapa ett nytt kluster med", + "for full network policy support.": "för fullständigt stöd för nätverkspolicyer.", + "Enabling these addons may incur additional Azure costs.": "Aktivering av de här tilläggen kan medföra ytterligare Azure-kostnader.", + "Configuration Error": "Konfigurationsfel", + "Configuration Complete": "Konfigurationen har slutförts", + "All selected addons have been enabled successfully.": "Alla valda tillägg har aktiverats.", "Configuring cluster... This may take a few minutes.": "Konfigurerar kluster... Det här kan ta några minuter.", - "Configuring federated credential...": "Konfigurerar federerade autentiseringsuppgifter...", + "Enabling Addons...": "Aktiverar tillägg...", "Configuring...": "Konfigurerar...", - "Confirm & Import": "Bekräfta och importera", - "Connect": "Anslut", - "Connect GitHub": "Anslut GitHub", - "Connect Source": "Anslut källa", - "Connect to GitHub": "Anslut till GitHub", - "Connected": "Ansluten", - "Connected to '{{username}}'.": "Ansluten till {{username}}.", - "Connecting to GitHub...": "Ansluter till GitHub...", - "Connecting...": "Ansluter...", - "Container image": "Containeravbildning", - "Container Image": "Containeravbildning", - "Contents": "Innehåll", - "Continue": "Fortsätt", - "Controls whether a process can gain more privileges than its parent process.": "Styr om en process kan få fler privilegier än den överordnade processen.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Styr huruvida en process kan få fler privilegier än den överordnade processen. Om du inaktiverar det här (rekommenderas) förhindras attacker med privilegieeskalering.", - "Convert Namespaces to AKS Projects": "Konvertera namnområden till AKS-projekt", - "Converting": "Omvandlar", - "Converting {{name}} to AKS project (this may take a moment)...": "Konverterar {{name}} till AKS-projekt (det kan ta en stund)...", - "Copied!": "Kopierat!", - "Copilot agent": "Copilot-agent", - "Copilot agent reviewed your repo and generated deployment PR": "Copilot-agenten har granskat din lagringsplats och genererat en pull-begäran för distribution", - "Copy": "Kopiera", - "Copy to clipboard": "Kopiera till Urklipp", - "CPU": "Processor", - "CPU limit": "CPU-gräns", - "CPU Limits": "CPU-gränser", - "CPU request": "CPU-begäran", - "CPU Requests": "CPU-begäranden", + "Configure Cluster": "Konfigurera kluster", + "Compute Quota": "Beräkningskvot", + "Set quota limits to prevent overuse and maintain cluster stability": "Förhindra överanvändning och upprätthåll klusterstabilitet genom att ange kvotgränser", "CPU Resources": "CPU-resurser", - "CPU Usage": "CPU-användning", - "CPU Usage / Target": "CPU-användning/mål", - "Create a new namespace on an existing cluster and set it up as a project": "Skapa ett nytt namnområde i ett befintligt kluster och konfigurera det som ett projekt", - "Create Application": "Skapa program", - "Create deployment PRs": "Skapa pull-begäranden för distribution", - "Create Namespace": "Skapa namnrymd", - "Create New Namespace": "Skapa nytt namnområde", + "CPU Requests": "CPU-begäranden", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minsta antal garanterade CPU:er (1\u00a0000\u00a0m = 1 CPU-kärna)", + "CPU Limits": "CPU-gränser", + "Maximum CPU allowed (1000m = 1 CPU core)": "Maximal tillåten CPU (1\u00a0000\u00a0m = 1 CPU-kärna)", + "Memory Resources": "Minnesresurser", + "Memory Requests": "Minnesbegäranden", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minsta garanterade minne (1\u00a0024 MiB = 1\u00a0GiB)", + "Memory Limits": "Minnesgränser", + "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximalt tillåtet minne (1\u00a0024 MiB = 1\u00a0GiB)", + "Basics": "Grundläggande information", + "Networking Policies": "Nätverksprinciper", + "Review": "Granskning", + "New Project": "Nytt projekt", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Ställ in och konfigurera ett nytt projekt i Azure Kubernetes Service (AKS)", + "Creating Project": "Skapar projekt", "Create Project": "Skapa projekt", - "Create Setup PR": "Skapa pull-begäran för installation", - "Create setup workflow in .github/workflows/": "Skapa installationsarbetsflöde i .github/workflows/", - "Creates a LoadBalancer to expose the application to the internet.": "Skapar en LoadBalancer som exponerar programmet mot Internet.", - "Creating managed identity...": "Skapar hanterad identitet...", + "Loading": "Läser in", + "Next": "Nästa", + "Project Created Successfully!": "Projekt har skapats!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Ditt AKS-projekt {{projectName}} har skapats och är redo att användas.", + "Application name": "Programnamn", + "Enter application name": "Ange programnamn", + "Enter a name for your first application to get started with deployment.": "Ange ett namn för ditt första program för att komma igång med distributionen.", + "Create Application": "Skapa program", + "Project Creation Failed": "Det gick inte att skapa något projekt", + "Set security, communication and access rules for incoming and outgoing traffic": "Ange säkerhets-, kommunikations- och åtkomstregler för inkommande och utgående trafik", + "Allow traffic within same namespace": "Tillåt trafik inom samma namnområde", + "Allow all traffic": "Tillåt all trafik", + "Deny all traffic": "Neka all trafik", + "Review Project Configuration": "Granska projektkonfiguration", + "Please review all the settings before creating your AKS project": "Granska alla inställningar innan du skapar AKS-projektet", + "Project Basics": "Grundläggande information om projektet", + "Description": "Beskrivning", + "No description provided": "Ingen beskrivning har angetts", + "Ingress Policy": "Inkommande-princip", + "Egress Policy": "Utgående princip", + "CPU": "Processor", + "Requests": "Begäranden", + "Limits": "Gränser", + "Memory": "Minne", + "Access Control ({{count}} assignee)_one": "Åtkomstkontroll ({{count}} tilldelad person)", + "Access Control ({{count}} assignee)_other": "Access Control ({{count}} tilldelade)", + "Not specified": "Inte angivet", + "Select an option": "Välj ett alternativ", + "No options": "Inga alternativ", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Börjar skapa projekt", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Tidsgränsen för att skapa projekt nåddes efter 10 minuter. Kontrollera om namnrymden har skapats och försök igen.", + "Initiating managed namespace creation": "Initierar skapande av hanterad namnrymd", + "Namespace creation failed: {{message}}": "Det gick inte att skapa namnrymd: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Namnrymd har börjat skapas! Status för övervakning av skapande", + "Waiting for namespace to propagate": "Väntar på att namnrymden ska spridas", + "Namespace status check failed: {{message}}": "Det gick inte att kontrollera namnrymdens status: {{message}}", + "Waiting for namespace to be created": "Väntar på att namnrymden ska skapas", + "Namespace status verification failed: {{message}}": "Det gick inte att verifiera status för namnområde: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "API:et för att skapa namnrymd lyckades, fortsätter med användartilldelningar", + "Namespace creation completed successfully! Adding user access": "Namnrymden har skapats! Lägger till användaråtkomst", + "User assignment completed with errors": "Användartilldelningen har slutförts med fel", + "Project creation completed successfully!": "Projektet har skapats!", + "Performing final status verification": "Slutlig statuskontroll utförs", + "Final status check failed: {{message}}": "Kontroll av slutlig statuskontroll underkändes: {{message}}", + "Final status verification failed: {{message}}": "Det gick inte att verifiera slutlig status: {{message}}", + "All verifications completed successfully!": "Alla verifieringar har slutförts!", + "Failed to create project": "Det gick inte att skapa projekt", + "A cluster must be selected": "Ett kluster måste väljas", + "Namespace name is required": "Namnområdesnamn måste anges", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Namnområdesnamnet får bara innehålla gemener, siffror och bindestreck och måste börja och sluta med ett alfanumeriskt tecken", + "Namespace name must be 63 characters or fewer": "Namnområdesnamnet får innehålla högst 63 tecken", "Creating namespace": "Namnområden skapas", + "Updating local settings": "Uppdaterar lokala inställningar", + "Namespace created successfully!": "Namnområdet har skapats!", + "Failed to create namespace": "Det gick inte att skapa namnområden", + "No clusters found. Register a cluster first.": "Inga kluster hittades. Registrera ett kluster först.", + "Namespace Name": "Namn på namnområde", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Får bara innehålla gemener, siffror och bindestreck, som börjar och slutar med ett alfanumeriskt tecken", + "The namespace will be created on the selected cluster and set up as a project": "Namnområdet skapas i det valda klustret och konfigureras som ett projekt", + "Type": "Typ", + "Regular Kubernetes namespace": "Vanligt Kubernetes-namnområde", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Ett nytt namnområde skapas i klustret med projektetiketter tillämpade. Den visas direkt i projektlistan.", + "Create New Namespace": "Skapa nytt namnområde", + "Create a new namespace on an existing cluster and set it up as a project": "Skapa ett nytt namnområde i ett befintligt kluster och konfigurera det som ett projekt", "Creating Namespace": "Skapar namnområde", - "Creating Project": "Skapar projekt", - "Creating setup PR...": "Skapar pull-begäran för konfiguration...", - "Creating the trigger issue for the Copilot coding agent.": "Skapar utlösarproblemet för Copilot-kodningsagenten.", - "Current Replicas": "Nuvarande repliker", - "Current state": "Nuvarande tillstånd", - "Degraded": "Degraderad", + "Namespace Creation Failed": "Det gick inte att skapa namnområde", + "Namespace Created Successfully!": "Namnområdet har skapats!", + "Your project \"{{projectName}}\" is ready to use.": "Projektet \"{{projectName}}\" är klart att använda.", + "Go To Projects": "Gå till projekt", + "Create Namespace": "Skapa namnrymd", "Delete project": "Ta bort projekt", "Delete Project": "Ta bort projekt", + "Are you sure you want to delete project \"{{projectId}}\"?": "Vill du ta bort projektet {{projectId}}?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Som standard tas Azure-hanterade namnrymden och projektetiketterna bort från följande namnrymder:", + "Also delete the namespaces (this will remove all resources within them)": "Ta även bort namnrymderna (det här tar bort alla resurser inom dem)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Varning: det går inte att ångra den här åtgärden. Alla resurser i de här namnrymderna tas bort permanent.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Obs! För AKS-hanterade namnområden tas Azure ARM-hantering bort automatiskt.", "Delete Project & Namespaces": "Ta bort projekt och namnrymder", - "Deleted project {{ projectId }}.": "Projektet {{ projectId }} har tagits bort.", "Deleting project {{ projectId }}…": "Tar bort projekt {{ projectId }}…", - "Deny all traffic": "Neka all trafik", - "Deploy": "Distribuera", - "Deploy {{repo}}": "Distribuera {{repo}}", - "Deploy an application to start viewing metrics.": "Distribuera ett program om du vill börja visa mått.", - "Deploy an application to view logs.": "Distribuera ett program för att visa loggar.", + "Cancelled deletion of project {{ projectId }}.": "Borttagning av projektet {{ projectId }} har avbrutits.", + "Deleted project {{ projectId }}.": "Projektet {{ projectId }} har tagits bort.", + "Error deleting project {{ projectId }}.": "Fel vid borttagning av projekt {{ projectId }}.", "Deploy Application": "Distribuera program", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Distribuera från Azure Container Registry, Docker Hub eller GHCR", + "Failed to load pipeline runs": "Det gick inte att läsa in pipelinekörningar", + "Pipeline": "Pipeline", + "Set up your pipeline": "Konfigurera din pipeline", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Konfigurera en CI/CD-pipeline för att automatisera distributioner och effektivisera arbetsflödet", + "Waiting for browser authorization...": "Väntar på webbläsarautentisering...", + "Sign in to GitHub to view pipeline runs.": "Logga in på GitHub för att visa pipelinekörningar.", + "Connecting...": "Ansluter...", + "No pipeline runs yet.": "Inga pipeline-körningar ännu.", + "View on GitHub": "Visa på GitHub", + "View run on GitHub": "Visa körning på GitHub", + "Healthy": "Felfri", + "Scaled down": "Skalades ned", + "Degraded": "Degraderad", + "VS Code": "VS-kod", + "Manual": "Manuell", + "Manual Deploy": "Manuell distribution", + "Deploy {{repo}}": "Distribuera {{repo}}", "Deploy via Pipeline": "Distribuera via pipeline", - "Deploying": "Distribuerar", + "No deployments found in this namespace.": "Inga distributioner hittades i den här namnrymden.", "Deployment": "Distribution", - "Deployment PR": "Pull-begäran för distribution", - "Deployment PR Ready": "Pull-begäran för distribution är redo", - "Deployment PR reviewed and merged": "Pull-begäran för distribution har granskats och slogs ihop", - "Deployment source": "Distributionskälla", - "Description": "Beskrivning", - "Deselect All": "Avmarkera alla", - "Desired Replicas": "Önskade repliker", - "Discard": "Ta bort", - "Dismiss": "Ignorera", - "Distributes pods evenly across nodes to improve workload distribution.": "Distribuerar poddar jämnt fördelat över noder för att förbättra arbetsbelastningens fördelning.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribuerar poddar jämnt över noder, zoner eller andra topologidomäner för att förbättra arbetsbelastningsfördelning och tillgänglighet.", - "Done": "Klart", - "Edit Configuration": "Redigera konfiguration", + "Source": "Källa", + "Replicas": "Repliker", + "Ready": "Klart", + "Status": "Status", + "Actions": "Åtgärder", "Edit deployment": "Redigera distribution", - "Edit HPA Configuration": "Redigera HPA-konfiguration", - "Edit Manual Scaling Configuration": "Redigera konfiguration av manuell skalning", - "Egress Policy": "Utgående princip", + "View workflow run": "Visa arbetsflödeskörning", + "Re-deploy": "Distribuera på nytt", + "Failed to trigger deployment": "Det gick inte att utlösa distributionen", + "Trigger": "Utlösare", + "workflow on": "arbetsflöde på", + "with the following parameters:": "med följande parametrar:", + "Namespace": "Namnområde", + "Sign in": "Logga in", + "GitHub authentication required to trigger deployment.": "GitHub-autentisering krävs för att utlösa distribution.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Arbetsflöde har utlösts. Se förloppet i GitHub Actions.", + "Close": "Stäng", + "Triggering...": "Utlöser...", + "Deploy": "Distribuera", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "Aktivera GitHub-pipeliner i Inställningar → Förhandsgranskningsfunktioner för att använda pipeline-distributioner.", - "Enable GitHub-based deployment pipelines for AKS projects.": "Aktivera GitHub-baserade distributionspipelines för AKS-projekt.", - "Enable Horizontal Pod Autoscaler": "Aktivera Horizontal Pod Autoscaler-verktyg (HPA)", - "Enable liveness probe": "Aktivera liveavsökning", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Aktivera eller inaktivera funktioner som fortfarande är under utveckling. Förhandsgranskningsfunktioner kan ändras eller tas bort i framtida versioner.", - "Enable pod anti-affinity": "Aktivera podd-anti-tillhörighet", - "Enable public access": "Aktivera offentlig åtkomst", - "Enable readiness probe": "Aktivera beredskapsavsökning", - "Enable resource requests and limits": "Aktivera resursbegäranden och gränser", - "Enable startup probe": "Aktivera startavsökningar", - "Enable topology spread constraints": "Aktivera begränsningar för topologispridning", - "Enabling Addons...": "Aktiverar tillägg...", - "Enabling these addons may incur additional Azure costs.": "Aktivering av de här tilläggen kan medföra ytterligare Azure-kostnader.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Se till att minsta antal repliker ≤ max antal repliker och att mål-CPU är mellan 10 % och 95 %.", + "Workloads": "Arbetsbelastningar", + "No clusters in this project.": "Inga kluster i det här projektet.", + "Failed to fetch deployments": "Det gick inte att hämta distributioner", + "Failed to fetch cluster status": "Det gick inte att hämta klusterstatus", + "Configure security context settings for the container.": "Konfigurera inställningar för säkerhetssammanhanget för containern.", + "Run as non root user": "Kör som icke-rotanvändare", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Säkerställer att containern körs som icke-rotanvändare (UID != 0) för bättre säkerhet. Det här förhindrar attacker som utnyttjar privilegieeskalering.", "Ensures the container runs as a non-root user for better security.": "Säkerställer att containern körs som icke-rotanvändare för bättre säkerhet.", - "Ensuring resource group exists...": "Säkrar att resursgruppen finns...", - "Enter a name for your first application to get started with deployment.": "Ange ett namn för ditt första program för att komma igång med distributionen.", - "Enter application name": "Ange programnamn", - "Enter project description": "Redigera projektbeskrivning", + "Read only root filesystem": "Skrivskyddat rotfilsystem", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monterar containerns rotfilsystem som skrivskyddat för att förhindra skrivåtgärder. Det här ökar säkerheten genom att förhindra att skadlig kod ändrar systemfiler.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Monterar containerns rotfilsystem som skrivskyddat för att förhindra skrivåtgärder.", + "Allow privilege escalation": "Tillåt privilegieeskalering", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Styr huruvida en process kan få fler privilegier än den överordnade processen. Om du inaktiverar det här (rekommenderas) förhindras attacker med privilegieeskalering.", + "Controls whether a process can gain more privileges than its parent process.": "Styr om en process kan få fler privilegier än den överordnade processen.", + "Enable pod anti-affinity": "Aktivera podd-anti-tillhörighet", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Prioritera schemaläggning av poddar på olika noder för att förbättra tillgänglighet och feltolerans. På så vis kan poddar fördelas över hela klustret.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prioritera schemaläggning av poddar på olika noder för att förbättra tillgänglighet och feltolerans.", + "Enable topology spread constraints": "Aktivera begränsningar för topologispridning", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Distribuerar poddar jämnt över noder, zoner eller andra topologidomäner för att förbättra arbetsbelastningsfördelning och tillgänglighet.", + "Distributes pods evenly across nodes to improve workload distribution.": "Distribuerar poddar jämnt fördelat över noder för att förbättra arbetsbelastningens fördelning.", + "Container image": "Containeravbildning", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Antalet podrepliker som ska köras. Fler repliker ger bättre tillgänglighet och belastningsfördelning.", + "Continue": "Fortsätt", + "Configure Container Deployment": "Konfigurera containerdistribution", + "Networking": "Nätverk", + "Healthchecks": "Hälsokontroller", + "Resource Limits": "Resursgränser", "Environment Variables": "Miljövariabler", - "Error deleting project {{ projectId }}.": "Fel vid borttagning av projekt {{ projectId }}.", - "Error Rate": "Felfrekvens", - "Failed to apply": "Det gick inte att tillämpa", - "Failed to apply resources.": "Det gick inte att tillämpa resurser.", - "Failed to convert namespace: {{message}}": "Det gick inte att konvertera namnområdet: {{message}}", - "Failed to create namespace": "Det gick inte att skapa namnområden", - "Failed to create project": "Det gick inte att skapa projekt", - "Failed to enable addon: {{error}}": "Det gick inte att aktivera tillägg: {{error}}", - "Failed to enable addons": "Det gick inte att aktivera tillägg", - "Failed to fetch cluster status": "Det gick inte att hämta klusterstatus", - "Failed to fetch deployment status": "Det gick inte att hämta distributionsstatus", - "Failed to fetch deployments": "Det gick inte att hämta distributioner", - "Failed to fetch managed namespace details": "Det gick inte att hämta information om hanterad namnrymd", - "Failed to fetch managed namespaces": "Det gick inte att hämta hantera namnrymder", - "Failed to fetch pod status": "Det gick inte att hämta podstatus", - "Failed to fetch service status": "Det gick inte att hämta tjänststatus", - "Failed to import any projects. See details below.": "Det gick inte att importera några projekt. Läs informationen nedan.", - "Failed to initiate login: {{message}}": "Det gick inte att initiera inloggning: {{message}}", - "Failed to load AKS clusters": "Det gick inte att läsa in AKS-kluster", - "Failed to load Azure context": "Det gick inte att läsa in Azure-sammanhang", - "Failed to load pipeline runs": "Det gick inte att läsa in pipelinekörningar", - "Failed to load repositories": "Det gick inte att läsa in lagringsplatser", - "Failed to load subscriptions": "Det gick inte att läsa in prenumerationer", - "Failed to merge cluster: {{message}}": "Det gick inte att sammanslå klustret: {{message}}", - "Failed to monitor deployment health": "Det gick inte att övervaka distributionens hälsa", - "Failed to register cluster: {{message}}": "Det gick inte att registrera klustret: {{message}}", - "Failed to trigger deployment": "Det gick inte att utlösa distributionen", - "Failed to update managed namespace": "Det gick inte att uppdatera hanterad namnrymd", - "failureThreshold": "failureThreshold", - "Features": "Funktioner", - "Federated Credential": "Federerad autentiseringsuppgift", - "Filter repositories": "Filtrera lagringsplatser", - "Final status check failed: {{message}}": "Kontroll av slutlig statuskontroll underkändes: {{message}}", - "Final status verification failed: {{message}}": "Det gick inte att verifiera slutlig status: {{message}}", - "for full network policy support.": "för fullständigt stöd för nätverkspolicyer.", + "Workload Identity": "", + "Advanced": "Avancerat", + "Information about {{label}}": "Information om {{label}}", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Lägg till ett eller flera Kubernetes-manifest. Ladda upp filer för att fylla i redigeraren eller klistra in/redigera direkt nedan.", + "Upload files": "Ladda upp filer", + "Clear editor": "Rensa redigeraren", + "Review & Deploy": "Granska och distribuera", "Generated Kubernetes manifests (namespace: {{namespace}})": "Genererade Kubernetes-manifest (namnrymd: {{namespace}})", - "GitHub authentication required to trigger deployment.": "GitHub-autentisering krävs för att utlösa distribution.", - "GitHub Pipelines": "GitHub-pipeliner", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Gå till projekt", - "Guided configuration for ports, replicas, env, and resources": "Guidad konfiguration för portar, repliker, miljöer och resurser", - "Healthchecks": "Hälsokontroller", - "Healthy": "Felfri", + "Resources to be deployed ({{count}} object)_one": "Resurser som ska distribueras ({{count}} objekt)", + "Resources to be deployed ({{count}} object)_other": "Resurser som ska distribueras ({{count}} objekt)", + "namespace: {{namespace}}": "namnrymd: {{namespace}}", + "Configure": "Konfigurera", + "Deploying": "Distribuerar", + "Key": "Nyckel", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Värde", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "ta bort", + "Add variable": "Lägg till variabel", + "Configure container health probes.": "Konfigurera hälsoavsökningar för container.", + "Manually configure settings": "Konfigurera inställningar manuellt", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Avsökningar använder som standard HTTP GET på rotsökvägen med förvalda inställningar. Aktivera det här för att anpassa avsökningsinställningarna.", + "Enable liveness probe": "Aktivera liveavsökning", + "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes startar om containern om den underkänns i kontrollen upprepade gånger. Används för upptäckt och återhämtning vid deadlock eller containrar som inte svarar.", + "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes startar om containern om den underkänns i kontrollen upprepade gånger.", + "Liveness path": "Liveness-sökväg", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "HTTP-sökvägen för att kontrollera om tjänsten är live (t.ex. /healthz). Avsökningen skickar en HTTP GET-begäran till den här sökvägen.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Antal sekunder efter att containern har startat innan liveavsökningar initieras.", + "periodSeconds": "periodSeconds", "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Hur ofta (i sekunder) som liveavsökningen ska utföras. Standardvärdet är 10 sekunder.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Hur ofta (i sekunder) som beredskapsavsökningen ska utföras. Standardvärdet är 10 sekunder.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Hur ofta (i sekunder) startavsökningen ska utföras. Standardvärdet är 10 sekunder.", - "HPA scales pods based on CPU utilization.": "HPA skalar poddar baserat på CPU-användning.", - "Identity Resource Group": "Resursgrupp för användaridentitet", - "Import AKS Projects": "Importera AKS-projekt", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importera befintliga hanterade namnområden och vanliga namnområden som projekt. Namnområden som ännu inte är AKS Desktop-projekt konverteras genom att den obligatoriska projektetiketten läggs till.", - "Import Selected Projects": "Importera valda projekt", - "Importing": "Importerar", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importerar {{current}} av {{total}}: {{name}} från {{clusterName}}", - "in resource group": "i resursgruppen", - "Information about {{label}}": "Information om {{label}}", - "Information about CPU limit": "Information om CPU-gräns", - "Information about CPU request": "Information om CPU-begäran", - "Information about memory limit": "Information om minnesgräns", - "Information about memory request": "Information om minnesbegäran", - "Information about target CPU utilization": "Information om mål-CPU-användning", - "Ingress Policy": "Inkommande-princip", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Initierar...", - "Initiating Azure login": "Initierar Azure-inloggning", - "Initiating managed namespace creation": "Initierar skapande av hanterad namnrymd", - "Install Extension": "Installera tillägg", - "Install GitHub App": "Installera GitHub-app", - "Installing": "Installerar", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Antal sekunder tills tidsgränsen för avsökningen har uppnåtts. Standardvärdet är 1 sekund.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "När en avsökning misslyckas försöker Kubernetes så här många gånger innan den ger upp och startar om containern.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minsta antal lyckade avsökningar i följd för att avsökningen ska anses vara felfri efter att den misslyckats. Standardvärdet är 1.", + "Enable readiness probe": "Aktivera beredskapsavsökning", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes skickar inte trafik till podden förrän den har godkänts i kontrollen. Används för att visa när en container är redo att ta emot trafik.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes skickar inte trafik till podden förrän den har godkänts i kontrollen.", + "Readiness path": "Beredskapssökväg", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "HTTP-sökvägen för att kontrollera beredskap (t.ex. /ready). Avsökningen skickar en HTTP GET-begäran till den här sökvägen.", + "Number of seconds after the container has started before readiness probes are initiated.": "Antal sekunder efter att containern har startat innan beredskapsavsökningar initieras.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Hur ofta (i sekunder) som beredskapsavsökningen ska utföras. Standardvärdet är 10 sekunder.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "När en avsökning misslyckas försöker Kubernetes så här många gånger innan podden markeras som inte redo.", + "Enable startup probe": "Aktivera startavsökningar", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes inaktiverar tillfälligt live/beredskap tills starten kan genomföras. Användbart för containrar som tar lång tid att starta.", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes inaktiverar tillfälligt live/beredskap tills starten kan genomföras.", + "Startup path": "Startsökväg", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "HTTP-sökvägen för att kontrollera start (t.ex. /startup). Avsökningen skickar en HTTP GET-begäran till den här sökvägen.", + "Number of seconds after the container has started before startup probes are initiated.": "Antal sekunder efter att containern har startat innan startavsökningar initieras.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Hur ofta (i sekunder) startavsökningen ska utföras. Standardvärdet är 10 sekunder.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "När en avsökning misslyckas försöker Kubernetes så här många gånger innan den ger upp. För startavsökningar avgör det här hur länge den väntar innan omstart.", + "Enable Horizontal Pod Autoscaler": "Aktivera Horizontal Pod Autoscaler-verktyg (HPA)", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "Skalar automatiskt antalet poddar baserat på CPU-användning. HPA ökar antalet poddar när CPU-användningen överstiger målet, och minskar när användningen är under.", + "HPA scales pods based on CPU utilization.": "HPA skalar poddar baserat på CPU-användning.", + "Min replicas": "Minsta antal repliker", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Det minsta antalet podrepliker som HPA behåller, även när CPU-användningen är låg.", + "Max replicas": "Maximalt antal repliker", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Maximalt antal podrepliker som HPA kan skala upp till när CPU-användningen är hög.", + "Target CPU utilization": "CPU-användning för mål", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Målet för genomsnittlig CPU-användning i procent för alla poddar. HPA (Horizontal Pod Autoscaler) skalar upp när CPU-användningen överstiger det här värdet och skalar ner när den är under.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Se till att minsta antal repliker ≤ max antal repliker och att mål-CPU är mellan 10\u00a0% och 95\u00a0%.", + "Target port": "Målport", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Portnumret som containern lyssnar på. Det är porten i containern där ditt program körs.", + "Service port": "Tjänstport", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Portnumret som visas av Kubernetes-tjänsten. Trafik till den här porten vidarebefordras till målporten.", + "Use custom service port": "Använd anpassad tjänstport", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Som standard matchar tjänstporten målporten. Aktivera det här om du vill använda en annan port för tjänsten.", + "Service type": "Typ av tjänst", "Internal only": "Endast internt", - "Invalid YAML": "Ogiltig YAML", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "Använd ClusterIP. Bäst för tjänster som endast är åtkomliga inom klustret.", + "Enable public access": "Aktivera offentlig åtkomst", + "Creates a LoadBalancer to expose the application to the internet.": "Skapar en LoadBalancer som exponerar programmet mot Internet.", + "Enable resource requests and limits": "Aktivera resursbegäranden och gränser", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Ställ in CPU- och minnesbegäranden (garanterade resurser) och gränser (maximala resurser) för att styra resursallokering och förhindra att containrar förbrukar för mycket av klustrets resurser.", + "CPU request": "CPU-begäran", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Den minsta mängd CPU som garanteras för containern. Kubernetes schemalägger podden på en nod med minst så mycket CPU tillgängligt.", + "millicores": "millicores", + "CPU limit": "CPU-gräns", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Den maximala mängd CPU som containern kan använda. Om den överskrids begränsas containern.", + "Memory request": "Minnesbegäran", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Den minsta mängd minne som garanteras för containern. Kubernetes schemalägger podden på en nod med minst så mycket minne tillgängligt.", + "mebibytes": "mebibytes", + "Memory limit": "Minnesgräns", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Maximal mängd minne som containern kan använda. Om det överskrids avslutas containern (OOMKilled).", + "Container Image": "Containeravbildning", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Distribuera från Azure Container Registry, Docker Hub eller GHCR", + "Auto-generated Deployment and Service manifests": "Automatiskt genererade distributions- och tjänstmanifest", + "Guided configuration for ports, replicas, env, and resources": "Guidad konfiguration för portar, repliker, miljöer och resurser", + "No Kubernetes expertise required to get started": "Ingen Kubernetes-expertis krävs för att komma igång", + "Bring your own Kubernetes manifests to deploy": "Ta med dina egna Kubernetes-manifest som ska distribueras", + "Use existing manifests for full control": "Använd befintliga manifest för full kontroll", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Stöd för flera filer (distributioner, tjänster, inkommande med mera)", + "Preview and basic validation before apply": "Förhandsgranskning och grundläggande validering före tillämpning", + "Select Source": "Välj källa", + "Choose a source for your deployment (container image, repo, etc.).": "Välj en källa för distributionen (containeravbildning, lagringsplats och så vidare.).", + "Deployment source": "Distributionskälla", + "Features": "Funktioner", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Resursgrupp för användaridentitet", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Söker efter befintlig identitet...", + "Creating managed identity...": "Skapar hanterad identitet...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Ogiltig YAML: saknar obligatoriskt fält (typ)", + "Invalid YAML: List resource must have an array \"items\" field": "Ogiltig YAML: Listresursen måste ha ett fält för matrisen objekt", "Invalid YAML: List item missing required field (kind)": "Ogiltig YAML: Listobjektet saknar obligatoriskt fält (typ)", "Invalid YAML: List item missing required field (metadata.name)": "Ogiltig YAML: Listobjektet saknar obligatoriskt fält (metadata.namn)", - "Invalid YAML: List resource must have an array \"items\" field": "Ogiltig YAML: Listresursen måste ha ett fält för matrisen objekt", - "Invalid YAML: missing required field (kind)": "Ogiltig YAML: saknar obligatoriskt fält (typ)", "Invalid YAML: missing required field (metadata.name)": "Ogiltig YAML: obligatoriska fält saknas (metadata.namn)", - "Issue {{number}}": "Problem {{number}}", + "Invalid YAML": "Ogiltig YAML", + "Validation failed": "Verifieringen misslyckades", + "Failed to apply": "Det gick inte att tillämpa", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "{{applied}} resurser tillämpades, men {{failed}} misslyckades:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "Resursen {{count}} har tillämpats.", + "Applied {{count}} resource(s) successfully._other": "Resursen {{count}} har tillämpats.", + "Failed to apply resources.": "Det gick inte att tillämpa resurser.", + "unnamed": "namnlös", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "Innehåll", + "Push agent config files": "Push-överför konfigurationsfiler till agent", + "Workflows": "Arbetsflöden", + "Create setup workflow in .github/workflows/": "Skapa installationsarbetsflöde i .github/workflows/", + "Pull requests": "Pull-begäranden", + "Create deployment PRs": "Skapa pull-begäranden för distribution", "Issues": "Problem", - "just now": "just nu", - "KEDA (Event-Driven Autoscaling)": "KEDA (händelsestyrd automatisk skalning)", - "Keep Going": "Fortsätt", - "Key": "Nyckel", - "Kubernetes restarts the container if this check fails repeatedly.": "Kubernetes startar om containern om den underkänns i kontrollen upprepade gånger.", - "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Kubernetes startar om containern om den underkänns i kontrollen upprepade gånger. Används för upptäckt och återhämtning vid deadlock eller containrar som inte svarar.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes inaktiverar tillfälligt live/beredskap tills starten kan genomföras.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes inaktiverar tillfälligt live/beredskap tills starten kan genomföras. Användbart för containrar som tar lång tid att starta.", - "Kubernetes Version": "Kubernetes-version", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes skickar inte trafik till podden förrän den har godkänts i kontrollen.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes skickar inte trafik till podden förrän den har godkänts i kontrollen. Används för att visa när en container är redo att ta emot trafik.", - "Kubernetes YAML": "Kubernetes YAML", + "Track agent progress": "Spåra agentens förlopp", + "Run deployment workflows": "Kör distributionsarbetsflöden", + "Connect to GitHub": "Anslut till GitHub", + "Connected to '{{username}}'.": "Ansluten till {{username}}.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "Ge AKS Desktop rätt att skapa distributionskanaler på din lagringsplats.", + "Required Permissions": "Nödvändiga behörigheter", + "Complete authorization on your browser screen": "Slutför auktoriseringen på webbläsarskärmen", + "Connect": "Anslut", + "Select repository": "Välj lagringsplats", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Slutför installationen i webbläsaren. Det här uppdateras automatiskt när appen har installerats på {{repoName}}.", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "GitHub-appen AKS Desktop måste vara installerad på {{repoName}} för att det ska gå att fortsätta.", + "Reopen install page": "Öppna installationssidan igen", + "Install GitHub App": "Installera GitHub-app", + "Checking...": "Kontrollerar...", + "Connecting to GitHub...": "Ansluter till GitHub...", + "Connect GitHub": "Anslut GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Ansluten", + "Sign in to GitHub": "Logga in på GitHub", + "Failed to load repositories": "Det gick inte att läsa in lagringsplatser", + "Filter repositories": "Filtrera lagringsplatser", + "No repositories match your filter": "Inga lagringsplatser matchar ditt filter", + "No repositories found": "Inga lagringsplatser hittades", "less than a minute": "mindre än en minut", - "Limits": "Gränser", - "Liveness path": "Liveness-sökväg", - "Loading": "Läser in", - "Loading AKS clusters": "Läser in AKS-kluster", - "Loading Azure account information": "Läser in Azure-kontoinformation", - "Loading Azure context...": "Läser in Azure-sammanhang...", - "Loading clusters": "Läser in kluster", - "Loading configuration...": "Läser in konfiguration...", - "Loading deployments": "Läser in distributioner", - "Loading metrics": "Läser in mått", - "Loading scaling metrics from Prometheus": "Läser in skalningsmått från Prometheus", - "Loading subscriptions": "Läser in prenumerationer", - "Loading...": "Läser in...", - "Location": "Plats", - "Log out": "Logga ut", - "Logged in as": "Inloggad som", - "Logging out": "Loggar ut", - "Login successful! Redirecting": "Inloggningen lyckades! Omdirigering", - "Login timeout. Please try again.": "Inloggningstiden gick ut. Försök igen.", + "{{count}} min_one": "{{count}} minut", + "{{count}} min_other": "{{count}} minut", + "Up next": "Härnäst", + "PR {{number}}": "Pull-begäran {{number}}", + "Checking merge status...": "Kontrollerar sammanslagningsstatus...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Det här tar längre tid än förväntat. Kontrollera pull-begäran på GitHub för senaste status.", + "This PR was closed without merging. You may need to restart the process.": "Denna pull-begäran stängdes utan sammanslagning. Du kan behöva starta om processen.", + "Review on GitHub": "Granska på GitHub", + "Agent is working": "Agenten fungerar", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot-kodningsagenten analyserar din lagringsplats och genererar en pull-begäran för distribution med Dockerfile, Kubernetes-manifest och ett GitHub Actions-arbetsflöde.", + "Issue {{number}}": "Problem {{number}}", + "Waiting for agent workflow to start...": "Väntar på att agentarbetsflödet ska starta...", + "This typically takes 10–25 minutes.": "Det brukar ta 10 till 25 minuter.", + "Pipeline configured": "Pipeline konfigurerad", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "CI/CD-pipelinen för {{repoFullName}} är klar. Starta distributioner från fliken Distribuera.", + "Setup PR reviewed and merged": "Pull-begäran för konfiguration har granskats och slagits ihop", + "Copilot agent reviewed your repo and generated deployment PR": "Copilot-agenten har granskat din lagringsplats och genererat en pull-begäran för distribution", + "Deployment PR reviewed and merged": "Pull-begäran för distribution har granskats och slogs ihop", + "View deployment": "Visa distribution", + "You can collapse this panel. Progress is saved and will resume when you return.": "Du kan fälla ihop den här panelen. Förloppet sparas och återupptas när du kommer tillbaka.", + "Creating setup PR...": "Skapar pull-begäran för konfiguration...", + "The agent is creating the setup PR to enable the Copilot agent.": "Agenten skapar en konfigurations-PR för att aktivera Copilot-agenten.", + "Setup PR Created": "Pull-begäran för konfiguration har skapats", + "Review and merge the setup PR to enable the Copilot agent.": "Granska och slå samman pull-begäran för konfiguration för att aktivera Copilot-agenten.", + "Setting up Copilot agent...": "Konfigurerar Copilot-agenten...", + "Creating the trigger issue for the Copilot coding agent.": "Skapar utlösarproblemet för Copilot-kodningsagenten.", + "Deployment PR Ready": "Pull-begäran för distribution är redo", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agenten har skapat en pull-begäran för distribution. Granska de genererade filerna och slå ihop dem för att starta distributionskanalen.", + "Copilot agent": "Copilot-agent", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Efter sammanslagning analyserar Copilot-agenten din lagringsplats och skapar en pull-begäran för distribution", + "Deployment PR": "Pull-begäran för distribution", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "När agenten har skapat en pull-begäran för distribution granskar du de genererade filerna och slår ihop dem för att starta distributionspipelinen", + "Connect Source": "Anslut källa", + "Set up Copilot Agent": "Konfigurera Copilot-agenten", + "Review & Merge": "Granska och slå samman", + "Collapse panel": "Dölj panel", + "Keep Going": "Fortsätt", + "Discard": "Ta bort", + "Canceling will discard your pipeline progress. Are you sure?": "Om du avbryter tas pipeline-förloppet bort. Är du säker?", + "Ensuring resource group exists...": "Säkrar att resursgruppen finns...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Konfigurerar federerade autentiseringsuppgifter...", + "Workload identity configured": "Arbetsbelastningsidentitet har konfigurerats", + "Configure Workload Identity": "Konfigurera arbetsbelastningsidentitet", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Följande Azure-resurser skapas så att din GitHub Actions-pipeline kan autentiseras med AKS-klustret:", "Managed Identity": "Hanterad identitet", + "in resource group": "i resursgruppen", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Federerad autentiseringsuppgift", + "OIDC trust for": "OIDC-förtroende för", + "branch": "gren", + "Resource group where the managed identity will be created": "Resursgruppen där den hanterade identiteten ska skapas", + "Workload identity configured successfully.": "Arbetsbelastningsidentiteten har konfigurerats.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Det här kan vara ett behörighetsproblem. Kontrollera att du har GitHub-behörigheter och försök igen.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "Åtgärden kan fortfarande köras på GitHub. Senaste status visas i länken ovan.", + "Try again, or check GitHub for details.": "Försök igen eller gå till GitHub och få mer information.", + "Initializing...": "Initierar...", + "Checking repository readiness...": "Kontrollerar lagringsplatsens beredskap...", + "Loading configuration...": "Läser in konfiguration...", + "Unknown error": "Okänt fel", + "Trigger Copilot Agent": "Starta Copilot-agenten", + "Create Setup PR": "Skapa pull-begäran för installation", + "Failed to fetch deployment status": "Det gick inte att hämta distributionsstatus", + "Failed to fetch pod status": "Det gick inte att hämta podstatus", + "Failed to fetch service status": "Det gick inte att hämta tjänststatus", + "Failed to monitor deployment health": "Det gick inte att övervaka distributionens hälsa", + "Convert Namespaces to AKS Projects": "Konvertera namnområden till AKS-projekt", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Följande namnområden konverteras till AKS Desktop-projekt genom att lägga till följande etiketter:", "managed namespaces only": "endast hanterade namnområden", - "ManagedNamespacePreview feature registered successfully!": "Funktionen ManagedNamespacePreview har registrerats!", - "Manual": "Manuell", - "Manual Deploy": "Manuell distribution", - "Manually configure settings": "Konfigurera inställningar manuellt", - "Max replicas": "Maximalt antal repliker", - "Maximum CPU allowed (1000m = 1 CPU core)": "Maximal tillåten CPU (1 000 m = 1 CPU-kärna)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "Maximalt tillåtet minne (1 024 MiB = 1 GiB)", - "Maximum Replicas": "Maximalt antal repliker", - "mebibytes": "mebibytes", - "Memory": "Minne", - "Memory limit": "Minnesgräns", - "Memory Limits": "Minnesgränser", - "Memory request": "Minnesbegäran", - "Memory Requests": "Minnesbegäranden", - "Memory Resources": "Minnesresurser", - "Memory Usage": "Minnesanvändning", - "Memory utilization": "Minnesförbrukning", + "Namespaces to convert:": "Namnområden som ska konverteras:", + "Already AKS projects (will import directly):": "Redan AKS-projekt (importeras direkt):", + "Converting": "Omvandlar", + "Confirm & Import": "Bekräfta och importera", + "Please select at least one namespace to import": "Välj minst en namnrymd som ska importeras", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "Klustret {{clusterName}} måste registreras innan du importerar vanliga namnområden. Importera först ett hanterat namnområde från det här klustret.", "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "Sammanslagning av kluster {{clusterName}} ({{count}} namnområden)", "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "Sammanslagning av kluster {{clusterName}} ({{count}} namnområden)", - "Metrics": "Mått", - "Metrics refreshed every 30 seconds": "Mätvärden uppdateras var 30:e sekund", - "Metrics Unavailable": "Mått ej tillgängliga", - "millicores": "millicores", - "Min replicas": "Minsta antal repliker", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Minsta antal lyckade avsökningar i följd för att avsökningen ska anses vara felfri efter att den misslyckats. Standardvärdet är 1.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Minsta antal garanterade CPU:er (1 000 m = 1 CPU-kärna)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Minsta garanterade minne (1 024 MiB = 1 GiB)", - "Minimum Replicas": "Minsta antal repliker", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Saknar nödvändigt Azure-sammanhang. Kontrollera att du är inloggad och att klustret är kopplat till en giltig prenumeration, resursgrupp och klientorganisation.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Monterar containerns rotfilsystem som skrivskyddat för att förhindra skrivåtgärder.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Monterar containerns rotfilsystem som skrivskyddat för att förhindra skrivåtgärder. Det här ökar säkerheten genom att förhindra att skadlig kod ändrar systemfiler.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Stöd för flera filer (distributioner, tjänster, inkommande med mera)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Får bara innehålla gemener, siffror och bindestreck, som börjar och slutar med ett alfanumeriskt tecken", - "Name": "Namn", - "Namespace": "Namnområde", + "Failed to merge cluster: {{message}}": "Det gick inte att sammanslå klustret: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "Konverterar {{name}} till AKS-projekt (det kan ta en stund)...", + "Failed to convert namespace: {{message}}": "Det gick inte att konvertera namnområdet: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "Importerar {{current}} av {{total}}: {{name}} från {{clusterName}}", + "Project '{{name}}' successfully imported": "Projektet \"{{name}}\" har importerats", "Namespace '{{name}}' converted and imported as project": "Namnområdet \"{{name}}\" konverteras och importeras som projekt", - "Namespace created successfully!": "Namnområdet har skapats!", - "Namespace Created Successfully!": "Namnområdet har skapats!", - "Namespace creation API succeeded, proceeding with user assignments": "API:et för att skapa namnrymd lyckades, fortsätter med användartilldelningar", - "Namespace creation completed successfully! Adding user access": "Namnrymden har skapats! Lägger till användaråtkomst", - "Namespace Creation Failed": "Det gick inte att skapa namnområde", - "Namespace creation failed: {{message}}": "Det gick inte att skapa namnrymd: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Namnrymd har börjat skapas! Status för övervakning av skapande", - "Namespace Name": "Namn på namnområde", - "Namespace name is required": "Namnområdesnamn måste anges", - "Namespace name must be 63 characters or fewer": "Namnområdesnamnet får innehålla högst 63 tecken", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Namnområdesnamnet får bara innehålla gemener, siffror och bindestreck och måste börja och sluta med ett alfanumeriskt tecken", - "Namespace status check failed: {{message}}": "Det gick inte att kontrollera namnrymdens status: {{message}}", - "Namespace status verification failed: {{message}}": "Det gick inte att verifiera status för namnområde: {{message}}", - "namespace: {{namespace}}": "namnrymd: {{namespace}}", - "Namespaces to convert:": "Namnområden som ska konverteras:", - "Network I/O": "Nätverks-I/O", - "Network In": "Nätverk – inkommande", - "Network Out": "Nätverk – utgående", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Nätverkspolicymotorn går inte att ändra efter att klustret skapats. Skapa ett nytt kluster med", - "Networking": "Nätverk", - "Networking Policies": "Nätverksprinciper", - "New Project": "Nytt projekt", - "Next": "Nästa", + "Successfully merged {{count}} cluster(s)_one": "{{count}} kluster har slagits samman", + "Successfully merged {{count}} cluster(s)_other": "{{count}} kluster har slagits samman", + "with {{count}} project(s)_one": "med {{count}} projekt", + "with {{count}} project(s)_other": "med {{count}} projekt", + "{{count}} failed._one": "{{count}} misslyckades.", + "{{count}} failed._other": "{{count}} misslyckades.", + "Failed to import any projects. See details below.": "Det gick inte att importera några projekt. Läs informationen nedan.", + "Import AKS Projects": "Importera AKS-projekt", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Importera befintliga hanterade namnområden och vanliga namnområden som projekt. Namnområden som ännu inte är AKS Desktop-projekt konverteras genom att den obligatoriska projektetiketten läggs till.", + "Select Namespaces to Import": "Välj namnrymder som ska importeras", + "{{count}} selected_one": "{{count}} har valts", + "{{count}} selected_other": "{{count}} har valts", + "Select All": "Välj alla", + "Deselect All": "Avmarkera alla", + "AKS Managed": "AKS-hanterad", + "Regular": "Normal", + "AKS Project?": "AKS-projekt?", + "Yes": "Ja", "No": "Nej", - "No AKS clusters found in this subscription.": "Inga AKS-kluster hittades i den här prenumerationen.", - "No cluster is associated with this project.": "Inget kluster är kopplat till det här projektet.", - "No clusters found. Register a cluster first.": "Inga kluster hittades. Registrera ett kluster först.", - "No clusters in this project.": "Inga kluster i det här projektet.", - "No clusters with Azure Entra ID authentication found for this subscription": "Inga kluster med Azure Entra ID-autentisering hittades för den här prenumerationen", - "No data available": "Inga data är tillgängliga", - "No deployments found": "Inga distributioner hittades", + "Importing": "Importerar", + "Import Selected Projects": "Importera valda projekt", + "Failed to fetch managed namespaces": "Det gick inte att hämta hantera namnrymder", + "Failed to fetch managed namespace details": "Det gick inte att hämta information om hanterad namnrymd", + "Failed to update managed namespace": "Det gick inte att uppdatera hanterad namnrymd", + "Updating": "Uppdaterar", + "Update": "Uppdatera", + "AKS desktop logo": "AKS Desktop-logotyp", "No Deployments Found": "Inga distributioner hittades", - "No deployments found in this namespace.": "Inga distributioner hittades i den här namnrymden.", - "No description provided": "Ingen beskrivning har angetts", - "No eligible clusters found in this subscription.": "Inga behöriga kluster hittades i den här prenumerationen.", - "No Kubernetes expertise required to get started": "Ingen Kubernetes-expertis krävs för att komma igång", - "No options": "Inga alternativ", - "No pipeline runs yet.": "Inga pipeline-körningar ännu.", - "No pods found for deployment \"{{name}}\"": "Inga poddar hittades för distributionen {{name}}", - "No repositories found": "Inga lagringsplatser hittades", - "No repositories match your filter": "Inga lagringsplatser matchar ditt filter", - "No response time data available": "Inga data för svarstid är tillgängliga", - "No scaling data available": "Inga skalningsdata är tillgängliga", - "No subscriptions found": "Inga prenumerationer hittades", - "Not specified": "Inte angivet", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Obs! För AKS-hanterade namnområden tas Azure ARM-hantering bort automatiskt.", - "Number of Replicas": "Antalet repliker", - "Number of seconds after the container has started before liveness probes are initiated.": "Antal sekunder efter att containern har startat innan liveavsökningar initieras.", - "Number of seconds after the container has started before readiness probes are initiated.": "Antal sekunder efter att containern har startat innan beredskapsavsökningar initieras.", - "Number of seconds after the container has started before startup probes are initiated.": "Antal sekunder efter att containern har startat innan startavsökningar initieras.", - "Number of seconds after which the probe times out. Default is 1 second.": "Antal sekunder tills tidsgränsen för avsökningen har uppnåtts. Standardvärdet är 1 sekund.", - "OIDC trust for": "OIDC-förtroende för", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "När agenten har skapat en pull-begäran för distribution granskar du de genererade filerna och slår ihop dem för att starta distributionspipelinen", - "Only clusters with Azure Entra ID authentication are shown.": "Endast kluster med Azure Entra ID-autentisering visas.", - "Performing final status verification": "Slutlig statuskontroll utförs", - "periodSeconds": "periodSeconds", - "Pipeline": "Pipeline", - "Pipeline configured": "Pipeline konfigurerad", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Slutför autentiseringen i webbläsaren. Det här fönstret omdirigeras automatiskt när inloggningen är klar.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Registrera det om du vill fortsätta.", - "Please review all the settings before creating your AKS project": "Granska alla inställningar innan du skapar AKS-projektet", + "There are no deployments in this project namespace yet.": "Det finns ännu inga distributioner i den här projektnamnrymden.", + "Deploy an application to view logs.": "Distribuera ett program för att visa loggar.", + "Metrics": "Mått", + "CPU Usage": "CPU-användning", + "Memory Usage": "Minnesanvändning", + "Request Rate": "Begärandefrekvens", + "Error Rate": "Felfrekvens", + "Metrics refreshed every 30 seconds": "Mätvärden uppdateras var 30:e sekund", + "Select a deployment to view metrics": "Välj en distribution om du vill visa mått", + "Metrics Unavailable": "Mått ej tillgängliga", + "Application Metrics": "Programmätvärden", + "Request & error rate": "Begärans- och felfrekvens", + "No data available": "Inga data är tillgängliga", + "Response Time": "Svarstid", + "Memory utilization": "Minnesförbrukning", + "Network I/O": "Nätverks-I/O", + "Deploy an application to start viewing metrics.": "Distribuera ett program om du vill börja visa mått.", "Please select a deployment to view metrics": "Välj en distribution om du vill visa måtten", - "Please select a subscription first": "Välj en prenumeration först", - "Please select at least one namespace to import": "Välj minst en namnrymd som ska importeras", - "Please sign in to Azure to continue.": "Logga in på Azure för att fortsätta.", - "Pod Details": "Poddinformation", - "Pod Name": "Poddnamn", - "PR {{number}}": "Pull-begäran {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Prioritera schemaläggning av poddar på olika noder för att förbättra tillgänglighet och feltolerans.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Prioritera schemaläggning av poddar på olika noder för att förbättra tillgänglighet och feltolerans. På så vis kan poddar fördelas över hela klustret.", - "Preview and basic validation before apply": "Förhandsgranskning och grundläggande validering före tillämpning", - "Preview Features": "Förhandsgranskningsfunktioner", - "Project '{{name}}' successfully imported": "Projektet \"{{name}}\" har importerats", - "Project Basics": "Grundläggande information om projektet", - "Project Created Successfully!": "Projekt har skapats!", - "Project creation completed successfully!": "Projektet har skapats!", - "Project Creation Failed": "Det gick inte att skapa något projekt", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Tidsgränsen för att skapa projekt nåddes efter 10 minuter. Kontrollera om namnrymden har skapats och försök igen.", - "Project Description": "Projektbeskrivning", - "Project Name": "Projektnamn", - "Project name is available": "Projektnamn är tillgängligt", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Projektnamnet får bara innehålla gemener, siffror och bindestreck (inga blanksteg)", "Project Status": "Projektstatus", - "Pull requests": "Pull-begäranden", - "Push agent config files": "Push-överför konfigurationsfiler till agent", - "Re-deploy": "Distribuera på nytt", - "Read only root filesystem": "Skrivskyddat rotfilsystem", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Skrivskyddad åtkomst till de flesta objekt i en namnrymd. Kan inte visa roller, rollbindningar eller hemligheter.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Läs- och skrivåtkomst till de flesta objekt i en namnrymd. Kan inte visa eller ändra roller eller rollbindningar. Kan komma åt hemligheter och köra poddar som vilken ServiceAccount som helst i namnrymden.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Läs- och skrivåtkomst till de flesta resurser i en namnrymd. Kan skapa roller och rollbindningar inom namnrymden. Kan inte skriva till resurskvot eller själva namnrymden.", - "Readiness path": "Beredskapssökväg", - "Ready": "Klart", - "Refresh": "Uppdatera", - "Refreshing": "Uppdaterar", - "Register AKS Cluster": "Registrera AKS-kluster", - "Register Cluster": "Registrera kluster", - "Register ManagedNamespacePreview Feature": "Registrera funktionen ManagedNamespacePreview", - "Registering": "Registrering", - "Registering cluster": "Registrerar kluster", - "Regular": "Normal", - "Regular Kubernetes namespace": "Vanligt Kubernetes-namnområde", - "remove": "ta bort", - "Remove assignee": "Ta bort tilldelad person", - "Reopen install page": "Öppna installationssidan igen", - "Replica Bounds": "Replikgränser", - "Replicas": "Repliker", - "Request & error rate": "Begärans- och felfrekvens", - "Request Rate": "Begärandefrekvens", - "Requests": "Begäranden", - "Required Permissions": "Nödvändiga behörigheter", - "Resource Group": "Resursgrupp", - "Resource group where the managed identity will be created": "Resursgruppen där den hanterade identiteten ska skapas", - "Resource Limits": "Resursgränser", + "Total Pods": "Totalt antal poddar", + "Application Health": "Programhälsa", + "Loading metrics": "Läser in mått", "Resource Usage": "Resursanvändning", - "Resources to be deployed ({{count}} object)_one": "Resurser som ska distribueras ({{count}} objekt)", - "Resources to be deployed ({{count}} object)_other": "Resurser som ska distribueras ({{count}} objekt)", - "Response Time": "Svarstid", + "Avg Response Time": "Genomsnittlig svarstid", + "No response time data available": "Inga data för svarstid är tillgängliga", + "Absolute usage": "Absolut användning", + "Network In": "Nätverk – inkommande", + "Network Out": "Nätverk – utgående", + "Pod Details": "Poddinformation", + "Pod Name": "Poddnamn", "Restarts": "Omstart", - "Retry": "Försök igen", - "Review": "Granskning", - "Review & Deploy": "Granska och distribuera", - "Review & Merge": "Granska och slå samman", - "Review and merge the setup PR to enable the Copilot agent.": "Granska och slå samman pull-begäran för konfiguration för att aktivera Copilot-agenten.", - "Review on GitHub": "Granska på GitHub", - "Review Project Configuration": "Granska projektkonfiguration", - "Role": "Roll", - "Role Assignment": "Rolltilldelning", - "Run as non root user": "Kör som icke-rotanvändare", - "Run deployment workflows": "Kör distributionsarbetsflöden", - "Save": "Spara", - "Scaled down": "Skalades ned", - "Scaling": "Skalar", + "No pods found for deployment \"{{name}}\"": "Inga poddar hittades för distributionen {{name}}", + "Preview Features": "Förhandsgranskningsfunktioner", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Aktivera eller inaktivera funktioner som fortfarande är under utveckling. Förhandsgranskningsfunktioner kan ändras eller tas bort i framtida versioner.", + "GitHub Pipelines": "GitHub-pipeliner", + "Enable GitHub-based deployment pipelines for AKS projects.": "Aktivera GitHub-baserade distributionspipelines för AKS-projekt.", + "Loading scaling metrics from Prometheus": "Läser in skalningsmått från Prometheus", "Scaling Chart Unavailable": "Skalningsdiagram är inte tillgängligt", - "Scaling History (Last 24 Hours)": "Skalningshistorik (senaste 24 timmarna)", + "No scaling data available": "Inga skalningsdata är tillgängliga", + "Edit HPA Configuration": "Redigera HPA-konfiguration", + "Edit Manual Scaling Configuration": "Redigera konfiguration av manuell skalning", + "Minimum Replicas": "Minsta antal repliker", + "Maximum Replicas": "Maximalt antal repliker", + "Target CPU Utilization (%)": "CPU-användning för mål (%)", + "Number of Replicas": "Antalet repliker", + "Set the desired number of pod replicas for this deployment": "Ange önskat antal poddrepliker för den här distributionen", + "Save": "Spara", "Scaling Mode": "Skalningsläge", - "Scaling Overview": "Översikt över skalning", - "Search clusters": "Sök kluster", - "Search subscriptions": "Sök efter prenumerationer", - "Select a cluster": "Välj ett kluster", - "Select a deployment to view metrics": "Välj en distribution om du vill visa mått", + "Current Replicas": "Nuvarande repliker", + "Desired Replicas": "Önskade repliker", + "Configured Replicas": "Konfigurerade repliker", + "Replica Bounds": "Replikgränser", + "Available Replicas": "Tillgängliga repliker", + "CPU Usage / Target": "CPU-användning/mål", + "Scaling": "Skalar", "Select a deployment to view scaling metrics": "Välj en distribution om du vill visa skalningsmått", - "Select a subscription": "Välj en prenumeration", - "Select All": "Välj alla", - "Select an AKS cluster": "Välj ett AKS-kluster", - "Select an Azure subscription": "Välj en Azure-prenumeration", - "Select an option": "Välj ett alternativ", + "Scaling Overview": "Översikt över skalning", + "Edit Configuration": "Redigera konfiguration", + "Scaling History (Last 24 Hours)": "Skalningshistorik (senaste 24 timmarna)", + "Copied!": "Kopierat!", + "Copy": "Kopiera", + "Copy to clipboard": "Kopiera till Urklipp", + "No deployments found": "Inga distributioner hittades", "Select Deployment": "Välj distribution", - "Select Namespaces to Import": "Välj namnrymder som ska importeras", - "Select repository": "Välj lagringsplats", - "Select Source": "Välj källa", - "Selected Cluster Details": "Information om valt kluster", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Det valda klustret saknas i kubeconfig. Registrera det innan du fortsätter.", - "Service port": "Tjänstport", - "Service type": "Typ av tjänst", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Ställ in CPU- och minnesbegäranden (garanterade resurser) och gränser (maximala resurser) för att styra resursallokering och förhindra att containrar förbrukar för mycket av klustrets resurser.", - "Set quota limits to prevent overuse and maintain cluster stability": "Förhindra överanvändning och upprätthåll klusterstabilitet genom att ange kvotgränser", - "Set security, communication and access rules for incoming and outgoing traffic": "Ange säkerhets-, kommunikations- och åtkomstregler för inkommande och utgående trafik", - "Set the desired number of pod replicas for this deployment": "Ange önskat antal poddrepliker för den här distributionen", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Konfigurera en CI/CD-pipeline för att automatisera distributioner och effektivisera arbetsflödet", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Ställ in och konfigurera ett nytt projekt i Azure Kubernetes Service (AKS)", - "Set up Copilot Agent": "Konfigurera Copilot-agenten", - "Set up your pipeline": "Konfigurera din pipeline", - "Setting up Copilot agent...": "Konfigurerar Copilot-agenten...", - "Setup PR Created": "Pull-begäran för konfiguration har skapats", - "Setup PR reviewed and merged": "Pull-begäran för konfiguration har granskats och slagits ihop", - "Sign in": "Logga in", - "Sign in to GitHub": "Logga in på GitHub", - "Sign in to GitHub to view pipeline runs.": "Logga in på GitHub för att visa pipelinekörningar.", - "Sign in with Azure": "Logga in med Azure", - "Sign in with your Azure account to manage AKS clusters and resources": "Logga in med ditt Azure-konto för att hantera AKS-kluster och resurser", - "Source": "Källa", - "Starting project creation": "Börjar skapa projekt", - "Startup path": "Startsökväg", - "Status": "Status", - "Subscription": "Prenumeration", - "Successfully merged {{count}} cluster(s)_one": "{{count}} kluster har slagits samman", - "Successfully merged {{count}} cluster(s)_other": "{{count}} kluster har slagits samman", - "successThreshold": "successThreshold", - "Target CPU utilization": "CPU-användning för mål", - "Target CPU Utilization (%)": "CPU-användning för mål (%)", - "Target port": "Målport", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agenten har skapat en pull-begäran för distribution. Granska de genererade filerna och slå ihop dem för att starta distributionskanalen.", - "The agent is creating the setup PR to enable the Copilot agent.": "Agenten skapar en konfigurations-PR för att aktivera Copilot-agenten.", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "GitHub-appen AKS Desktop måste vara installerad på {{repoName}} för att det ska gå att fortsätta.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Tillägget aks-preview krävs för att skapa hanterade namnrymder. Installera det om du vill fortsätta.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot-kodningsagenten analyserar din lagringsplats och genererar en pull-begäran för distribution med Dockerfile, Kubernetes-manifest och ett GitHub Actions-arbetsflöde.", - "The following addons can be enabled on this cluster:": "Följande tillägg kan aktiveras på det här klustret:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "Följande Azure-resurser skapas så att din GitHub Actions-pipeline kan autentiseras med AKS-klustret:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Följande namnområden konverteras till AKS Desktop-projekt genom att lägga till följande etiketter:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "HTTP-sökvägen för att kontrollera om tjänsten är live (t.ex. /healthz). Avsökningen skickar en HTTP GET-begäran till den här sökvägen.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "HTTP-sökvägen för att kontrollera beredskap (t.ex. /ready). Avsökningen skickar en HTTP GET-begäran till den här sökvägen.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "HTTP-sökvägen för att kontrollera start (t.ex. /startup). Avsökningen skickar en HTTP GET-begäran till den här sökvägen.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Funktionen ManagedNamespacePreview måste registreras för att kunna skapa hanterade namnrymder.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Den maximala mängd CPU som containern kan använda. Om den överskrids begränsas containern.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Maximal mängd minne som containern kan använda. Om det överskrids avslutas containern (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "Maximalt antal podrepliker som HPA kan skala upp till när CPU-användningen är hög.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Den minsta mängd CPU som garanteras för containern. Kubernetes schemalägger podden på en nod med minst så mycket CPU tillgängligt.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Den minsta mängd minne som garanteras för containern. Kubernetes schemalägger podden på en nod med minst så mycket minne tillgängligt.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "Det minsta antalet podrepliker som HPA behåller, även när CPU-användningen är låg.", - "The namespace will be created on the selected cluster and set up as a project": "Namnområdet skapas i det valda klustret och konfigureras som ett projekt", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Antalet podrepliker som ska köras. Fler repliker ger bättre tillgänglighet och belastningsfördelning.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "Åtgärden kan fortfarande köras på GitHub. Senaste status visas i länken ovan.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Portnumret som visas av Kubernetes-tjänsten. Trafik till den här porten vidarebefordras till målporten.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Portnumret som containern lyssnar på. Det är porten i containern där ditt program körs.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Målet för genomsnittlig CPU-användning i procent för alla poddar. HPA (Horizontal Pod Autoscaler) skalar upp när CPU-användningen överstiger det här värdet och skalar ner när den är under.", - "There are no deployments in this project namespace yet.": "Det finns ännu inga distributioner i den här projektnamnrymden.", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Det här tar längre tid än förväntat. Kontrollera pull-begäran på GitHub för senaste status.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Det här kan vara ett behörighetsproblem. Kontrollera att du har GitHub-behörigheter och försök igen.", - "This PR was closed without merging. You may need to restart the process.": "Denna pull-begäran stängdes utan sammanslagning. Du kan behöva starta om processen.", - "This typically takes 10–25 minutes.": "Det brukar ta 10 till 25 minuter.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Totalt antal poddar", - "Track agent progress": "Spåra agentens förlopp", - "Trigger": "Utlösare", - "Trigger Copilot Agent": "Starta Copilot-agenten", - "Triggering...": "Utlöser...", - "Try again, or check GitHub for details.": "Försök igen eller gå till GitHub och få mer information.", - "Type": "Typ", - "Unknown error": "Okänt fel", - "unnamed": "namnlös", - "Up next": "Härnäst", - "Update": "Uppdatera", - "Updating": "Uppdaterar", - "Updating local settings": "Uppdaterar lokala inställningar", - "Upload files": "Ladda upp filer", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "Använd ClusterIP. Bäst för tjänster som endast är åtkomliga inom klustret.", - "Use custom service port": "Använd anpassad tjänstport", - "Use existing manifests for full control": "Använd befintliga manifest för full kontroll", - "User assignment completed with errors": "Användartilldelningen har slutförts med fel", - "Validation failed": "Verifieringen misslyckades", - "Value": "Värde", - "View deployment": "Visa distribution", - "View on GitHub": "Visa på GitHub", - "View run on GitHub": "Visa körning på GitHub", - "View workflow run": "Visa arbetsflödeskörning", - "VPA (Vertical Pod Autoscaler)": "Vertical Pod Autoscaler-verktyg (VPA)", - "VS Code": "VS-kod", - "Waiting for agent workflow to start...": "Väntar på att agentarbetsflödet ska starta...", - "Waiting for browser authorization...": "Väntar på webbläsarautentisering...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Väntar på att inloggningen ska slutföras... ({{minutes}} minuter kvar)", - "Waiting for namespace to be created": "Väntar på att namnrymden ska skapas", - "Waiting for namespace to propagate": "Väntar på att namnrymden ska spridas", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Varning: det går inte att ångra den här åtgärden. Alla resurser i de här namnrymderna tas bort permanent.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "När en avsökning misslyckas försöker Kubernetes så här många gånger innan den ger upp och startar om containern.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "När en avsökning misslyckas försöker Kubernetes så här många gånger innan den ger upp. För startavsökningar avgör det här hur länge den väntar innan omstart.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "När en avsökning misslyckas försöker Kubernetes så här många gånger innan podden markeras som inte redo.", - "with {{count}} project(s)_one": "med {{count}} projekt", - "with {{count}} project(s)_other": "med {{count}} projekt", - "with the following parameters:": "med följande parametrar:", - "Wizard steps": "Guidesteg", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "Arbetsflöde har utlösts. Se förloppet i GitHub Actions.", - "workflow on": "arbetsflöde på", - "Workflows": "Arbetsflöden", - "Workload identity configured": "Arbetsbelastningsidentitet har konfigurerats", - "Workload identity configured successfully.": "Arbetsbelastningsidentiteten har konfigurerats.", - "Workloads": "Arbetsbelastningar", - "Yes": "Ja", - "You can collapse this panel. Progress is saved and will resume when you return.": "Du kan fälla ihop den här panelen. Förloppet sparas och återupptas när du kommer tillbaka.", - "You need to be logged in to Azure to register AKS clusters.": "Du måste vara inloggad i Azure för att registrera AKS-kluster.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "Ditt AKS-projekt {{projectName}} har skapats och är redo att användas.", - "Your project \"{{projectName}}\" is ready to use.": "Projektet \"{{projectName}}\" är klart att använda." + "Loading deployments": "Läser in distributioner", + "No cluster is associated with this project.": "Inget kluster är kopplat till det här projektet.", + "Please sign in to Azure to continue.": "Logga in på Azure för att fortsätta.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Saknar nödvändigt Azure-sammanhang. Kontrollera att du är inloggad och att klustret är kopplat till en giltig prenumeration, resursgrupp och klientorganisation.", + "Failed to load Azure context": "Det gick inte att läsa in Azure-sammanhang", + "just now": "just nu", + "{{seconds}}s ago": "{{seconds}}s sedan", + "{{minutes}} min ago": "{{minutes}} min sedan", + "{{hours}}h ago": "{{hours}}tim sedan", + "{{days}}d ago": "{{days}} d sedan", + "{{weeks}}w ago": "{{weeks}} v sedan" } diff --git a/plugins/aks-desktop/locales/tr/translation.json b/plugins/aks-desktop/locales/tr/translation.json index 39119372e..89a57df44 100644 --- a/plugins/aks-desktop/locales/tr/translation.json +++ b/plugins/aks-desktop/locales/tr/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "\"AKS Kümesi Kullanıcı Rolü\" kapsamı kaynak grubu olarak belirlendi", - "(already enabled)": "(zaten etkin)", + "Failed to load subscriptions": "Abonelikler yüklenemedi", + "Failed to load AKS clusters": "AKS kümeleri yüklenemedi", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "'{{cluster}}' kümesi kubeconfig dosyasına başarıyla eklendi", + "Failed to register cluster: {{message}}": "Küme kaydedilemedi: {{message}}", + "Register AKS Cluster": "AKS Kümesini Kaydet", + "Checking authentication status": "Kimlik doğrulama durumu denetleniyor", + "You need to be logged in to Azure to register AKS clusters.": "AKS kümelerini kaydetmek için Azure hesabınızda oturum açmanız gerekir.", + "Subscription": "Abonelik", + "Select an Azure subscription": "Bir Azure aboneliği seçin", + "Loading subscriptions": "Abonelikler yükleniyor", + "Loading AKS clusters": "AKS kümeleri yükleniyor", + "No AKS clusters found in this subscription.": "Bu abonelikte AKS kümesi bulunamadı.", + "AKS Cluster": "AKS Kümesi", + "Select an AKS cluster": "AKS kümesi seçin", + "Selected Cluster Details": "Seçili Küme Ayrıntıları", + "Name": "Ad", + "Resource Group": "Kaynak Grubu", + "Location": "Konum", + "Kubernetes Version": "Kubernetes Sürümü", + "Done": "Bitti", + "Cancel": "İptal", + "Registering": "Kaydediliyor", + "Register Cluster": "Kümeyi Kaydet", + "Initiating Azure login": "Azure oturumu açma başlatılıyor", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Lütfen kimlik doğrulamasını tarayıcınızda tamamlayın. Oturum açma tamamlandığında bu pencere otomatik olarak yeniden yönlendirilir.", + "Login successful! Redirecting": "Oturum açıldı! Yeniden yönlendiriyor", + "Login timeout. Please try again.": "Oturum açma zaman aşımı. Lütfen yeniden deneyin.", + "Waiting for login completion... ({{minutes}} minutes remaining)": "Oturum açma işleminin tamamlanması bekleniyor... ({{minutes}} dakika kaldı)", + "Failed to initiate login: {{message}}": "Oturum açma başlatılamadı: {{message}}", + "Azure Authentication": "Azure Kimlik Doğrulaması", + "Sign in with your Azure account to manage AKS clusters and resources": "AKS kümelerini ve kaynaklarını yönetmek için Azure hesabınızla oturum açın", + "Sign in with Azure": "Azure’da oturum açın", + "Loading Azure account information": "Azure hesap bilgileri yükleniyor", + "Back": "Geri", + "Azure Account": "Azure Hesabı", + "Logged in as": "Oturum açılan hesap", + "Add Cluster from Azure": "Azure'dan Küme Ekle", + "Logging out": "Oturum kapatılıyor", + "Log out": "Oturumu kapat", + "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview gereksinimleri karşılanmadı", + "Dismiss": "Bırak", + "Configure Pipeline": "İşlem Hattını Yapılandır", + "Loading Azure context...": "Azure bağlamı yükleniyor...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Ad alanındaki çoğu nesneye yalnızca okuma erişimi vardır. Rolleri, rol bağlamalarını veya Gizli Dizileri görüntüleyemez.", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Ad alanındaki çoğu nesneye okuma/yazma erişimi vardır. Roller veya rol bağlamalarını görüntüleyemez veya değiştiremez. Gizli Dizilere erişebilir ve Podları ad alanındaki herhangi bir ServiceAccount olarak çalıştırabilir.", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Ad alanındaki çoğu kaynağa okuma/yazma erişimi vardır. Ad alanı içinde roller ve rol bağlamaları oluşturabilir. Kaynak kotasına veya ad alanının kendisine yazamaz.", + "Access": "Erişim", + "Assign permissions to users who need access to your namespace": "Ad alanınıza erişmesi gereken kullanıcılara izin atayın", + "Assignee": "Atanan", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "Rol", + "Remove assignee": "Atananı kaldır", + "Add assignee": "Atanan ekle", + "Only clusters with Azure Entra ID authentication are shown.": "Yalnızca Azure Entra ID kimlik doğrulamasına sahip kümeler gösterilir.", "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} küme gizlendi — Azure Entra ID yok", "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} küme gizlendi — Azure Entra ID yok", + "No eligible clusters found in this subscription.": "Bu abonelikte uygun küme bulunamadı.", "{{count}} eligible cluster(s) found._one": "{{count}} uygun küme bulundu.", "{{count}} eligible cluster(s) found._other": "{{count}} uygun küme bulundu.", - "{{count}} failed._one": "{{count}} başarısız oldu.", - "{{count}} failed._other": "{{count}} başarısız oldu.", - "{{count}} min_one": "{{count}} dk", - "{{count}} min_other": "{{count}} dk", - "{{count}} selected_one": "{{count}} seçildi", - "{{count}} selected_other": "{{count}} seçildi", - "{{days}}d ago": "{{days}} gün önce", - "{{hours}}h ago": "{{hours}} saat önce", - "{{minutes}} min ago": "{{minutes}} dakika önce", - "{{seconds}}s ago": "{{seconds}} saniye önce", - "{{weeks}}w ago": "{{weeks}} hafta önce", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "Küme seçilmesi gerekiyor", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Kümede proje etiketleri uygulanmış yeni bir ad alanı oluşturulacak. Proje listenizde hemen görünecek.", - "Absolute usage": "Mutlak kullanım", - "Access": "Erişim", - "Access Control ({{count}} assignee)_one": "Erişim Denetimi ({{count}} atanan)", - "Access Control ({{count}} assignee)_other": "Erişim Denetimi ({{count}} atanan)", - "Actions": "Eylemler", - "Add assignee": "Atanan ekle", - "Add Cluster from Azure": "Azure'dan Küme Ekle", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Bir veya birden fazla Kubernetes bildirimi ekleyin. Düzenleyiciyi doldurmak için dosyaları karşıya yükleyin veya doğrudan aşağıya yapıştırıp düzenleyin.", - "Add variable": "Değişken ekle", - "Advanced": "Gelişmiş", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Birleştirmeden sonra, Copilot aracısı deponuzu analiz eder ve bir dağıtım PR’si oluşturur.", - "Agent is working": "Aracı çalışıyor", - "AKS Cluster": "AKS Kümesi", - "AKS desktop logo": "AKS masaüstü logosu", - "AKS Managed": "AKS Tarafından Yönetilen", - "AKS Preview Extension installed successfully!": "AKS Önizleme Uzantısı başarıyla yüklendi!", - "AKS Preview Extension Required": "AKS Önizleme Uzantısı Gerekiyor", - "AKS Project?": "AKS Projesi Mi?", - "All selected addons have been enabled successfully.": "Seçilen tüm eklentiler başarıyla etkinleştirildi.", - "All verifications completed successfully!": "Tüm doğrulamalar başarıyla tamamlandı!", - "Allow all traffic": "Tüm trafiğe izin ver", - "Allow privilege escalation": "Ayrıcalık yükseltmeye izin ver", - "Allow traffic within same namespace": "Aynı ad alanı içindeki trafiğe izin ver", - "Already AKS projects (will import directly):": "Zaten AKS projeleri (doğrudan içeri aktarılacak):", - "Also delete the namespaces (this will remove all resources within them)": "Ad alanlarını da silin (bu işlem içlerindeki tüm kaynakları kaldırır)", - "Another project already exists with same name. Please choose a different name.": "Aynı ada sahip başka bir proje zaten var. Lütfen farklı bir ad seçin.", - "Application Health": "Uygulama Sistem Durumu", - "Application Metrics": "Uygulama Ölçümleri", - "Application name": "Uygulama adı", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Kaynak {{applied}} uygulandı, ancak {{failed}} başarısız oldu:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "{{count}} kaynak başarıyla uygulandı.", - "Applied {{count}} resource(s) successfully._other": "{{count}} kaynak başarıyla uygulandı.", - "Are you sure you want to delete project \"{{projectId}}\"?": "\"{{projectId}}\" projesini silmek istediğinizden emin misiniz?", - "Assign permissions to users who need access to your namespace": "Ad alanınıza erişmesi gereken kullanıcılara izin atayın", - "Assignee": "Atanan", - "Assigning AKS Cluster User Role...": "AKS Kümesi Kullanıcı Rolü Atanıyor...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS Masaüstü'nü deponuzda dağıtım veri hatları oluşturması için yetkilendirin.", - "Auto-generated Deployment and Service manifests": "Otomatik oluşturulan Dağıtım ve Hizmet bildirimleri", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "CPU kullanımına göre pod sayısını otomatik olarak ölçeklendirir. HPA, CPU kullanımı hedefi aştığında pod sayısını artırır, altında olduğunda azaltır.", - "Available Replicas": "Kullanılabilir Çoğaltmalar", - "Avg Response Time": "Ortalama Yanıt Süresi", - "Azure Account": "Azure Hesabı", - "Azure AD object ID": "Azure AD object ID", - "Azure Authentication": "Azure Kimlik Doğrulaması", - "Azure CLI/aks-preview requirements not met": "Azure CLI/aks-preview gereksinimleri karşılanmadı", - "Azure Monitor Metrics (Managed Prometheus)": "Azure İzleyici Ölçümleri (Yönetilen Prometheus)", - "Back": "Geri", - "Basics": "Temel Bilgiler", - "branch": "dallan", - "Bring your own Kubernetes manifests to deploy": "Dağıtmak için kendi Kubernetes bildirimlerinizi getirin", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Varsayılan olarak, yoklamalar kök yolunda makul varsayılan değerlerle HTTP GET kullanır. Yoklama ayarlarını özelleştirmek için bunu etkinleştirin.", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "Varsayılan olarak hizmet bağlantı noktası hedef bağlantı noktasıyla aynıdır. Hizmette farklı bir bağlantı noktası kullanmak için bunu etkinleştirin.", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Varsayılan olarak, bu işlem Azure yönetilen ad alanı ve proje etiketlerini aşağıdaki ad alanlarından kaldırır:", - "Cancel": "İptal", - "Canceling will discard your pipeline progress. Are you sure?": "İptal ettiğinizde işlem hattındaki ilerlemeniz kaybedilir. Emin misiniz?", - "Cancelled deletion of project {{ projectId }}.": "{{ projectId }} projesini silme işlemi iptal edildi.", - "Checking authentication status": "Kimlik doğrulama durumu denetleniyor", - "Checking for existing identity...": "Mevcut kimlik kontrol ediliyor...", - "Checking if another project exists with same name": "Aynı ada sahip başka bir projenin olup olmadığı denetleniyor", - "Checking merge status...": "Birleştirme durumu denetleniyor...", - "Checking repository readiness...": "Depo hazırlık durumu denetleniyor...", - "Checking...": "Denetleniyor...", - "Choose a source for your deployment (container image, repo, etc.).": "Dağıtımınız için bir kaynak seçin (kapsayıcı görüntüsü, depo vb.).", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} için CI/CD işlem hattı hazır. Dağıtımlar sekmesinden dağıtımları tetikleyin.", - "Clear editor": "Düzenleyiciyi temizle", - "Close": "Kapat", - "Cluster": "Küme", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "'{{cluster}}' kümesi kubeconfig dosyasına başarıyla eklendi", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "{{clusterName}} kümesi normal ad alanlarını içeri aktarmadan önce kaydedilmelidir. Önce bu kümeden yönetilen bir ad alanını içeri aktarın.", - "Cluster Configuration": "Küme Yapılandırması", - "Cluster is being deleted. Cannot deploy to this cluster.": "Küme siliniyor. Bu kümeye dağıtım yapılamaz.", "Cluster is currently updating. Deployment may fail.": "Küme şu anda güncelleştiriliyor. Dağıtım başarısız olabilir.", - "Cluster is deallocated. Please start the cluster before deploying.": "Küme serbest bırakıldı. Dağıtımdan önce lütfen kümeyi başlatın.", - "Cluster is in a failed state. Please check Azure portal.": "Küme başarısız durumda. Lütfen Azure portalı kontrol edin.", + "Cluster is being deleted. Cannot deploy to this cluster.": "Küme siliniyor. Bu kümeye dağıtım yapılamaz.", "Cluster is still being created. Please wait until creation completes.": "Kümeyi oluşturma işlemi devam ediyor. Lütfen oluşturma tamamlanana kadar bekleyin.", + "Cluster is in a failed state. Please check Azure portal.": "Küme başarısız durumda. Lütfen Azure portalı kontrol edin.", "Cluster is stopped. Please start the cluster before deploying.": "Küme durduruldu. Dağıtımdan önce lütfen kümeyi başlatın.", + "Cluster is deallocated. Please start the cluster before deploying.": "Küme serbest bırakıldı. Dağıtımdan önce lütfen kümeyi başlatın.", + "AKS Preview Extension Required": "AKS Önizleme Uzantısı Gerekiyor", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Yönetilen ad alanları oluşturmak için aks-preview uzantısı gereklidir. Devam etmek için lütfen bunu yükleyin.", + "Installing": "Yükleniyor", + "Install Extension": "Uzantıyı Yükle", + "AKS Preview Extension installed successfully!": "AKS Önizleme Uzantısı başarıyla yüklendi!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Yönetilen ad alanları oluşturmak için ManagedNamespacePreview özelliği kayıtlı olmalıdır.", + "Current state": "Geçerli durum", + "Please register it to continue.": "Devam etmek için lütfen kaydetin.", + "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview Özelliğini Kaydet", + "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview özelliği başarıyla kaydedildi!", + "Project Name": "Proje Adı", + "Checking if another project exists with same name": "Aynı ada sahip başka bir projenin olup olmadığı denetleniyor", + "Another project already exists with same name. Please choose a different name.": "Aynı ada sahip başka bir proje zaten var. Lütfen farklı bir ad seçin.", + "Project name is available": "Proje adı kullanılabilir", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Proje adı yalnızca küçük harflerden, rakamlardan ve kısa çizgilerden oluşabilir (boşluk kullanılmaz)", + "Project Description": "Proje Açıklaması", + "Enter project description": "Proje açıklamasını girin", + "Select a subscription": "Abonelik seçin", + "Search subscriptions": "Abonelik ara", + "No subscriptions found": "Abonelik bulunamadı", + "Retry": "Yeniden dene", + "Cluster": "Küme", + "Please select a subscription first": "Lütfen önce bir abonelik seçin", + "Loading clusters": "Kümeler yükleniyor", + "Select a cluster": "Küme seçin", + "Search clusters": "Küme ara", + "No clusters with Azure Entra ID authentication found for this subscription": "Bu abonelik için Azure Entra ID kimlik doğrulamasına sahip küme bulunamadı", "Cluster Not Ready": "Küme Hazır Değil", - "Collapse panel": "Paneli daralt", - "Complete authorization on your browser screen": "Tarayıcı ekranında yetkilendirmeyi tamamla", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Yüklemeyi tarayıcınızda tamamlayın. Uygulama {{repoName}} üzerinde yüklendiğinde otomatik olarak güncellenecektir.", - "Compute Quota": "İşlem Kotası", - "Configuration Complete": "Yapılandırma Tamamlandı", - "Configuration Error": "Yapılandırma Hatası", + "Refreshing": "Yenileniyor", + "Refresh": "Yenile", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Seçilen küme kubeconfig dosyasında yok. Devam etmeden önce dosyaya kaydedin.", + "Registering cluster": "Küme kaydediliyor", + "Wizard steps": "Sihirbaz adımları", + "Azure Monitor Metrics (Managed Prometheus)": "Azure İzleyici Ölçümleri (Yönetilen Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (Olay Tabanlı Otomatik Ölçeklendirme)", + "VPA (Vertical Pod Autoscaler)": "VPA (Dikey Pod Otomatik Ölçeklendirici)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "Yapılandırma beklenenden uzun sürüyor. Kümenizin güncel durumunu Azure portalından kontrol edin.", - "Configure": "Yapılandır", - "Configure Cluster": "Kümeyi Yapılandır", - "Configure Container Deployment": "Kapsayıcı Dağıtımını Yapılandır", - "Configure container health probes.": "Kapsayıcı sistem durumu yoklamalarını yapılandırın.", - "Configure Pipeline": "İşlem Hattını Yapılandır", - "Configure security context settings for the container.": "Kapsayıcı için güvenlik bağlamı ayarlarını yapılandırın.", - "Configure Workload Identity": "İş Yükü Kimliğini Yapılandır", - "Configured Replicas": "Yapılandırılan Çoğaltmalar", + "Failed to enable addons": "Eklentiler etkinleştirilemedi", + "Failed to enable addon: {{error}}": "Eklenti etkinleştirilemedi: {{error}}", + "Cluster Configuration": "Küme Yapılandırması", + "(already enabled)": "(zaten etkin)", + "The following addons can be enabled on this cluster:": "Bu kümede aşağıdaki eklentiler etkinleştirilebilir:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Küme oluşturulduktan sonra ağ ilkesi altyapısı değiştirilemez. Şununla yeni bir küme oluşturun:", + "for full network policy support.": "tam ağ ilkesi desteği için.", + "Enabling these addons may incur additional Azure costs.": "Bu eklentilerin etkinleştirilmesi ek Azure maliyetlerine yol açabilir.", + "Configuration Error": "Yapılandırma Hatası", + "Configuration Complete": "Yapılandırma Tamamlandı", + "All selected addons have been enabled successfully.": "Seçilen tüm eklentiler başarıyla etkinleştirildi.", "Configuring cluster... This may take a few minutes.": "Küme yapılandırılıyor... Bu işlem birkaç dakika sürebilir.", - "Configuring federated credential...": "Şirket dışındaki kimlik bilgileri yapılandırılıyor...", + "Enabling Addons...": "Eklentiler Etkinleştiriliyor...", "Configuring...": "Yapılandırılıyor...", - "Confirm & Import": "Onayla ve İçeri Aktar", - "Connect": "Bağlan", - "Connect GitHub": "GitHub Bağla", - "Connect Source": "Kaynak Bağla", - "Connect to GitHub": "GitHub’a Bağlan", - "Connected": "Bağlı", - "Connected to '{{username}}'.": "'{{username}}' adlı kullanıcıya bağlı.", - "Connecting to GitHub...": "GitHub'a bağlanılıyor...", - "Connecting...": "Bağlanıyor...", - "Container image": "Kapsayıcı görüntüsü", - "Container Image": "Kapsayıcı Görüntüsü", - "Contents": "İçindekiler", - "Continue": "Devam", - "Controls whether a process can gain more privileges than its parent process.": "Bir işlemin üst işleminden daha fazla ayrıcalık kazanıp kazanamayacağını denetler.", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Bir işlemin üst işleminden daha fazla ayrıcalık kazanıp kazanamayacağını denetler. Devre dışı bırakılması (önerilir) ayrıcalık yükseltme saldırılarını engeller.", - "Convert Namespaces to AKS Projects": "Ad Alanlarını AKS Projelerine Dönüştür", - "Converting": "Dönüştürülüyor", - "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} AKS projesine dönüştürülüyor (bu işlem biraz zaman alabilir)...", - "Copied!": "Kopyalandı!", - "Copilot agent": "Copilot aracısı", - "Copilot agent reviewed your repo and generated deployment PR": "Copilot aracısı deponuzu inceledi ve dağıtım PR’si oluşturdu.", - "Copy": "Kopyala", - "Copy to clipboard": "Panoya kopyala", - "CPU": "CPU", - "CPU limit": "CPU sınırı", - "CPU Limits": "CPU Sınırları", - "CPU request": "CPU isteği", - "CPU Requests": "CPU İstekleri", + "Configure Cluster": "Kümeyi Yapılandır", + "Compute Quota": "İşlem Kotası", + "Set quota limits to prevent overuse and maintain cluster stability": "Fazla kullanımı önlemek ve küme kararlılığını korumak için kota sınırlarını ayarlayın", "CPU Resources": "CPU Kaynakları", - "CPU Usage": "CPU Kullanımı", - "CPU Usage / Target": "CPU Kullanımı / Hedef", - "Create a new namespace on an existing cluster and set it up as a project": "Var olan bir kümede yeni bir ad alanı oluşturun ve bunu proje olarak ayarlayın", - "Create Application": "Uygulama Oluştur", - "Create deployment PRs": "Dağıtım PR'si oluştur", - "Create Namespace": "Ad Alanı Oluştur", - "Create New Namespace": "Yeni Ad Alanı Oluştur", - "Create Project": "Proje Oluştur", - "Create Setup PR": "Kurulum PR'si oluştur", - "Create setup workflow in .github/workflows/": ".github/workflows/ içinde kurulum iş akışı oluştur", - "Creates a LoadBalancer to expose the application to the internet.": "Uygulamayı internette kullanıma sunmak için bir LoadBalancer oluşturur.", - "Creating managed identity...": "Yönetilen kimlik oluşturuluyor...", - "Creating namespace": "Ad alanı oluşturma", - "Creating Namespace": "Ad Alanı Oluşturma", - "Creating Project": "Proje Oluşturuluyor", - "Creating setup PR...": "Kurulum PR'si oluşturuluyor...", - "Creating the trigger issue for the Copilot coding agent.": "Copilot kodlama aracısı için tetikleyici sorunu oluşturuluyor.", - "Current Replicas": "Geçerli Çoğaltmalar", - "Current state": "Geçerli durum", - "Degraded": "Düşürülen", - "Delete project": "Projeyi sil", + "CPU Requests": "CPU İstekleri", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "Garanti edilen minimum CPU (1000m = 1 CPU çekirdeği)", + "CPU Limits": "CPU Sınırları", + "Maximum CPU allowed (1000m = 1 CPU core)": "İzin verilen maksimum CPU (1000m = 1 CPU çekirdeği)", + "Memory Resources": "Bellek Kaynakları", + "Memory Requests": "Bellek İstekleri", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Garanti edilen minimum bellek (1024 MiB = 1 GiB)", + "Memory Limits": "Bellek Sınırları", + "Maximum memory allowed (1024 MiB = 1 GiB)": "İzin verilen maksimum bellek (1024 MiB = 1 GiB)", + "Basics": "Temel Bilgiler", + "Networking Policies": "Ağ İlkeleri", + "Review": "Gözden Geçir", + "New Project": "Yeni Proje", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Azure Kubernetes Service (AKS) içinde yeni bir proje ayarlayın ve yapılandırın", + "Creating Project": "Proje Oluşturuluyor", + "Create Project": "Proje Oluştur", + "Loading": "Yükleniyor", + "Next": "Sonraki", + "Project Created Successfully!": "Proje Başarıyla Oluşturuldu!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "\"{{projectName}}\" AKS projeniz oluşturuldu ve kullanıma hazır.", + "Application name": "Uygulama adı", + "Enter application name": "Uygulama adını girin", + "Enter a name for your first application to get started with deployment.": "Dağıtımı kullanmaya başlamak için ilk uygulamanızın adını girin.", + "Create Application": "Uygulama Oluştur", + "Project Creation Failed": "Proje Oluşturulamadı", + "Set security, communication and access rules for incoming and outgoing traffic": "Gelen ve giden trafik için güvenlik, iletişim ve erişim kurallarını ayarlayın", + "Allow traffic within same namespace": "Aynı ad alanı içindeki trafiğe izin ver", + "Allow all traffic": "Tüm trafiğe izin ver", + "Deny all traffic": "Tüm trafiği reddet", + "Review Project Configuration": "Proje Yapılandırmasını Gözden Geçir", + "Please review all the settings before creating your AKS project": "AKS projenizi oluşturmadan önce lütfen tüm ayarları gözden geçirin", + "Project Basics": "Proje Temelleri", + "Description": "Açıklama", + "No description provided": "Açıklama sağlanmadı", + "Ingress Policy": "Giriş İlkesi", + "Egress Policy": "Çıkış İlkesi", + "CPU": "CPU", + "Requests": "İstekler", + "Limits": "Sınırlar", + "Memory": "Bellek", + "Access Control ({{count}} assignee)_one": "Erişim Denetimi ({{count}} atanan)", + "Access Control ({{count}} assignee)_other": "Erişim Denetimi ({{count}} atanan)", + "Not specified": "Belirtilmedi", + "Select an option": "Bir seçenek belirtin", + "No options": "Seçenek yok", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "Proje oluşturma başlatılıyor", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Proje oluşturma işlemi 10 dakika sonra zaman aşımına uğradı. Lütfen ad alanının oluşturulup oluşturulmadığını kontrol edin ve yeniden deneyin.", + "Initiating managed namespace creation": "Yönetilen ad alanı oluşturma işlemi başlatılıyor", + "Namespace creation failed: {{message}}": "Ad alanı oluşturulamadı: {{message}}", + "Namespace creation initiated! Monitoring creation status": "Ad alanı oluşturma işlemi başlatıldı! Oluşturma durumu izleniyor", + "Waiting for namespace to propagate": "Ad alanının yayılması bekleniyor", + "Namespace status check failed: {{message}}": "Ad alanı durum denetimi başarısız oldu: {{message}}", + "Waiting for namespace to be created": "Ad alanının oluşturulması bekleniyor", + "Namespace status verification failed: {{message}}": "Ad alanı durumu doğrulanamadı: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "Ad alanı oluşturma API'si başarılı oldu, kullanıcı atamalarına başlanıyor", + "Namespace creation completed successfully! Adding user access": "Ad alanı oluşturma işlemi başarıyla tamamlandı! Kullanıcı erişimi ekleniyor", + "User assignment completed with errors": "Kullanıcı ataması hatalarla tamamlandı", + "Project creation completed successfully!": "Proje oluşturma başarıyla tamamlandı!", + "Performing final status verification": "Son durum doğrulaması gerçekleştiriliyor", + "Final status check failed: {{message}}": "Son durum denetimi başarısız oldu: {{message}}", + "Final status verification failed: {{message}}": "Son durum doğrulaması başarısız oldu: {{message}}", + "All verifications completed successfully!": "Tüm doğrulamalar başarıyla tamamlandı!", + "Failed to create project": "Proje oluşturulamadı", + "A cluster must be selected": "Küme seçilmesi gerekiyor", + "Namespace name is required": "Ad alanı adı gerekiyor", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Ad alanı adı yalnızca küçük harfler, sayılar ve kısa çizgiler içermelidir ve alfasayısal bir karakter ile başlayıp bitmelidir", + "Namespace name must be 63 characters or fewer": "Ad alanı adı en fazla 63 karakterden oluşmalıdır", + "Creating namespace": "Ad alanı oluşturma", + "Updating local settings": "Yerel ayarlar güncelleniyor", + "Namespace created successfully!": "Ad alanı başarıyla oluşturuldu!", + "Failed to create namespace": "Ad alanı oluşturulamadı", + "No clusters found. Register a cluster first.": "Küme bulunamadı. Önce kümeyi kaydedin.", + "Namespace Name": "Ad Alanı Adı", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Yalnızca küçük harf, rakam ve kısa çizgi içermelidir. Başında ve sonunda alfasayısal karakter olmalıdır", + "The namespace will be created on the selected cluster and set up as a project": "Ad alanı seçili kümede oluşturulacak ve proje olarak ayarlanacak", + "Type": "Tür", + "Regular Kubernetes namespace": "Normal Kubernetes ad alanı", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "Kümede proje etiketleri uygulanmış yeni bir ad alanı oluşturulacak. Proje listenizde hemen görünecek.", + "Create New Namespace": "Yeni Ad Alanı Oluştur", + "Create a new namespace on an existing cluster and set it up as a project": "Var olan bir kümede yeni bir ad alanı oluşturun ve bunu proje olarak ayarlayın", + "Creating Namespace": "Ad Alanı Oluşturma", + "Namespace Creation Failed": "Ad Alanı Oluşturulamadı", + "Namespace Created Successfully!": "Ad Alanı Başarıyla Oluşturuldu!", + "Your project \"{{projectName}}\" is ready to use.": "\"{{projectName}}\" projeniz kullanıma hazır.", + "Go To Projects": "Projelere Git", + "Create Namespace": "Ad Alanı Oluştur", + "Delete project": "Projeyi sil", "Delete Project": "Projeyi Sil", + "Are you sure you want to delete project \"{{projectId}}\"?": "\"{{projectId}}\" projesini silmek istediğinizden emin misiniz?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "Varsayılan olarak, bu işlem Azure yönetilen ad alanı ve proje etiketlerini aşağıdaki ad alanlarından kaldırır:", + "Also delete the namespaces (this will remove all resources within them)": "Ad alanlarını da silin (bu işlem içlerindeki tüm kaynakları kaldırır)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Uyarı: Bu eylem geri alınamaz. Bu ad alanlarındaki tüm kaynaklar kalıcı olarak silinecek.", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Not: AKS tarafından yönetilen ad alanları için Azure ARM yönetimi otomatik olarak kaldırılacak.", "Delete Project & Namespaces": "Proje ve Ad Alanlarını Sil", - "Deleted project {{ projectId }}.": "{{ projectId }} projesi silindi.", "Deleting project {{ projectId }}…": "{{ projectId }} projesi siliniyor…", - "Deny all traffic": "Tüm trafiği reddet", - "Deploy": "Dağıt", - "Deploy {{repo}}": "{{repo}} Deposunu Dağıt", - "Deploy an application to start viewing metrics.": "Ölçümleri görüntülemeye başlamak için bir uygulama dağıtın.", - "Deploy an application to view logs.": "Günlükleri görüntülemek için bir uygulama dağıtın.", + "Cancelled deletion of project {{ projectId }}.": "{{ projectId }} projesini silme işlemi iptal edildi.", + "Deleted project {{ projectId }}.": "{{ projectId }} projesi silindi.", + "Error deleting project {{ projectId }}.": "{{ projectId }} projesi silinirken hata oluştu.", "Deploy Application": "Uygulamayı Dağıt", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Azure Container Registry, Docker Hub veya GHCR'den dağıtım yapın", + "Failed to load pipeline runs": "İşlem hattı çalıştırmaları yüklenemedi", + "Pipeline": "İşlem Hattı", + "Set up your pipeline": "İşlem hattını ayarla", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Dağıtımlarınızı otomatikleştirmek ve iş akışınızı kolaylaştırmak için bir CI/CD işlem hattı kurun", + "Waiting for browser authorization...": "Tarayıcı yetkilendirmesi bekleniyor...", + "Sign in to GitHub to view pipeline runs.": "İşlem hattı çalıştırmalarını görüntülemek için GitHub’da oturum açın.", + "Connecting...": "Bağlanıyor...", + "No pipeline runs yet.": "Henüz işlem hattı çalıştırması yok.", + "View on GitHub": "GitHub'da Görüntüle", + "View run on GitHub": "GitHub'da çalıştırmayı görüntüle", + "Healthy": "İyi durumda", + "Scaled down": "Ölçek azaltıldı", + "Degraded": "Düşürülen", + "VS Code": "VS Code", + "Manual": "El ile", + "Manual Deploy": "Elle Dağıt", + "Deploy {{repo}}": "{{repo}} Deposunu Dağıt", "Deploy via Pipeline": "İşlem Hattıyla Dağıt", - "Deploying": "Dağıtılıyor", + "No deployments found in this namespace.": "Bu ad alanında dağıtım bulunamadı.", "Deployment": "Dağıtım", - "Deployment PR": "Dağıtım PR’si", - "Deployment PR Ready": "Dağıtım PR'si Hazır", - "Deployment PR reviewed and merged": "Dağıtım PR’sı incelendi ve birleştirildi", - "Deployment source": "Dağıtım kaynağı", - "Description": "Açıklama", - "Deselect All": "Tümünün Seçimini Kaldır", - "Desired Replicas": "İstenen Çoğaltmalar", - "Discard": "At", - "Dismiss": "Bırak", - "Distributes pods evenly across nodes to improve workload distribution.": "İş yükü dağıtımını iyileştirmek için podları düğümler arasında eşit dağıtır.", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Podları düğümler, bölgeler veya diğer topoloji alanları arasında eşit dağıtarak iş yükü dağılımını ve kullanılabilirliği artırır.", - "Done": "Bitti", - "Edit Configuration": "Yapılandırmayı Düzenle", + "Source": "Kaynak", + "Replicas": "Çoğaltmalar", + "Ready": "Hazır", + "Status": "Durum", + "Actions": "Eylemler", "Edit deployment": "Dağıtımı düzenle", - "Edit HPA Configuration": "HPA Yapılandırmasını Düzenle", - "Edit Manual Scaling Configuration": "El ile Ölçeklendirme Yapılandırmasını Düzenle", - "Egress Policy": "Çıkış İlkesi", + "View workflow run": "İş akışı çalıştırmasını görüntüle", + "Re-deploy": "Yeniden dağıt", + "Failed to trigger deployment": "Dağıtım tetiklenemedi", + "Trigger": "Tetikleyici", + "workflow on": "iş akışı:", + "with the following parameters:": "aşağı parametrelerle:", + "Namespace": "Ad Alanı", + "Sign in": "Oturum aç", + "GitHub authentication required to trigger deployment.": "Dağıtımı tetiklemek için GitHub kimlik doğrulaması gereklidir.", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "İş akışı gönderme işlemi başarıyla tetiklendi. İlerlemeyi GitHub Actions'ta kontrol edin.", + "Close": "Kapat", + "Triggering...": "Tetikleniyor...", + "Deploy": "Dağıt", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "İşlem hattı dağıtımlarını kullanmak için Ayarlar → Önizleme Özellikleri bölümünden GitHub İşlem Hatları seçeneğini etkinleştirin.", - "Enable GitHub-based deployment pipelines for AKS projects.": "AKS projeleri için GitHub tabanlı dağıtım işlem hatlarını etkinleştirin.", - "Enable Horizontal Pod Autoscaler": "Yatay Pod Otomatik Ölçeklendiricisini Etkinleştir", - "Enable liveness probe": "Canlılık yoklamasını etkinleştir", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Hala geliştirme aşamasında olan özellikleri etkinleştirin veya devre dışı bırakın. Önizleme özellikleri gelecekteki sürümlerde değişebilir veya kaldırılabilir.", - "Enable pod anti-affinity": "Pod benzeşimi korumasını etkinleştir", - "Enable public access": "Genel erişimi etkinleştir", - "Enable readiness probe": "Hazır olma yoklamasını etkinleştir", - "Enable resource requests and limits": "Kaynak isteklerini ve sınırlarını etkinleştir", - "Enable startup probe": "Başlangıç yoklamasını etkinleştir", - "Enable topology spread constraints": "Topoloji yayılma kısıtlamalarını etkinleştir", - "Enabling Addons...": "Eklentiler Etkinleştiriliyor...", - "Enabling these addons may incur additional Azure costs.": "Bu eklentilerin etkinleştirilmesi ek Azure maliyetlerine yol açabilir.", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Minimum çoğaltma sayısı maksimum çoğaltma sayısından küçük veya ona eşit olmalı ve hedef CPU %10 ile %95 arasında olmalıdır.", + "Workloads": "İş yükleri", + "No clusters in this project.": "Bu projede küme yok.", + "Failed to fetch deployments": "Model dağıtımları getirilemedi", + "Failed to fetch cluster status": "Küme durumu getirilemedi", + "Configure security context settings for the container.": "Kapsayıcı için güvenlik bağlamı ayarlarını yapılandırın.", + "Run as non root user": "Kök olmayan kullanıcı olarak çalıştır", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "Kapsayıcının daha iyi güvenlik için kök olmayan bir kullanıcı olarak (UID != 0) çalışmasını sağlar. Bu, ayrıcalık yükseltme saldırılarını engeller.", "Ensures the container runs as a non-root user for better security.": "Kapsayıcının daha iyi güvenlik için kök olmayan bir kullanıcı olarak çalışmasını sağlar.", - "Ensuring resource group exists...": "Kaynak grubunun var olduğu doğrulanıyor...", - "Enter a name for your first application to get started with deployment.": "Dağıtımı kullanmaya başlamak için ilk uygulamanızın adını girin.", - "Enter application name": "Uygulama adını girin", - "Enter project description": "Proje açıklamasını girin", - "Environment Variables": "Ortam Değişkenleri", - "Error deleting project {{ projectId }}.": "{{ projectId }} projesi silinirken hata oluştu.", - "Error Rate": "Hata Oranı", - "Failed to apply": "Uygulanamadı", - "Failed to apply resources.": "Kaynaklar uygulanamadı.", - "Failed to convert namespace: {{message}}": "Ad alanı dönüştürülemedi: {{message}}", - "Failed to create namespace": "Ad alanı oluşturulamadı", - "Failed to create project": "Proje oluşturulamadı", - "Failed to enable addon: {{error}}": "Eklenti etkinleştirilemedi: {{error}}", - "Failed to enable addons": "Eklentiler etkinleştirilemedi", - "Failed to fetch cluster status": "Küme durumu getirilemedi", - "Failed to fetch deployment status": "Dağıtım durumu getirilemedi", - "Failed to fetch deployments": "Model dağıtımları getirilemedi", - "Failed to fetch managed namespace details": "Yönetilen ad alanı ayrıntıları getirilemedi", - "Failed to fetch managed namespaces": "Yönetilen ad alanları getirilemedi", - "Failed to fetch pod status": "Pod durumu getirilemedi", - "Failed to fetch service status": "Hizmet durumu alınamadı", - "Failed to import any projects. See details below.": "Hiçbir proje içeri aktarılamadı. Aşağıdaki ayrıntılara bakın.", - "Failed to initiate login: {{message}}": "Oturum açma başlatılamadı: {{message}}", - "Failed to load AKS clusters": "AKS kümeleri yüklenemedi", - "Failed to load Azure context": "Azure bağlamı yüklenemedi", - "Failed to load pipeline runs": "İşlem hattı çalıştırmaları yüklenemedi", - "Failed to load repositories": "Depolar yüklenemedi", - "Failed to load subscriptions": "Abonelikler yüklenemedi", - "Failed to merge cluster: {{message}}": "Küme birleştirilemedi: {{message}}", - "Failed to monitor deployment health": "Dağıtım durumu izlenemedi", - "Failed to register cluster: {{message}}": "Küme kaydedilemedi: {{message}}", - "Failed to trigger deployment": "Dağıtım tetiklenemedi", - "Failed to update managed namespace": "Yönetilen ad alanı güncelleştirilemedi", - "failureThreshold": "failureThreshold", - "Features": "Özellikler", - "Federated Credential": "Şirket Dışındaki Kimlik Bilgileri", - "Filter repositories": "Depoları filtrele", - "Final status check failed: {{message}}": "Son durum denetimi başarısız oldu: {{message}}", - "Final status verification failed: {{message}}": "Son durum doğrulaması başarısız oldu: {{message}}", - "for full network policy support.": "tam ağ ilkesi desteği için.", - "Generated Kubernetes manifests (namespace: {{namespace}})": "Oluşturulan Kubernetes bildirimleri (ad alanı: {{namespace}})", - "GitHub authentication required to trigger deployment.": "Dağıtımı tetiklemek için GitHub kimlik doğrulaması gereklidir.", - "GitHub Pipelines": "GitHub İşlem Hatları", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "Projelere Git", - "Guided configuration for ports, replicas, env, and resources": "Bağlantı noktaları, çoğaltmalar, ortamlar ve kaynaklar için kılavuzlu yapılandırma", + "Read only root filesystem": "Salt okunur kök dosya sistemi", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Yazma işlemlerini önlemek için kapsayıcının kök dosya sistemini salt okunur olarak bağlar. Bu, kötü amaçlı kodun sistem dosyalarını değiştirmesini engelleyerek güvenliği artırır.", + "Mounts the container's root filesystem as read-only to prevent write operations.": "Yazma işlemlerini önlemek için kapsayıcının kök dosya sistemini salt okunur olarak bağlar.", + "Allow privilege escalation": "Ayrıcalık yükseltmeye izin ver", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "Bir işlemin üst işleminden daha fazla ayrıcalık kazanıp kazanamayacağını denetler. Devre dışı bırakılması (önerilir) ayrıcalık yükseltme saldırılarını engeller.", + "Controls whether a process can gain more privileges than its parent process.": "Bir işlemin üst işleminden daha fazla ayrıcalık kazanıp kazanamayacağını denetler.", + "Enable pod anti-affinity": "Pod benzeşimi korumasını etkinleştir", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Kullanılabilirlik ve hata toleransını artırmak için podların farklı düğümlerde zamanlanmasını tercih edin. Bu, podların küme genelinde dağıtılmasını sağlar.", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Kullanılabilirlik ve hata toleransını artırmak için podların farklı düğümlerde zamanlanmasını tercih edin.", + "Enable topology spread constraints": "Topoloji yayılma kısıtlamalarını etkinleştir", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "Podları düğümler, bölgeler veya diğer topoloji alanları arasında eşit dağıtarak iş yükü dağılımını ve kullanılabilirliği artırır.", + "Distributes pods evenly across nodes to improve workload distribution.": "İş yükü dağıtımını iyileştirmek için podları düğümler arasında eşit dağıtır.", + "Container image": "Kapsayıcı görüntüsü", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Çalıştırılacak pod çoğaltma sayısı. Daha fazla çoğaltma daha iyi kullanılabilirlik ve yük dağılımı sağlar.", + "Continue": "Devam", + "Configure Container Deployment": "Kapsayıcı Dağıtımını Yapılandır", + "Networking": "Ağ", "Healthchecks": "Durum Denetimleri", - "Healthy": "İyi durumda", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Canlılık yoklamasının yürütülme sıklığı (saniye cinsinden) Varsayılan değer 10 saniyedir.", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Hazır olma yoklamasının yürütülme sıklığı (saniye cinsinden). Varsayılan değer 10 saniyedir.", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Başlangıç yoklamasının hangi sıklıkta (saniye cinsinden) gerçekleştirileceği. Varsayılan değer 10 saniyedir.", - "HPA scales pods based on CPU utilization.": "HPA, podları işlemci kullanımına göre ölçeklendirir.", - "Identity Resource Group": "Kimlik Kaynağı Grubu", - "Import AKS Projects": "AKS Projelerini İçeri Aktar", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Mevcut yönetilen ad alanlarını ve normal ad alanlarını proje olarak içeri aktarın. Henüz AKS Masaüstü projesi olmayan ad alanları, gerekli proje etiketi eklenerek dönüştürülecek.", - "Import Selected Projects": "Seçili Projeleri İçeri Aktar", - "Importing": "İçeri aktarılıyor", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}}/{{total}} içeri aktarılıyor: {{clusterName}} kümesinden {{name}}", - "in resource group": "kaynak grubunda", + "Resource Limits": "Kaynak Sınırları", + "Environment Variables": "Ortam Değişkenleri", + "Workload Identity": "", + "Advanced": "Gelişmiş", "Information about {{label}}": "{{label}} Bilgileri", - "Information about CPU limit": "CPU sınırı hakkında bilgi", - "Information about CPU request": "CPU isteği bilgileri", - "Information about memory limit": "Bellek sınırı hakkında bilgi", - "Information about memory request": "Bellek sınırı bilgileri", - "Information about target CPU utilization": "Hedef CPU kullanımı hakkında bilgi", - "Ingress Policy": "Giriş İlkesi", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "Başlatılıyor...", - "Initiating Azure login": "Azure oturumu açma başlatılıyor", - "Initiating managed namespace creation": "Yönetilen ad alanı oluşturma işlemi başlatılıyor", - "Install Extension": "Uzantıyı Yükle", - "Install GitHub App": "GitHub Uygulamasını Yükle", - "Installing": "Yükleniyor", - "Internal only": "Yalnızca şirket içi", - "Invalid YAML": "YAML geçersiz", - "Invalid YAML: List item missing required field (kind)": "Geçersiz YAML: Liste öğesinde gerekli alan (kind) eksik", - "Invalid YAML: List item missing required field (metadata.name)": "Geçersiz YAML: Liste öğesinde gerekli alan (metadata.name) eksik", - "Invalid YAML: List resource must have an array \"items\" field": "Geçersiz YAML: Liste kaynağında \"items\" adlı bir dizi alanı olmalıdır", - "Invalid YAML: missing required field (kind)": "Geçersiz YAML: gerekli alan eksik (kind)", - "Invalid YAML: missing required field (metadata.name)": "Geçersiz YAML: gerekli alan eksik (metadata.name)", - "Issue {{number}}": "Sorun {{number}}", - "Issues": "Sorunlar", - "just now": "az önce", - "KEDA (Event-Driven Autoscaling)": "KEDA (Olay Tabanlı Otomatik Ölçeklendirme)", - "Keep Going": "Devam Et", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "Bir veya birden fazla Kubernetes bildirimi ekleyin. Düzenleyiciyi doldurmak için dosyaları karşıya yükleyin veya doğrudan aşağıya yapıştırıp düzenleyin.", + "Upload files": "Dosyaları karşıya yükle", + "Clear editor": "Düzenleyiciyi temizle", + "Review & Deploy": "Gözden Geçir ve Dağıt", + "Generated Kubernetes manifests (namespace: {{namespace}})": "Oluşturulan Kubernetes bildirimleri (ad alanı: {{namespace}})", + "Resources to be deployed ({{count}} object)_one": "Dağıtılacak kaynaklar ({{count}} nesne)", + "Resources to be deployed ({{count}} object)_other": "Dağıtılacak kaynaklar ({{count}} nesne)", + "namespace: {{namespace}}": "ad alanı: {{namespace}}", + "Configure": "Yapılandır", + "Deploying": "Dağıtılıyor", "Key": "Anahtar", - "Kubernetes restarts the container if this check fails repeatedly.": "Bu denetim tekrar tekrar başarısız olursa Kubernetes kapsayıcıyı yeniden başlatır.", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "Değer", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "kaldır", + "Add variable": "Değişken ekle", + "Configure container health probes.": "Kapsayıcı sistem durumu yoklamalarını yapılandırın.", + "Manually configure settings": "Ayarları elle yapılandır", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "Varsayılan olarak, yoklamalar kök yolunda makul varsayılan değerlerle HTTP GET kullanır. Yoklama ayarlarını özelleştirmek için bunu etkinleştirin.", + "Enable liveness probe": "Canlılık yoklamasını etkinleştir", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "Bu denetim tekrar tekrar başarısız olursa Kubernetes kapsayıcıyı yeniden başlatır. Kilitlenmeleri veya yanıt vermeyen kapsayıcıları tespit etmek ve kurtarmak için kullanılır.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes, başlatma başarılı olana kadar canlılık ve hazır olma yoklamalarını geçici olarak devre dışı bırakır.", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes, başlatma başarılı olana kadar canlılık ve hazır olma yoklamalarını geçici olarak devre dışı bırakır. Başlatılması uzun süren kapsayıcılar için kullanışlıdır", - "Kubernetes Version": "Kubernetes Sürümü", - "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes, bu denetimden geçilene kadar poda trafik göndermez.", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes, bu denetimden geçilene kadar poda trafik göndermez. Bir kapsayıcının trafiği kabul etmeye hazır olduğunu belirtmek için kullanılır.", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "bir dakikadan daha kısa", - "Limits": "Sınırlar", + "Kubernetes restarts the container if this check fails repeatedly.": "Bu denetim tekrar tekrar başarısız olursa Kubernetes kapsayıcıyı yeniden başlatır.", "Liveness path": "Canlılık yolu", - "Loading": "Yükleniyor", - "Loading AKS clusters": "AKS kümeleri yükleniyor", - "Loading Azure account information": "Azure hesap bilgileri yükleniyor", - "Loading Azure context...": "Azure bağlamı yükleniyor...", - "Loading clusters": "Kümeler yükleniyor", - "Loading configuration...": "Yapılandırma yükleniyor...", - "Loading deployments": "Dağıtımlar yükleniyor", - "Loading metrics": "Ölçümler yükleniyor", - "Loading scaling metrics from Prometheus": "Prometheus'dan ölçeklendirme ölçümleri yükleniyor", - "Loading subscriptions": "Abonelikler yükleniyor", - "Loading...": "Yükleniyor...", - "Location": "Konum", - "Log out": "Oturumu kapat", - "Logged in as": "Oturum açılan hesap", - "Logging out": "Oturum kapatılıyor", - "Login successful! Redirecting": "Oturum açıldı! Yeniden yönlendiriyor", - "Login timeout. Please try again.": "Oturum açma zaman aşımı. Lütfen yeniden deneyin.", - "Managed Identity": "Yönetilen Kimlik", - "managed namespaces only": "yalnızca yönetilen ad alanları", - "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview özelliği başarıyla kaydedildi!", - "Manual": "El ile", - "Manual Deploy": "Elle Dağıt", - "Manually configure settings": "Ayarları elle yapılandır", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Canlılık kontrolü için HTTP yolu (örneğin, /healthz). Yoklama bu yola bir HTTP GET isteği gönderir.", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "Kapsayıcı başlatıldıktan sonra, hazırlık yoklamaları başlatılana kadar geçen sürenin saniye sayısı.", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "Canlılık yoklamasının yürütülme sıklığı (saniye cinsinden) Varsayılan değer 10 saniyedir.", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "Yoklamanın zaman aşımına uğradığı saniye sayısı. Varsayılan değer 1 saniyedir.", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Bir yoklama başarısız olduğunda, Kubernetes vazgeçmeden ve kapsayıcıyı yeniden başlatmadan önce bunu çok kez dener.", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Yoklama başarısız olduktan sonra başarılı sayılması için minimum ardışık başarı. Varsayılan 1'dir. Varsayılan değer 1’dir.", + "Enable readiness probe": "Hazır olma yoklamasını etkinleştir", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "Kubernetes, bu denetimden geçilene kadar poda trafik göndermez. Bir kapsayıcının trafiği kabul etmeye hazır olduğunu belirtmek için kullanılır.", + "Kubernetes won't send traffic to the pod until this check passes.": "Kubernetes, bu denetimden geçilene kadar poda trafik göndermez.", + "Readiness path": "Hazırlık yolu", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Hazırlık durumunu kontrol etmek için HTTP yolu (örneğin, /ready). Yoklama bu yola bir HTTP GET isteği gönderir.", + "Number of seconds after the container has started before readiness probes are initiated.": "Kapsayıcı başlatıldıktan sonra, hazırlık yoklamaları başlatılana kadar geçen sürenin saniye sayısı.", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "Hazır olma yoklamasının yürütülme sıklığı (saniye cinsinden). Varsayılan değer 10 saniyedir.", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Bir yoklama başarısız olduğunda, Kubernetes pod'u hazır değil olarak işaretlemeden önce çok kez dener.", + "Enable startup probe": "Başlangıç yoklamasını etkinleştir", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes, başlatma başarılı olana kadar canlılık ve hazır olma yoklamalarını geçici olarak devre dışı bırakır. Başlatılması uzun süren kapsayıcılar için kullanışlıdır", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes, başlatma başarılı olana kadar canlılık ve hazır olma yoklamalarını geçici olarak devre dışı bırakır.", + "Startup path": "Başlangıç yolu", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Başlatma durumunu kontrol etmek için HTTP yolu (örneğin, /startup). Yoklama bu yola bir HTTP GET isteği gönderir.", + "Number of seconds after the container has started before startup probes are initiated.": "Kapsayıcı başlatıldıktan sonra, başlangıç yoklamaları başlatılana kadar geçen sürenin saniye sayısı.", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "Başlangıç yoklamasının hangi sıklıkta (saniye cinsinden) gerçekleştirileceği. Varsayılan değer 10 saniyedir.", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Bir yoklama başarısız olduğunda, Kubernetes vazgeçmeden önce bunu çok kez dener. Başlangıç yoklamaları için, yeniden başlatmadan önce ne kadar bekleneceğini belirler.", + "Enable Horizontal Pod Autoscaler": "Yatay Pod Otomatik Ölçeklendiricisini Etkinleştir", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "CPU kullanımına göre pod sayısını otomatik olarak ölçeklendirir. HPA, CPU kullanımı hedefi aştığında pod sayısını artırır, altında olduğunda azaltır.", + "HPA scales pods based on CPU utilization.": "HPA, podları işlemci kullanımına göre ölçeklendirir.", + "Min replicas": "En az çoğaltma sayısı", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "CPU kullanımı düşük olsa bile HPA'nın koruyacağı minimum pod çoğaltma sayısı.", "Max replicas": "En fazla çoğaltma sayısı", - "Maximum CPU allowed (1000m = 1 CPU core)": "İzin verilen maksimum CPU (1000m = 1 CPU çekirdeği)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "İzin verilen maksimum bellek (1024 MiB = 1 GiB)", - "Maximum Replicas": "Maksimum Çoğaltma Sayısı", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "CPU kullanımı yüksek olduğunda HPA'nın ölçeğini artırabileceği maksimum pod çoğaltma sayısı.", + "Target CPU utilization": "Hedef CPU kullanımı", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Tüm podlarda hedef ortalama CPU kullanım yüzdesi. CPU kullanımı bu değeri aştığında HPA ölçeği artırır, bu değerin altına düştüğünde ölçeği azaltır.", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "Minimum çoğaltma sayısı maksimum çoğaltma sayısından küçük veya ona eşit olmalı ve hedef CPU %10 ile %95 arasında olmalıdır.", + "Target port": "Hedef bağlantı noktası", + "The port number that your container listens on. This is the port inside the container where your application runs.": "Kapsayıcınızın dinlediği bağlantı noktası numarası. Bu, uygulamanızın kapsayıcı içinde çalıştığı bağlantı noktasıdır.", + "Service port": "Hizmet bağlantı noktası", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes hizmeti tarafından açılan bağlantı noktası numarası. Bu bağlantı noktasına gelen trafik hedef bağlantı noktasına iletilir.", + "Use custom service port": "Özel hizmet bağlantı noktası kullanın", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "Varsayılan olarak hizmet bağlantı noktası hedef bağlantı noktasıyla aynıdır. Hizmette farklı bir bağlantı noktası kullanmak için bunu etkinleştirin.", + "Service type": "Hizmet türü", + "Internal only": "Yalnızca şirket içi", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "ClusterIP kullanın. Yalnızca küme içinde erişilebilen hizmetler için daha uygunudur.", + "Enable public access": "Genel erişimi etkinleştir", + "Creates a LoadBalancer to expose the application to the internet.": "Uygulamayı internette kullanıma sunmak için bir LoadBalancer oluşturur.", + "Enable resource requests and limits": "Kaynak isteklerini ve sınırlarını etkinleştir", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Kaynak ayırmayı kontrol etmek ve kapsayıcıların küme kaynakları tüketiminin aşırı düzeylerde olmaması için CPU ve bellek isteklerini (garantili kaynaklar) ve sınırlarını (maksimum kaynaklar) ayarlayın.", + "CPU request": "CPU isteği", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Kapsayıcıya garanti edilen minimum CPU miktarı. Kubernetes, podu en az bu kadar kullanılabilir CPU'ya sahip bir düğümde zamanlar.", + "millicores": "milicore", + "CPU limit": "CPU sınırı", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Kapsayıcının kullanabileceği maksimum CPU miktarı. Aşılması durumunda kapsayıcı kısıtlanır.", + "Memory request": "Bellek isteği", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Kapsayıcıya garanti edilen minimum bellek miktarı. Kubernetes, podu en az bu kadar kullanılabilir belleğe sahip bir düğümde zamanlar.", "mebibytes": "mebibayt", - "Memory": "Bellek", "Memory limit": "Bellek sınırı", - "Memory Limits": "Bellek Sınırları", - "Memory request": "Bellek isteği", - "Memory Requests": "Bellek İstekleri", - "Memory Resources": "Bellek Kaynakları", - "Memory Usage": "Bellek Kullanımı", - "Memory utilization": "Bellek kullanımı", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "{{clusterName}} kümesi birleştiriliyor ({{count}} ad alanı)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "{{clusterName}} kümesi birleştiriliyor ({{count}} ad alanı)", - "Metrics": "Ölçümler", - "Metrics refreshed every 30 seconds": "Ölçümler 30 saniyede bir yenilenir", - "Metrics Unavailable": "Ölçümler Kullanılamıyor", - "millicores": "milicore", - "Min replicas": "En az çoğaltma sayısı", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "Yoklama başarısız olduktan sonra başarılı sayılması için minimum ardışık başarı. Varsayılan 1'dir. Varsayılan değer 1’dir.", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "Garanti edilen minimum CPU (1000m = 1 CPU çekirdeği)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "Garanti edilen minimum bellek (1024 MiB = 1 GiB)", - "Minimum Replicas": "Minimum Çoğaltma Sayısı", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Gerekli Azure bağlamı eksik. Lütfen oturum açtığınızdan ve kümenin geçerli bir abonelik, kaynak grubu ve kiracıyla ilişkili olduğundan emin olun.", - "Mounts the container's root filesystem as read-only to prevent write operations.": "Yazma işlemlerini önlemek için kapsayıcının kök dosya sistemini salt okunur olarak bağlar.", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "Yazma işlemlerini önlemek için kapsayıcının kök dosya sistemini salt okunur olarak bağlar. Bu, kötü amaçlı kodun sistem dosyalarını değiştirmesini engelleyerek güvenliği artırır.", - "Multi-file support (Deployments, Services, Ingress, etc.)": "Çoklu dosya desteği (Dağıtımlar, Hizmetler, Giriş vb.)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "Yalnızca küçük harf, rakam ve kısa çizgi içermelidir. Başında ve sonunda alfasayısal karakter olmalıdır", - "Name": "Ad", - "Namespace": "Ad Alanı", - "Namespace '{{name}}' converted and imported as project": "'{{name}}' ad alanı dönüştürüldü ve proje olarak içeri aktarıldı", - "Namespace created successfully!": "Ad alanı başarıyla oluşturuldu!", - "Namespace Created Successfully!": "Ad Alanı Başarıyla Oluşturuldu!", - "Namespace creation API succeeded, proceeding with user assignments": "Ad alanı oluşturma API'si başarılı oldu, kullanıcı atamalarına başlanıyor", - "Namespace creation completed successfully! Adding user access": "Ad alanı oluşturma işlemi başarıyla tamamlandı! Kullanıcı erişimi ekleniyor", - "Namespace Creation Failed": "Ad Alanı Oluşturulamadı", - "Namespace creation failed: {{message}}": "Ad alanı oluşturulamadı: {{message}}", - "Namespace creation initiated! Monitoring creation status": "Ad alanı oluşturma işlemi başlatıldı! Oluşturma durumu izleniyor", - "Namespace Name": "Ad Alanı Adı", - "Namespace name is required": "Ad alanı adı gerekiyor", - "Namespace name must be 63 characters or fewer": "Ad alanı adı en fazla 63 karakterden oluşmalıdır", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "Ad alanı adı yalnızca küçük harfler, sayılar ve kısa çizgiler içermelidir ve alfasayısal bir karakter ile başlayıp bitmelidir", - "Namespace status check failed: {{message}}": "Ad alanı durum denetimi başarısız oldu: {{message}}", - "Namespace status verification failed: {{message}}": "Ad alanı durumu doğrulanamadı: {{message}}", - "namespace: {{namespace}}": "ad alanı: {{namespace}}", - "Namespaces to convert:": "Dönüştürülecek ad alanları:", - "Network I/O": "Ağ G/Ç", - "Network In": "Ağa Gelen", - "Network Out": "Ağdan Giden", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "Küme oluşturulduktan sonra ağ ilkesi altyapısı değiştirilemez. Şununla yeni bir küme oluşturun:", - "Networking": "Ağ", - "Networking Policies": "Ağ İlkeleri", - "New Project": "Yeni Proje", - "Next": "Sonraki", - "No": "Hayır", - "No AKS clusters found in this subscription.": "Bu abonelikte AKS kümesi bulunamadı.", - "No cluster is associated with this project.": "Bu projeyle ilişkili küme yok.", - "No clusters found. Register a cluster first.": "Küme bulunamadı. Önce kümeyi kaydedin.", - "No clusters in this project.": "Bu projede küme yok.", - "No clusters with Azure Entra ID authentication found for this subscription": "Bu abonelik için Azure Entra ID kimlik doğrulamasına sahip küme bulunamadı", - "No data available": "Kullanılabilir veri yok", - "No deployments found": "Dağıtım bulunamadı", - "No Deployments Found": "Hiç Dağıtım Bulunamadı", - "No deployments found in this namespace.": "Bu ad alanında dağıtım bulunamadı.", - "No description provided": "Açıklama sağlanmadı", - "No eligible clusters found in this subscription.": "Bu abonelikte uygun küme bulunamadı.", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Kapsayıcının kullanabileceği maksimum bellek miktarı. Aşılması durumunda kapsayıcı sonlandırılır (OOMKilled).", + "Container Image": "Kapsayıcı Görüntüsü", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "Azure Container Registry, Docker Hub veya GHCR'den dağıtım yapın", + "Auto-generated Deployment and Service manifests": "Otomatik oluşturulan Dağıtım ve Hizmet bildirimleri", + "Guided configuration for ports, replicas, env, and resources": "Bağlantı noktaları, çoğaltmalar, ortamlar ve kaynaklar için kılavuzlu yapılandırma", "No Kubernetes expertise required to get started": "Kullanmaya başlamak için Kubernetes uzmanlığı gerekmez", - "No options": "Seçenek yok", - "No pipeline runs yet.": "Henüz işlem hattı çalıştırması yok.", - "No pods found for deployment \"{{name}}\"": "\"{{name}}\" dağıtımı için pod bulunamadı", - "No repositories found": "Depo bulunamadı", - "No repositories match your filter": "Filtrenizle eşleşen depo yok", - "No response time data available": "Yanıt süresi verisi yok", - "No scaling data available": "Kullanılabilir ölçeklendirme verisi yok", - "No subscriptions found": "Abonelik bulunamadı", - "Not specified": "Belirtilmedi", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "Not: AKS tarafından yönetilen ad alanları için Azure ARM yönetimi otomatik olarak kaldırılacak.", - "Number of Replicas": "Çoğaltmaların Sayısı", - "Number of seconds after the container has started before liveness probes are initiated.": "Kapsayıcı başlatıldıktan sonra, hazırlık yoklamaları başlatılana kadar geçen sürenin saniye sayısı.", - "Number of seconds after the container has started before readiness probes are initiated.": "Kapsayıcı başlatıldıktan sonra, hazırlık yoklamaları başlatılana kadar geçen sürenin saniye sayısı.", - "Number of seconds after the container has started before startup probes are initiated.": "Kapsayıcı başlatıldıktan sonra, başlangıç yoklamaları başlatılana kadar geçen sürenin saniye sayısı.", - "Number of seconds after which the probe times out. Default is 1 second.": "Yoklamanın zaman aşımına uğradığı saniye sayısı. Varsayılan değer 1 saniyedir.", - "OIDC trust for": "OIDC güveni:", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Aracı dağıtım PR’sini oluşturduktan sonra, oluşturulan dosyaları inceleyin ve dağıtım işlem hattını başlatmak için birleştirin.", - "Only clusters with Azure Entra ID authentication are shown.": "Yalnızca Azure Entra ID kimlik doğrulamasına sahip kümeler gösterilir.", - "Performing final status verification": "Son durum doğrulaması gerçekleştiriliyor", - "periodSeconds": "periodSeconds", - "Pipeline": "İşlem Hattı", - "Pipeline configured": "İşlem hattı yapılandırıldı", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "Lütfen kimlik doğrulamasını tarayıcınızda tamamlayın. Oturum açma tamamlandığında bu pencere otomatik olarak yeniden yönlendirilir.", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "Devam etmek için lütfen kaydetin.", - "Please review all the settings before creating your AKS project": "AKS projenizi oluşturmadan önce lütfen tüm ayarları gözden geçirin", - "Please select a deployment to view metrics": "Ölçümleri görüntülemek için lütfen bir dağıtım seçin", - "Please select a subscription first": "Lütfen önce bir abonelik seçin", - "Please select at least one namespace to import": "İçeri aktarmak için lütfen en az bir ad alanı seçin", - "Please sign in to Azure to continue.": "Devam etmek için lütfen Azure’da oturum açın.", - "Pod Details": "Pod Ayrıntıları", - "Pod Name": "Pod Adı", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "Kullanılabilirlik ve hata toleransını artırmak için podların farklı düğümlerde zamanlanmasını tercih edin.", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "Kullanılabilirlik ve hata toleransını artırmak için podların farklı düğümlerde zamanlanmasını tercih edin. Bu, podların küme genelinde dağıtılmasını sağlar.", + "Bring your own Kubernetes manifests to deploy": "Dağıtmak için kendi Kubernetes bildirimlerinizi getirin", + "Use existing manifests for full control": "Tam denetim için mevcut bildirimleri kullanın", + "Multi-file support (Deployments, Services, Ingress, etc.)": "Çoklu dosya desteği (Dağıtımlar, Hizmetler, Giriş vb.)", "Preview and basic validation before apply": "Uygulamadan önce önizleme ve temel doğrulama", - "Preview Features": "Önizleme Özellikleri", - "Project '{{name}}' successfully imported": "'{{name}}' projesi başarıyla içeri aktarıldı", - "Project Basics": "Proje Temelleri", - "Project Created Successfully!": "Proje Başarıyla Oluşturuldu!", - "Project creation completed successfully!": "Proje oluşturma başarıyla tamamlandı!", - "Project Creation Failed": "Proje Oluşturulamadı", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "Proje oluşturma işlemi 10 dakika sonra zaman aşımına uğradı. Lütfen ad alanının oluşturulup oluşturulmadığını kontrol edin ve yeniden deneyin.", - "Project Description": "Proje Açıklaması", - "Project Name": "Proje Adı", - "Project name is available": "Proje adı kullanılabilir", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "Proje adı yalnızca küçük harflerden, rakamlardan ve kısa çizgilerden oluşabilir (boşluk kullanılmaz)", - "Project Status": "Proje Durumu", - "Pull requests": "Çekme istekleri", + "Select Source": "Kaynak Seçin", + "Choose a source for your deployment (container image, repo, etc.).": "Dağıtımınız için bir kaynak seçin (kapsayıcı görüntüsü, depo vb.).", + "Deployment source": "Dağıtım kaynağı", + "Features": "Özellikler", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "Kimlik Kaynağı Grubu", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "Mevcut kimlik kontrol ediliyor...", + "Creating managed identity...": "Yönetilen kimlik oluşturuluyor...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "Geçersiz YAML: gerekli alan eksik (kind)", + "Invalid YAML: List resource must have an array \"items\" field": "Geçersiz YAML: Liste kaynağında \"items\" adlı bir dizi alanı olmalıdır", + "Invalid YAML: List item missing required field (kind)": "Geçersiz YAML: Liste öğesinde gerekli alan (kind) eksik", + "Invalid YAML: List item missing required field (metadata.name)": "Geçersiz YAML: Liste öğesinde gerekli alan (metadata.name) eksik", + "Invalid YAML: missing required field (metadata.name)": "Geçersiz YAML: gerekli alan eksik (metadata.name)", + "Invalid YAML": "YAML geçersiz", + "Validation failed": "Doğrulama başarısız oldu", + "Failed to apply": "Uygulanamadı", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "Kaynak {{applied}} uygulandı, ancak {{failed}} başarısız oldu:\n{{errors}}", + "Applied {{count}} resource(s) successfully._one": "{{count}} kaynak başarıyla uygulandı.", + "Applied {{count}} resource(s) successfully._other": "{{count}} kaynak başarıyla uygulandı.", + "Failed to apply resources.": "Kaynaklar uygulanamadı.", + "unnamed": "adsız", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "İçindekiler", "Push agent config files": "Aracı yapılandırma dosyalarını gönder", - "Re-deploy": "Yeniden dağıt", - "Read only root filesystem": "Salt okunur kök dosya sistemi", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "Ad alanındaki çoğu nesneye yalnızca okuma erişimi vardır. Rolleri, rol bağlamalarını veya Gizli Dizileri görüntüleyemez.", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "Ad alanındaki çoğu nesneye okuma/yazma erişimi vardır. Roller veya rol bağlamalarını görüntüleyemez veya değiştiremez. Gizli Dizilere erişebilir ve Podları ad alanındaki herhangi bir ServiceAccount olarak çalıştırabilir.", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "Ad alanındaki çoğu kaynağa okuma/yazma erişimi vardır. Ad alanı içinde roller ve rol bağlamaları oluşturabilir. Kaynak kotasına veya ad alanının kendisine yazamaz.", - "Readiness path": "Hazırlık yolu", - "Ready": "Hazır", - "Refresh": "Yenile", - "Refreshing": "Yenileniyor", - "Register AKS Cluster": "AKS Kümesini Kaydet", - "Register Cluster": "Kümeyi Kaydet", - "Register ManagedNamespacePreview Feature": "ManagedNamespacePreview Özelliğini Kaydet", - "Registering": "Kaydediliyor", - "Registering cluster": "Küme kaydediliyor", - "Regular": "Normal", - "Regular Kubernetes namespace": "Normal Kubernetes ad alanı", - "remove": "kaldır", - "Remove assignee": "Atananı kaldır", - "Reopen install page": "Yükleme sayfasını yeniden aç", - "Replica Bounds": "Çoğaltma Sınırları", - "Replicas": "Çoğaltmalar", - "Request & error rate": "İstek ve hata oranı", - "Request Rate": "İstek Oranı", - "Requests": "İstekler", - "Required Permissions": "Gerekli İzinler", - "Resource Group": "Kaynak Grubu", - "Resource group where the managed identity will be created": "Yönetilen kimliğin oluşturulacağı kaynak grubu", - "Resource Limits": "Kaynak Sınırları", - "Resource Usage": "Kaynak Kullanımı", - "Resources to be deployed ({{count}} object)_one": "Dağıtılacak kaynaklar ({{count}} nesne)", - "Resources to be deployed ({{count}} object)_other": "Dağıtılacak kaynaklar ({{count}} nesne)", - "Response Time": "Yanıt Süresi", - "Restarts": "Yeniden başlatmalar", - "Retry": "Yeniden dene", - "Review": "Gözden Geçir", - "Review & Deploy": "Gözden Geçir ve Dağıt", - "Review & Merge": "İncele ve Birleştir", - "Review and merge the setup PR to enable the Copilot agent.": "Copilot aracısını etkinleştirmek için kurulum PR’sini inceleyin ve birleştirin.", - "Review on GitHub": "GitHub’da Önizle", - "Review Project Configuration": "Proje Yapılandırmasını Gözden Geçir", - "Role": "Rol", - "Role Assignment": "Rol Ataması", - "Run as non root user": "Kök olmayan kullanıcı olarak çalıştır", + "Workflows": "İş Akışları", + "Create setup workflow in .github/workflows/": ".github/workflows/ içinde kurulum iş akışı oluştur", + "Pull requests": "Çekme istekleri", + "Create deployment PRs": "Dağıtım PR'si oluştur", + "Issues": "Sorunlar", + "Track agent progress": "Aracı ilerlemesini izle", "Run deployment workflows": "Dağıtım iş akışlarını çalıştır", - "Save": "Kaydet", - "Scaled down": "Ölçek azaltıldı", - "Scaling": "Ölçeklendiriliyor", - "Scaling Chart Unavailable": "Ölçeklendirme Grafiği Kullanılamıyor", - "Scaling History (Last 24 Hours)": "Ölçeklendirme Geçmişi (Son 24 Saat)", - "Scaling Mode": "Ölçeklendirme Modu", - "Scaling Overview": "Ölçeklendirmeye Genel Bakış", - "Search clusters": "Küme ara", - "Search subscriptions": "Abonelik ara", - "Select a cluster": "Küme seçin", - "Select a deployment to view metrics": "Ölçümleri görüntülemek için bir dağıtım seçin", - "Select a deployment to view scaling metrics": "Ölçeklendirme ölçümlerini görüntülemek için bir dağıtım seçin", - "Select a subscription": "Abonelik seçin", - "Select All": "Tümünü Seç", - "Select an AKS cluster": "AKS kümesi seçin", - "Select an Azure subscription": "Bir Azure aboneliği seçin", - "Select an option": "Bir seçenek belirtin", - "Select Deployment": "Dağıtım Seç", - "Select Namespaces to Import": "İçeri Aktarılacak Ad Alanlarını Seçin", + "Connect to GitHub": "GitHub’a Bağlan", + "Connected to '{{username}}'.": "'{{username}}' adlı kullanıcıya bağlı.", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "AKS Masaüstü'nü deponuzda dağıtım veri hatları oluşturması için yetkilendirin.", + "Required Permissions": "Gerekli İzinler", + "Complete authorization on your browser screen": "Tarayıcı ekranında yetkilendirmeyi tamamla", + "Connect": "Bağlan", "Select repository": "Depo seçin", - "Select Source": "Kaynak Seçin", - "Selected Cluster Details": "Seçili Küme Ayrıntıları", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "Seçilen küme kubeconfig dosyasında yok. Devam etmeden önce dosyaya kaydedin.", - "Service port": "Hizmet bağlantı noktası", - "Service type": "Hizmet türü", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "Kaynak ayırmayı kontrol etmek ve kapsayıcıların küme kaynakları tüketiminin aşırı düzeylerde olmaması için CPU ve bellek isteklerini (garantili kaynaklar) ve sınırlarını (maksimum kaynaklar) ayarlayın.", - "Set quota limits to prevent overuse and maintain cluster stability": "Fazla kullanımı önlemek ve küme kararlılığını korumak için kota sınırlarını ayarlayın", - "Set security, communication and access rules for incoming and outgoing traffic": "Gelen ve giden trafik için güvenlik, iletişim ve erişim kurallarını ayarlayın", - "Set the desired number of pod replicas for this deployment": "Bu dağıtım için istenen pod çoğaltma sayısını ayarlayın", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "Dağıtımlarınızı otomatikleştirmek ve iş akışınızı kolaylaştırmak için bir CI/CD işlem hattı kurun", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "Azure Kubernetes Service (AKS) içinde yeni bir proje ayarlayın ve yapılandırın", - "Set up Copilot Agent": "Copilot Aracısını ayarlayın", - "Set up your pipeline": "İşlem hattını ayarla", - "Setting up Copilot agent...": "Copilot aracısı ayarlanıyor...", - "Setup PR Created": "Kurulum PR'sı Oluşturuldu", - "Setup PR reviewed and merged": "Kurulum PR’si incelendi ve birleştirildi", - "Sign in": "Oturum aç", - "Sign in to GitHub": "GitHub'da oturum aç", - "Sign in to GitHub to view pipeline runs.": "İşlem hattı çalıştırmalarını görüntülemek için GitHub’da oturum açın.", - "Sign in with Azure": "Azure’da oturum açın", - "Sign in with your Azure account to manage AKS clusters and resources": "AKS kümelerini ve kaynaklarını yönetmek için Azure hesabınızla oturum açın", - "Source": "Kaynak", - "Starting project creation": "Proje oluşturma başlatılıyor", - "Startup path": "Başlangıç yolu", - "Status": "Durum", - "Subscription": "Abonelik", - "Successfully merged {{count}} cluster(s)_one": "{{count}} küme başarıyla birleştirildi", - "Successfully merged {{count}} cluster(s)_other": "{{count}} küme başarıyla birleştirildi", - "successThreshold": "successThreshold", - "Target CPU utilization": "Hedef CPU kullanımı", - "Target CPU Utilization (%)": "Hedef CPU Kullanımı (%)", - "Target port": "Hedef bağlantı noktası", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Aracı dağıtım PR’sini oluşturdu. Oluşturulan dosyaları inceleyin ve dağıtım işlem hattını başlatmak için birleştirin.", - "The agent is creating the setup PR to enable the Copilot agent.": "Aracı, Copilot aracısını etkinleştirmek için kurulum PR’sini oluşturuyor.", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "Yüklemeyi tarayıcınızda tamamlayın. Uygulama {{repoName}} üzerinde yüklendiğinde otomatik olarak güncellenecektir.", "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "Devam etmek için AKS Desktop GitHub Uygulamasının {{repoName}} üzerinde yüklenmiş olması gerekir.", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "Yönetilen ad alanları oluşturmak için aks-preview uzantısı gereklidir. Devam etmek için lütfen bunu yükleyin.", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot kodlama aracısı deponuzu analiz ediyor ve Dockerfile, Kubernetes bildirimleri ve GitHub Actions iş akışı içeren bir dağıtım PR’si oluşturuyor.", - "The following addons can be enabled on this cluster:": "Bu kümede aşağıdaki eklentiler etkinleştirilebilir:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "GitHub Actions işlem hattınızın AKS kümenizle kimlik doğrulaması yapabilmesi için aşağıdaki Azure kaynakları oluşturulacak:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Aşağıdaki ad alanları, bu etiketler eklenerek AKS Masaüstü projelerine dönüştürülecek:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "Canlılık kontrolü için HTTP yolu (örneğin, /healthz). Yoklama bu yola bir HTTP GET isteği gönderir.", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "Hazırlık durumunu kontrol etmek için HTTP yolu (örneğin, /ready). Yoklama bu yola bir HTTP GET isteği gönderir.", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "Başlatma durumunu kontrol etmek için HTTP yolu (örneğin, /startup). Yoklama bu yola bir HTTP GET isteği gönderir.", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "Yönetilen ad alanları oluşturmak için ManagedNamespacePreview özelliği kayıtlı olmalıdır.", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "Kapsayıcının kullanabileceği maksimum CPU miktarı. Aşılması durumunda kapsayıcı kısıtlanır.", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "Kapsayıcının kullanabileceği maksimum bellek miktarı. Aşılması durumunda kapsayıcı sonlandırılır (OOMKilled).", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "CPU kullanımı yüksek olduğunda HPA'nın ölçeğini artırabileceği maksimum pod çoğaltma sayısı.", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "Kapsayıcıya garanti edilen minimum CPU miktarı. Kubernetes, podu en az bu kadar kullanılabilir CPU'ya sahip bir düğümde zamanlar.", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "Kapsayıcıya garanti edilen minimum bellek miktarı. Kubernetes, podu en az bu kadar kullanılabilir belleğe sahip bir düğümde zamanlar.", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "CPU kullanımı düşük olsa bile HPA'nın koruyacağı minimum pod çoğaltma sayısı.", - "The namespace will be created on the selected cluster and set up as a project": "Ad alanı seçili kümede oluşturulacak ve proje olarak ayarlanacak", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "Çalıştırılacak pod çoğaltma sayısı. Daha fazla çoğaltma daha iyi kullanılabilirlik ve yük dağılımı sağlar.", - "The operation may still be running on GitHub. Check the link above for the latest status.": "İşlem GitHub üzerinde hala devam ediyor olabilir. En son durumu görmek için yukarıdaki bağlantıyı kontrol edin.", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes hizmeti tarafından açılan bağlantı noktası numarası. Bu bağlantı noktasına gelen trafik hedef bağlantı noktasına iletilir.", - "The port number that your container listens on. This is the port inside the container where your application runs.": "Kapsayıcınızın dinlediği bağlantı noktası numarası. Bu, uygulamanızın kapsayıcı içinde çalıştığı bağlantı noktasıdır.", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "Tüm podlarda hedef ortalama CPU kullanım yüzdesi. CPU kullanımı bu değeri aştığında HPA ölçeği artırır, bu değerin altına düştüğünde ölçeği azaltır.", - "There are no deployments in this project namespace yet.": "Bu proje ad alanında henüz dağıtım yok.", + "Reopen install page": "Yükleme sayfasını yeniden aç", + "Install GitHub App": "GitHub Uygulamasını Yükle", + "Checking...": "Denetleniyor...", + "Connecting to GitHub...": "GitHub'a bağlanılıyor...", + "Connect GitHub": "GitHub Bağla", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "Bağlı", + "Sign in to GitHub": "GitHub'da oturum aç", + "Failed to load repositories": "Depolar yüklenemedi", + "Filter repositories": "Depoları filtrele", + "No repositories match your filter": "Filtrenizle eşleşen depo yok", + "No repositories found": "Depo bulunamadı", + "less than a minute": "bir dakikadan daha kısa", + "{{count}} min_one": "{{count}} dk", + "{{count}} min_other": "{{count}} dk", + "Up next": "Sıradaki", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "Birleştirme durumu denetleniyor...", "This is taking longer than expected. Check the PR on GitHub for the latest status.": "Bu işlem beklenenden uzun sürüyor. En güncel durum için GitHub’da PR’yi kontrol edin.", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "Bu bir izin sorunu olabilir. GitHub Uygulama izinlerinizi kontrol edip yeniden deneyin.", "This PR was closed without merging. You may need to restart the process.": "Bu PR birleştirilmeden kapatıldı. İşlemi yeniden başlatmanız gerekebilir.", + "Review on GitHub": "GitHub’da Önizle", + "Agent is working": "Aracı çalışıyor", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot kodlama aracısı deponuzu analiz ediyor ve Dockerfile, Kubernetes bildirimleri ve GitHub Actions iş akışı içeren bir dağıtım PR’si oluşturuyor.", + "Issue {{number}}": "Sorun {{number}}", + "Waiting for agent workflow to start...": "Aracı iş akışının başlaması bekleniyor...", "This typically takes 10–25 minutes.": "Genellikle 10-25 dakika sürer.", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Toplam Pod Sayısı", - "Track agent progress": "Aracı ilerlemesini izle", - "Trigger": "Tetikleyici", - "Trigger Copilot Agent": "Copilot Aracısını Tetikle", - "Triggering...": "Tetikleniyor...", + "Pipeline configured": "İşlem hattı yapılandırıldı", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} için CI/CD işlem hattı hazır. Dağıtımlar sekmesinden dağıtımları tetikleyin.", + "Setup PR reviewed and merged": "Kurulum PR’si incelendi ve birleştirildi", + "Copilot agent reviewed your repo and generated deployment PR": "Copilot aracısı deponuzu inceledi ve dağıtım PR’si oluşturdu.", + "Deployment PR reviewed and merged": "Dağıtım PR’sı incelendi ve birleştirildi", + "View deployment": "Dağıtımı görüntüle", + "You can collapse this panel. Progress is saved and will resume when you return.": "Bu paneli daraltabilirsiniz. İlerleme kaydedilir ve geri döndüğünüzde işlem devam eder.", + "Creating setup PR...": "Kurulum PR'si oluşturuluyor...", + "The agent is creating the setup PR to enable the Copilot agent.": "Aracı, Copilot aracısını etkinleştirmek için kurulum PR’sini oluşturuyor.", + "Setup PR Created": "Kurulum PR'sı Oluşturuldu", + "Review and merge the setup PR to enable the Copilot agent.": "Copilot aracısını etkinleştirmek için kurulum PR’sini inceleyin ve birleştirin.", + "Setting up Copilot agent...": "Copilot aracısı ayarlanıyor...", + "Creating the trigger issue for the Copilot coding agent.": "Copilot kodlama aracısı için tetikleyici sorunu oluşturuluyor.", + "Deployment PR Ready": "Dağıtım PR'si Hazır", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Aracı dağıtım PR’sini oluşturdu. Oluşturulan dosyaları inceleyin ve dağıtım işlem hattını başlatmak için birleştirin.", + "Copilot agent": "Copilot aracısı", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "Birleştirmeden sonra, Copilot aracısı deponuzu analiz eder ve bir dağıtım PR’si oluşturur.", + "Deployment PR": "Dağıtım PR’si", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Aracı dağıtım PR’sini oluşturduktan sonra, oluşturulan dosyaları inceleyin ve dağıtım işlem hattını başlatmak için birleştirin.", + "Connect Source": "Kaynak Bağla", + "Set up Copilot Agent": "Copilot Aracısını ayarlayın", + "Review & Merge": "İncele ve Birleştir", + "Collapse panel": "Paneli daralt", + "Keep Going": "Devam Et", + "Discard": "At", + "Canceling will discard your pipeline progress. Are you sure?": "İptal ettiğinizde işlem hattındaki ilerlemeniz kaybedilir. Emin misiniz?", + "Ensuring resource group exists...": "Kaynak grubunun var olduğu doğrulanıyor...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "Şirket dışındaki kimlik bilgileri yapılandırılıyor...", + "Workload identity configured": "İş yükü kimliği yapılandırıldı", + "Configure Workload Identity": "İş Yükü Kimliğini Yapılandır", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "GitHub Actions işlem hattınızın AKS kümenizle kimlik doğrulaması yapabilmesi için aşağıdaki Azure kaynakları oluşturulacak:", + "Managed Identity": "Yönetilen Kimlik", + "in resource group": "kaynak grubunda", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "Şirket Dışındaki Kimlik Bilgileri", + "OIDC trust for": "OIDC güveni:", + "branch": "dallan", + "Resource group where the managed identity will be created": "Yönetilen kimliğin oluşturulacağı kaynak grubu", + "Workload identity configured successfully.": "İş yükü kimliği başarıyla yapılandırıldı.", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "Bu bir izin sorunu olabilir. GitHub Uygulama izinlerinizi kontrol edip yeniden deneyin.", + "The operation may still be running on GitHub. Check the link above for the latest status.": "İşlem GitHub üzerinde hala devam ediyor olabilir. En son durumu görmek için yukarıdaki bağlantıyı kontrol edin.", "Try again, or check GitHub for details.": "Yeniden deneyin veya ayrıntılar için GitHub'a bakın.", - "Type": "Tür", + "Initializing...": "Başlatılıyor...", + "Checking repository readiness...": "Depo hazırlık durumu denetleniyor...", + "Loading configuration...": "Yapılandırma yükleniyor...", "Unknown error": "Bilinmeyen hata", - "unnamed": "adsız", - "Up next": "Sıradaki", - "Update": "Güncelleştir", - "Updating": "Güncelleştiriliyor", - "Updating local settings": "Yerel ayarlar güncelleniyor", - "Upload files": "Dosyaları karşıya yükle", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "ClusterIP kullanın. Yalnızca küme içinde erişilebilen hizmetler için daha uygunudur.", - "Use custom service port": "Özel hizmet bağlantı noktası kullanın", - "Use existing manifests for full control": "Tam denetim için mevcut bildirimleri kullanın", - "User assignment completed with errors": "Kullanıcı ataması hatalarla tamamlandı", - "Validation failed": "Doğrulama başarısız oldu", - "Value": "Değer", - "View deployment": "Dağıtımı görüntüle", - "View on GitHub": "GitHub'da Görüntüle", - "View run on GitHub": "GitHub'da çalıştırmayı görüntüle", - "View workflow run": "İş akışı çalıştırmasını görüntüle", - "VPA (Vertical Pod Autoscaler)": "VPA (Dikey Pod Otomatik Ölçeklendirici)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "Aracı iş akışının başlaması bekleniyor...", - "Waiting for browser authorization...": "Tarayıcı yetkilendirmesi bekleniyor...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "Oturum açma işleminin tamamlanması bekleniyor... ({{minutes}} dakika kaldı)", - "Waiting for namespace to be created": "Ad alanının oluşturulması bekleniyor", - "Waiting for namespace to propagate": "Ad alanının yayılması bekleniyor", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "Uyarı: Bu eylem geri alınamaz. Bu ad alanlarındaki tüm kaynaklar kalıcı olarak silinecek.", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "Bir yoklama başarısız olduğunda, Kubernetes vazgeçmeden ve kapsayıcıyı yeniden başlatmadan önce bunu çok kez dener.", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "Bir yoklama başarısız olduğunda, Kubernetes vazgeçmeden önce bunu çok kez dener. Başlangıç yoklamaları için, yeniden başlatmadan önce ne kadar bekleneceğini belirler.", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "Bir yoklama başarısız olduğunda, Kubernetes pod'u hazır değil olarak işaretlemeden önce çok kez dener.", + "Trigger Copilot Agent": "Copilot Aracısını Tetikle", + "Create Setup PR": "Kurulum PR'si oluştur", + "Failed to fetch deployment status": "Dağıtım durumu getirilemedi", + "Failed to fetch pod status": "Pod durumu getirilemedi", + "Failed to fetch service status": "Hizmet durumu alınamadı", + "Failed to monitor deployment health": "Dağıtım durumu izlenemedi", + "Convert Namespaces to AKS Projects": "Ad Alanlarını AKS Projelerine Dönüştür", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "Aşağıdaki ad alanları, bu etiketler eklenerek AKS Masaüstü projelerine dönüştürülecek:", + "managed namespaces only": "yalnızca yönetilen ad alanları", + "Namespaces to convert:": "Dönüştürülecek ad alanları:", + "Already AKS projects (will import directly):": "Zaten AKS projeleri (doğrudan içeri aktarılacak):", + "Converting": "Dönüştürülüyor", + "Confirm & Import": "Onayla ve İçeri Aktar", + "Please select at least one namespace to import": "İçeri aktarmak için lütfen en az bir ad alanı seçin", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "{{clusterName}} kümesi normal ad alanlarını içeri aktarmadan önce kaydedilmelidir. Önce bu kümeden yönetilen bir ad alanını içeri aktarın.", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "{{clusterName}} kümesi birleştiriliyor ({{count}} ad alanı)", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "{{clusterName}} kümesi birleştiriliyor ({{count}} ad alanı)", + "Failed to merge cluster: {{message}}": "Küme birleştirilemedi: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "{{name}} AKS projesine dönüştürülüyor (bu işlem biraz zaman alabilir)...", + "Failed to convert namespace: {{message}}": "Ad alanı dönüştürülemedi: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "{{current}}/{{total}} içeri aktarılıyor: {{clusterName}} kümesinden {{name}}", + "Project '{{name}}' successfully imported": "'{{name}}' projesi başarıyla içeri aktarıldı", + "Namespace '{{name}}' converted and imported as project": "'{{name}}' ad alanı dönüştürüldü ve proje olarak içeri aktarıldı", + "Successfully merged {{count}} cluster(s)_one": "{{count}} küme başarıyla birleştirildi", + "Successfully merged {{count}} cluster(s)_other": "{{count}} küme başarıyla birleştirildi", "with {{count}} project(s)_one": "{{count}} proje ile", "with {{count}} project(s)_other": "{{count}} proje ile", - "with the following parameters:": "aşağı parametrelerle:", - "Wizard steps": "Sihirbaz adımları", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "İş akışı gönderme işlemi başarıyla tetiklendi. İlerlemeyi GitHub Actions'ta kontrol edin.", - "workflow on": "iş akışı:", - "Workflows": "İş Akışları", - "Workload identity configured": "İş yükü kimliği yapılandırıldı", - "Workload identity configured successfully.": "İş yükü kimliği başarıyla yapılandırıldı.", - "Workloads": "İş yükleri", + "{{count}} failed._one": "{{count}} başarısız oldu.", + "{{count}} failed._other": "{{count}} başarısız oldu.", + "Failed to import any projects. See details below.": "Hiçbir proje içeri aktarılamadı. Aşağıdaki ayrıntılara bakın.", + "Import AKS Projects": "AKS Projelerini İçeri Aktar", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "Mevcut yönetilen ad alanlarını ve normal ad alanlarını proje olarak içeri aktarın. Henüz AKS Masaüstü projesi olmayan ad alanları, gerekli proje etiketi eklenerek dönüştürülecek.", + "Select Namespaces to Import": "İçeri Aktarılacak Ad Alanlarını Seçin", + "{{count}} selected_one": "{{count}} seçildi", + "{{count}} selected_other": "{{count}} seçildi", + "Select All": "Tümünü Seç", + "Deselect All": "Tümünün Seçimini Kaldır", + "AKS Managed": "AKS Tarafından Yönetilen", + "Regular": "Normal", + "AKS Project?": "AKS Projesi Mi?", "Yes": "Evet", - "You can collapse this panel. Progress is saved and will resume when you return.": "Bu paneli daraltabilirsiniz. İlerleme kaydedilir ve geri döndüğünüzde işlem devam eder.", - "You need to be logged in to Azure to register AKS clusters.": "AKS kümelerini kaydetmek için Azure hesabınızda oturum açmanız gerekir.", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "\"{{projectName}}\" AKS projeniz oluşturuldu ve kullanıma hazır.", - "Your project \"{{projectName}}\" is ready to use.": "\"{{projectName}}\" projeniz kullanıma hazır." + "No": "Hayır", + "Importing": "İçeri aktarılıyor", + "Import Selected Projects": "Seçili Projeleri İçeri Aktar", + "Failed to fetch managed namespaces": "Yönetilen ad alanları getirilemedi", + "Failed to fetch managed namespace details": "Yönetilen ad alanı ayrıntıları getirilemedi", + "Failed to update managed namespace": "Yönetilen ad alanı güncelleştirilemedi", + "Updating": "Güncelleştiriliyor", + "Update": "Güncelleştir", + "AKS desktop logo": "AKS masaüstü logosu", + "No Deployments Found": "Hiç Dağıtım Bulunamadı", + "There are no deployments in this project namespace yet.": "Bu proje ad alanında henüz dağıtım yok.", + "Deploy an application to view logs.": "Günlükleri görüntülemek için bir uygulama dağıtın.", + "Metrics": "Ölçümler", + "CPU Usage": "CPU Kullanımı", + "Memory Usage": "Bellek Kullanımı", + "Request Rate": "İstek Oranı", + "Error Rate": "Hata Oranı", + "Metrics refreshed every 30 seconds": "Ölçümler 30 saniyede bir yenilenir", + "Select a deployment to view metrics": "Ölçümleri görüntülemek için bir dağıtım seçin", + "Metrics Unavailable": "Ölçümler Kullanılamıyor", + "Application Metrics": "Uygulama Ölçümleri", + "Request & error rate": "İstek ve hata oranı", + "No data available": "Kullanılabilir veri yok", + "Response Time": "Yanıt Süresi", + "Memory utilization": "Bellek kullanımı", + "Network I/O": "Ağ G/Ç", + "Deploy an application to start viewing metrics.": "Ölçümleri görüntülemeye başlamak için bir uygulama dağıtın.", + "Please select a deployment to view metrics": "Ölçümleri görüntülemek için lütfen bir dağıtım seçin", + "Project Status": "Proje Durumu", + "Total Pods": "Toplam Pod Sayısı", + "Application Health": "Uygulama Sistem Durumu", + "Loading metrics": "Ölçümler yükleniyor", + "Resource Usage": "Kaynak Kullanımı", + "Avg Response Time": "Ortalama Yanıt Süresi", + "No response time data available": "Yanıt süresi verisi yok", + "Absolute usage": "Mutlak kullanım", + "Network In": "Ağa Gelen", + "Network Out": "Ağdan Giden", + "Pod Details": "Pod Ayrıntıları", + "Pod Name": "Pod Adı", + "Restarts": "Yeniden başlatmalar", + "No pods found for deployment \"{{name}}\"": "\"{{name}}\" dağıtımı için pod bulunamadı", + "Preview Features": "Önizleme Özellikleri", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "Hala geliştirme aşamasında olan özellikleri etkinleştirin veya devre dışı bırakın. Önizleme özellikleri gelecekteki sürümlerde değişebilir veya kaldırılabilir.", + "GitHub Pipelines": "GitHub İşlem Hatları", + "Enable GitHub-based deployment pipelines for AKS projects.": "AKS projeleri için GitHub tabanlı dağıtım işlem hatlarını etkinleştirin.", + "Loading scaling metrics from Prometheus": "Prometheus'dan ölçeklendirme ölçümleri yükleniyor", + "Scaling Chart Unavailable": "Ölçeklendirme Grafiği Kullanılamıyor", + "No scaling data available": "Kullanılabilir ölçeklendirme verisi yok", + "Edit HPA Configuration": "HPA Yapılandırmasını Düzenle", + "Edit Manual Scaling Configuration": "El ile Ölçeklendirme Yapılandırmasını Düzenle", + "Minimum Replicas": "Minimum Çoğaltma Sayısı", + "Maximum Replicas": "Maksimum Çoğaltma Sayısı", + "Target CPU Utilization (%)": "Hedef CPU Kullanımı (%)", + "Number of Replicas": "Çoğaltmaların Sayısı", + "Set the desired number of pod replicas for this deployment": "Bu dağıtım için istenen pod çoğaltma sayısını ayarlayın", + "Save": "Kaydet", + "Scaling Mode": "Ölçeklendirme Modu", + "Current Replicas": "Geçerli Çoğaltmalar", + "Desired Replicas": "İstenen Çoğaltmalar", + "Configured Replicas": "Yapılandırılan Çoğaltmalar", + "Replica Bounds": "Çoğaltma Sınırları", + "Available Replicas": "Kullanılabilir Çoğaltmalar", + "CPU Usage / Target": "CPU Kullanımı / Hedef", + "Scaling": "Ölçeklendiriliyor", + "Select a deployment to view scaling metrics": "Ölçeklendirme ölçümlerini görüntülemek için bir dağıtım seçin", + "Scaling Overview": "Ölçeklendirmeye Genel Bakış", + "Edit Configuration": "Yapılandırmayı Düzenle", + "Scaling History (Last 24 Hours)": "Ölçeklendirme Geçmişi (Son 24 Saat)", + "Copied!": "Kopyalandı!", + "Copy": "Kopyala", + "Copy to clipboard": "Panoya kopyala", + "No deployments found": "Dağıtım bulunamadı", + "Select Deployment": "Dağıtım Seç", + "Loading deployments": "Dağıtımlar yükleniyor", + "No cluster is associated with this project.": "Bu projeyle ilişkili küme yok.", + "Please sign in to Azure to continue.": "Devam etmek için lütfen Azure’da oturum açın.", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "Gerekli Azure bağlamı eksik. Lütfen oturum açtığınızdan ve kümenin geçerli bir abonelik, kaynak grubu ve kiracıyla ilişkili olduğundan emin olun.", + "Failed to load Azure context": "Azure bağlamı yüklenemedi", + "just now": "az önce", + "{{seconds}}s ago": "{{seconds}} saniye önce", + "{{minutes}} min ago": "{{minutes}} dakika önce", + "{{hours}}h ago": "{{hours}} saat önce", + "{{days}}d ago": "{{days}} gün önce", + "{{weeks}}w ago": "{{weeks}} hafta önce" } diff --git a/plugins/aks-desktop/locales/zh-Hans/translation.json b/plugins/aks-desktop/locales/zh-Hans/translation.json index 15f351e7c..6e129af82 100644 --- a/plugins/aks-desktop/locales/zh-Hans/translation.json +++ b/plugins/aks-desktop/locales/zh-Hans/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "范围限定为资源组的“AKS 群集用户角色”", - "(already enabled)": "(已启用)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} 个群集隐藏 - 无 Azure Entra ID", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} 个群集隐藏 - 无 Azure Entra ID", - "{{count}} eligible cluster(s) found._one": "找到 {{count}} 个符合条件的群集。", - "{{count}} eligible cluster(s) found._other": "找到 {{count}} 个符合条件的群集。", - "{{count}} failed._one": "{{count}} 个失败。", - "{{count}} failed._other": "{{count}} 个失败。", - "{{count}} min_one": "{{count}} 分钟", - "{{count}} min_other": "{{count}} 分钟", - "{{count}} selected_one": "已选择 {{count}} 个", - "{{count}} selected_other": "已选择 {{count}} 个", - "{{days}}d ago": "{{days}} 天前", - "{{hours}}h ago": "{{hours}} 小时前", - "{{minutes}} min ago": "{{minutes}} 分钟前", - "{{seconds}}s ago": "{{seconds}} 秒前", - "{{weeks}}w ago": "{{weeks}} 周前", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "必须选择群集", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "将在该群集上创建新的命名空间并应用项目标签。它将立即显示在项目列表中。", - "Absolute usage": "绝对使用情况", - "Access": "访问", - "Access Control ({{count}} assignee)_one": "访问控制({{count}} 个被分配者)", - "Access Control ({{count}} assignee)_other": "访问控制({{count}} 个被分派人)", - "Actions": "操作", - "Add assignee": "添加被分配者", - "Add Cluster from Azure": "从 Azure 添加群集", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "添加一个或多个 Kubernetes 清单。上传文件以填充编辑器或直接在下方粘贴/编辑。", - "Add variable": "添加变量", - "Advanced": "高级", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "合并后,Copilot 智能体将分析存储库并创建部署 PR", - "Agent is working": "智能体正在工作", + "Failed to load subscriptions": "无法加载订阅", + "Failed to load AKS clusters": "未能加载 AKS 群集", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "群集“{{cluster}}”已成功合并到 kubeconfig 中", + "Failed to register cluster: {{message}}": "未能注册群集: {{message}}", + "Register AKS Cluster": "注册 AKS 群集", + "Checking authentication status": "正在检查身份验证状态", + "You need to be logged in to Azure to register AKS clusters.": "你需要登录 Azure 才能注册 AKS 群集。", + "Subscription": "订阅", + "Select an Azure subscription": "选择 Azure 订阅", + "Loading subscriptions": "正在加载订阅", + "Loading AKS clusters": "正在加载 AKS 群集", + "No AKS clusters found in this subscription.": "此订阅中未找到任何 AKS 群集。", "AKS Cluster": "AKS 群集", - "AKS desktop logo": "AKS 桌面徽标", - "AKS Managed": "AKS 托管", - "AKS Preview Extension installed successfully!": "已成功安装 AKS 预览扩展!", - "AKS Preview Extension Required": "需要 AKS 预览扩展", - "AKS Project?": "AKS 项目?", - "All selected addons have been enabled successfully.": "已成功启用所有选择的加载项。", - "All verifications completed successfully!": "所有验证都已成功完成!", - "Allow all traffic": "允许所有流量", - "Allow privilege escalation": "允许特权提升", - "Allow traffic within same namespace": "允许同一命名空间中的流量", - "Already AKS projects (will import directly):": "已是 AKS 项目(将直接导入):", - "Also delete the namespaces (this will remove all resources within them)": "同时删除命名空间(这将移除其中的所有资源)", - "Another project already exists with same name. Please choose a different name.": "已存在具有相同名称的另一个项目。请选择其他名称。", - "Application Health": "应用程序运行状况", - "Application Metrics": "应用程序指标", - "Application name": "应用程序名称", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "已应用 {{applied}} 个资源,但 {{failed}} 个失败:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "已成功应用 {{count}} 个资源。", - "Applied {{count}} resource(s) successfully._other": "已成功应用 {{count}} 个资源。", - "Are you sure you want to delete project \"{{projectId}}\"?": "确定要删除项目“{{projectId}}”吗?", - "Assign permissions to users who need access to your namespace": "向需要访问你的命名空间的用户分配权限", - "Assignee": "代理人", - "Assigning AKS Cluster User Role...": "正在分配 AKS 群集用户角色...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "授权 AKS 桌面在存储库中创建部署管道。", - "Auto-generated Deployment and Service manifests": "自动生成的部署和服务清单", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "根据 CPU 利用率自动缩放 Pod 数。当 CPU 使用率超过目标时,HPA 会增加 Pod 数,并在低于目标时减少 Pod 数。", - "Available Replicas": "可用副本", - "Avg Response Time": "平均响应时间", - "Azure Account": "Azure 帐户", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "选择 AKS 群集", + "Selected Cluster Details": "所选群集详细信息", + "Name": "名称", + "Resource Group": "资源组", + "Location": "位置", + "Kubernetes Version": "Kubernetes 版本", + "Done": "完成", + "Cancel": "取消", + "Registering": "正在注册", + "Register Cluster": "注册群集", + "Initiating Azure login": "正在启动 Azure 登录", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "请在浏览器中完成身份验证。登录完成后,此窗口将自动重定向。", + "Login successful! Redirecting": "登录成功!正在重定向", + "Login timeout. Please try again.": "登录超时。请重试。", + "Waiting for login completion... ({{minutes}} minutes remaining)": "正在等待登录完成...(剩余 {{minutes}} 分钟)", + "Failed to initiate login: {{message}}": "启动登录失败: {{message}}", "Azure Authentication": "Azure 身份验证", - "Azure CLI/aks-preview requirements not met": "不满足 Azure CLI/aks-preview 要求", - "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor 指标(托管 Prometheus)", + "Sign in with your Azure account to manage AKS clusters and resources": "使用 Azure 帐户登录以管理 AKS 群集和资源", + "Sign in with Azure": "使用 Azure 登录", + "Loading Azure account information": "正在加载 Azure 帐户信息", "Back": "返回", - "Basics": "基本信息", - "branch": "分支", - "Bring your own Kubernetes manifests to deploy": "自带 Kubernetes 清单进行部署", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "默认情况下,探针在根路径使用带有合理默认值的 HTTP GET。启用此项可自定义探针设置。", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "默认情况下,服务端口与目标端口匹配。启用此功能可为服务使用其他端口。", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "默认情况下,这将从以下命名空间中移除 Azure 托管命名空间和项目标签:", - "Cancel": "取消", - "Canceling will discard your pipeline progress. Are you sure?": "取消将放弃管道进度。是否确定?", - "Cancelled deletion of project {{ projectId }}.": "已取消删除项目 {{ projectId }}。", - "Checking authentication status": "正在检查身份验证状态", - "Checking for existing identity...": "正在检查现有标识...", - "Checking if another project exists with same name": "检查是否存在具有相同名称的另一个项目", - "Checking merge status...": "正在检查合并状态...", - "Checking repository readiness...": "正在检查存储库就绪情况...", - "Checking...": "正在检查...", - "Choose a source for your deployment (container image, repo, etc.).": "为部署选择源(容器映像、存储库等)。", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} 的 CI/CD 管道已就绪。从“部署”选项卡触发部署。", - "Clear editor": "清除编辑器", - "Close": "关闭", - "Cluster": "群集", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "群集“{{cluster}}”已成功合并到 kubeconfig 中", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "在导入常规命名空间之前,必须先注册群集“{{clusterName}}”。请先从此群集中导入托管命名空间。", - "Cluster Configuration": "群集配置", - "Cluster is being deleted. Cannot deploy to this cluster.": "正在删除群集。无法部署到此群集。", + "Azure Account": "Azure 帐户", + "Logged in as": "当前登录身份为", + "Add Cluster from Azure": "从 Azure 添加群集", + "Logging out": "正在退出登录", + "Log out": "退出登录", + "Azure CLI/aks-preview requirements not met": "不满足 Azure CLI/aks-preview 要求", + "Dismiss": "取消", + "Configure Pipeline": "配置管道", + "Loading Azure context...": "正在加载 Azure 上下文...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "对命名空间中大多数对象的只读访问权限。无法查看角色、角色绑定或机密。", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "对命名空间中大多数对象的读/写访问权限。无法查看或修改角色或角色绑定。可以访问机密,并以命名空间中的任何 ServiceAccount 身份运行 Pod。", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "对命名空间中大多数资源的读/写访问权限。可以在命名空间中创建角色和角色绑定。无法写入资源配额或命名空间本身。", + "Access": "访问", + "Assign permissions to users who need access to your namespace": "向需要访问你的命名空间的用户分配权限", + "Assignee": "代理人", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "角色", + "Remove assignee": "移除被分派人", + "Add assignee": "添加被分配者", + "Only clusters with Azure Entra ID authentication are shown.": "仅显示启用 Azure Entra ID 身份验证的群集。", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "{{count}} 个群集隐藏 - 无 Azure Entra ID", + "No eligible clusters found in this subscription.": "此订阅中未找到符合条件的群集。", + "{{count}} eligible cluster(s) found._other": "找到 {{count}} 个符合条件的群集。", "Cluster is currently updating. Deployment may fail.": "群集当前正在更新。部署可能会失败。", - "Cluster is deallocated. Please start the cluster before deploying.": "群集已解除分配。请在部署之前启动群集。", - "Cluster is in a failed state. Please check Azure portal.": "群集处于失败状态。请检查 Azure 门户。", + "Cluster is being deleted. Cannot deploy to this cluster.": "正在删除群集。无法部署到此群集。", "Cluster is still being created. Please wait until creation completes.": "仍在创建群集。请等待创建完成。", + "Cluster is in a failed state. Please check Azure portal.": "群集处于失败状态。请检查 Azure 门户。", "Cluster is stopped. Please start the cluster before deploying.": "群集已停止。请在部署之前启动群集。", + "Cluster is deallocated. Please start the cluster before deploying.": "群集已解除分配。请在部署之前启动群集。", + "AKS Preview Extension Required": "需要 AKS 预览扩展", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "创建托管命名空间需要 aks-preview 扩展。请先安装以继续。", + "Installing": "正在安装", + "Install Extension": "安装扩展", + "AKS Preview Extension installed successfully!": "已成功安装 AKS 预览扩展!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "必须注册 ManagedNamespacePreview 功能才能创建托管命名空间。", + "Current state": "当前状态", + "Please register it to continue.": "请注册以继续。", + "Register ManagedNamespacePreview Feature": "注册 ManagedNamespacePreview 功能", + "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 功能已成功注册!", + "Project Name": "项目名称", + "Checking if another project exists with same name": "检查是否存在具有相同名称的另一个项目", + "Another project already exists with same name. Please choose a different name.": "已存在具有相同名称的另一个项目。请选择其他名称。", + "Project name is available": "此项目名称可用", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "项目名称只能包含小写字母、数字和连字符(无空格)", + "Project Description": "项目说明", + "Enter project description": "输入项目说明", + "Select a subscription": "选择订阅", + "Search subscriptions": "搜索订阅", + "No subscriptions found": "找不到任何订阅", + "Retry": "重试", + "Cluster": "群集", + "Please select a subscription first": "请先选择订阅", + "Loading clusters": "正在加载群集", + "Select a cluster": "选择群集", + "Search clusters": "搜索群集", + "No clusters with Azure Entra ID authentication found for this subscription": "此订阅中未找到启用 Azure Entra ID 身份验证的群集", "Cluster Not Ready": "群集未就绪", - "Collapse panel": "折叠面板", - "Complete authorization on your browser screen": "在浏览器屏幕上完成授权", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "在浏览器中完成安装。在 {{repoName}} 上安装应用后,此操作将自动更新。", - "Compute Quota": "计算配额", - "Configuration Complete": "配置完成", - "Configuration Error": "配置错误", + "Refreshing": "正在刷新", + "Refresh": "刷新", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "kubeconfig 中缺少所选群集。请先注册,然后继续。", + "Registering cluster": "正在注册群集", + "Wizard steps": "向导步骤", + "Azure Monitor Metrics (Managed Prometheus)": "Azure Monitor 指标(托管 Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (事件驱动的自动缩放)", + "VPA (Vertical Pod Autoscaler)": "VPA (垂直 Pod 自动缩放程序)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "配置用时超出预期。请检查 Azure 门户以确定群集的当前状态。", - "Configure": "配置", - "Configure Cluster": "配置群集", - "Configure Container Deployment": "配置容器部署", - "Configure container health probes.": "配置容器运行状况探测。", - "Configure Pipeline": "配置管道", - "Configure security context settings for the container.": "配置容器的安全上下文设置。", - "Configure Workload Identity": "配置工作负载标识", - "Configured Replicas": "已配置副本", + "Failed to enable addons": "未能启用加载项", + "Failed to enable addon: {{error}}": "未能启用加载项: {{error}}", + "Cluster Configuration": "群集配置", + "(already enabled)": "(已启用)", + "The following addons can be enabled on this cluster:": "可在此群集上启用以下加载项:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "创建群集后,无法更改网络策略引擎。创建新智能体方式", + "for full network policy support.": "以获取完整的网络策略支持。", + "Enabling these addons may incur additional Azure costs.": "启用这些加载项可能会产生额外的 Azure 成本。", + "Configuration Error": "配置错误", + "Configuration Complete": "配置完成", + "All selected addons have been enabled successfully.": "已成功启用所有选择的加载项。", "Configuring cluster... This may take a few minutes.": "正在配置群集...这可能需要几分钟时间。", - "Configuring federated credential...": "正在配置联合凭据...", + "Enabling Addons...": "正在启用加载项...", "Configuring...": "正在配置...", - "Confirm & Import": "确认并导入", - "Connect": "连接", - "Connect GitHub": "连接 GitHub", - "Connect Source": "连接源", - "Connect to GitHub": "连接到 GitHub", - "Connected": "已连接", - "Connected to '{{username}}'.": "已连接到 ‘{{username}}’。", - "Connecting to GitHub...": "正在连接到 GitHub...", - "Connecting...": "正在连接...", - "Container image": "容器映像", - "Container Image": "容器映像", - "Contents": "内容", - "Continue": "继续", - "Controls whether a process can gain more privileges than its parent process.": "控制进程是否可以获得比其父进程更多的权限。", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "控制进程是否可以获得比其父进程更多的权限。禁用此功能(推荐)可防止特权提升攻击。", - "Convert Namespaces to AKS Projects": "将命名空间转换为 AKS 项目", - "Converting": "正在转换", - "Converting {{name}} to AKS project (this may take a moment)...": "正在将{{name}}转换为 AKS 项目(这可能需要一些时间)...", - "Copied!": "已复制!", - "Copilot agent": "Copilot 智能体", - "Copilot agent reviewed your repo and generated deployment PR": "Copilot 智能体已查看存储库并生成部署 PR", - "Copy": "复制", - "Copy to clipboard": "复制到剪贴板", - "CPU": "CPU", - "CPU limit": "CPU 限制", - "CPU Limits": "CPU 限制", - "CPU request": "CPU 请求", - "CPU Requests": "CPU 请求", + "Configure Cluster": "配置群集", + "Compute Quota": "计算配额", + "Set quota limits to prevent overuse and maintain cluster stability": "设置配额限制以防止过度使用并保持群集稳定性", "CPU Resources": "CPU 资源", - "CPU Usage": "CPU 使用率", - "CPU Usage / Target": "CPU 使用率/目标", - "Create a new namespace on an existing cluster and set it up as a project": "在现有群集上创建新的命名空间并将其设置为项目", - "Create Application": "创建应用程序", - "Create deployment PRs": "创建部署 PR", - "Create Namespace": "创建命名空间", - "Create New Namespace": "创建新命名空间", - "Create Project": "创建项目", - "Create Setup PR": "创建设置 PR", - "Create setup workflow in .github/workflows/": "在 .github/workflows/ 中创建设置工作流", - "Creates a LoadBalancer to expose the application to the internet.": "创建 LoadBalancer 以向 Internet 公开应用程序。", - "Creating managed identity...": "正在创建托管标识...", - "Creating namespace": "正在创建命名空间", - "Creating Namespace": "正在创建命名空间", - "Creating Project": "正在创建项目", - "Creating setup PR...": "正在创建设置 PR...", - "Creating the trigger issue for the Copilot coding agent.": "为 Copilot 编码智能体创建触发器问题。", - "Current Replicas": "当前副本数", - "Current state": "当前状态", - "Degraded": "已降级", + "CPU Requests": "CPU 请求", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "保证的最小 CPU (1000m = 1 个 CPU 核心)", + "CPU Limits": "CPU 限制", + "Maximum CPU allowed (1000m = 1 CPU core)": "允许的最大 CPU (1000m = 1 个 CPU 核心)", + "Memory Resources": "内存资源", + "Memory Requests": "内存请求", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "保证的最小内存(1024 MiB = 1 GiB)", + "Memory Limits": "内存限制", + "Maximum memory allowed (1024 MiB = 1 GiB)": "允许的最大内存(1024 MiB = 1 GiB)", + "Basics": "基本信息", + "Networking Policies": "网络策略", + "Review": "评审", + "New Project": "新项目", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "在 Azure Kubernetes 服务(AKS)中设置并配置新项目", + "Creating Project": "正在创建项目", + "Create Project": "创建项目", + "Loading": "正在加载", + "Next": "下一页", + "Project Created Successfully!": "已成功创建项目!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "你的 AKS 项目“{{projectName}}”已创建且准备就绪。", + "Application name": "应用程序名称", + "Enter application name": "输入应用程序名称", + "Enter a name for your first application to get started with deployment.": "输入你的第一个应用程序的名称以开始部署。", + "Create Application": "创建应用程序", + "Project Creation Failed": "项目创建失败", + "Set security, communication and access rules for incoming and outgoing traffic": "为传入和传出流量设置安全、通信和访问规则", + "Allow traffic within same namespace": "允许同一命名空间中的流量", + "Allow all traffic": "允许所有流量", + "Deny all traffic": "拒绝所有流量", + "Review Project Configuration": "审阅项目配置", + "Please review all the settings before creating your AKS project": "请在创建 AKS 项目前审阅所有设置", + "Project Basics": "项目基础信息", + "Description": "说明", + "No description provided": "未提供任何说明", + "Ingress Policy": "入口策略", + "Egress Policy": "出口策略", + "CPU": "CPU", + "Requests": "请求", + "Limits": "限制", + "Memory": "内存", + "Access Control ({{count}} assignee)_other": "访问控制({{count}} 个被分派人)", + "Not specified": "未指定", + "Select an option": "选择选项", + "No options": "无选项", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "正在开始项目创建", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "项目创建操作 10 分钟后超时。请检查命名空间是否已创建,并重试。", + "Initiating managed namespace creation": "正在启动托管命名空间创建", + "Namespace creation failed: {{message}}": "命名空间创建失败: {{message}}", + "Namespace creation initiated! Monitoring creation status": "已启动命名空间创建!正在监视创建状态", + "Waiting for namespace to propagate": "正在等待命名空间传播", + "Namespace status check failed: {{message}}": "命名空间状态检查失败: {{message}}", + "Waiting for namespace to be created": "正在等待创建命名空间", + "Namespace status verification failed: {{message}}": "命名空间状态验证失败: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "命名空间创建 API 成功,继续执行用户分配", + "Namespace creation completed successfully! Adding user access": "已成功完成命名空间创建!正在添加用户访问权限", + "User assignment completed with errors": "用户分配已完成,但出现错误", + "Project creation completed successfully!": "已成功完成项目创建!", + "Performing final status verification": "正在执行最终状态验证", + "Final status check failed: {{message}}": "最终状态检查失败: {{message}}", + "Final status verification failed: {{message}}": "最终状态验证失败: {{message}}", + "All verifications completed successfully!": "所有验证都已成功完成!", + "Failed to create project": "无法创建项目", + "A cluster must be selected": "必须选择群集", + "Namespace name is required": "命名空间名称是必需的", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "命名空间名称必须仅包含小写字母、数字和连字符,并且以字母数字字符开头和结尾", + "Namespace name must be 63 characters or fewer": "命名空间名称不得超过 63 个字符", + "Creating namespace": "正在创建命名空间", + "Updating local settings": "正在更新本地设置", + "Namespace created successfully!": "已成功创建命名空间!", + "Failed to create namespace": "未能创建命名空间", + "No clusters found. Register a cluster first.": "找不到群集。请先注册群集。", + "Namespace Name": "命名空间名称", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "必须仅包含小写字母、数字和连字符,并以字母数字字符开头和结尾", + "The namespace will be created on the selected cluster and set up as a project": "命名空间将在所选群集上创建,并设置为项目", + "Type": "类型", + "Regular Kubernetes namespace": "常规 Kubernetes 命名空间", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "将在该群集上创建新的命名空间并应用项目标签。它将立即显示在项目列表中。", + "Create New Namespace": "创建新命名空间", + "Create a new namespace on an existing cluster and set it up as a project": "在现有群集上创建新的命名空间并将其设置为项目", + "Creating Namespace": "正在创建命名空间", + "Namespace Creation Failed": "命名空间创建失败", + "Namespace Created Successfully!": "已成功创建命名空间!", + "Your project \"{{projectName}}\" is ready to use.": "你的项目“{{projectName}}”已可供使用。", + "Go To Projects": "转到项目", + "Create Namespace": "创建命名空间", "Delete project": "删除项目", "Delete Project": "删除项目", + "Are you sure you want to delete project \"{{projectId}}\"?": "确定要删除项目“{{projectId}}”吗?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "默认情况下,这将从以下命名空间中移除 Azure 托管命名空间和项目标签:", + "Also delete the namespaces (this will remove all resources within them)": "同时删除命名空间(这将移除其中的所有资源)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "警告: 无法撤消此操作。将永久删除这些命名空间中的所有资源。", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "注意: 对于 AKS 托管命名空间,Azure ARM 管理将被自动移除。", "Delete Project & Namespaces": "删除项目和命名空间", - "Deleted project {{ projectId }}.": "已删除删除项目 {{ projectId }}。", "Deleting project {{ projectId }}…": "正在删除项目 {{ projectId }}...", - "Deny all traffic": "拒绝所有流量", - "Deploy": "部署", - "Deploy {{repo}}": "部署 {{repo}}", - "Deploy an application to start viewing metrics.": "部署应用程序以开始查看指标。", - "Deploy an application to view logs.": "部署应用程序以查看日志。", + "Cancelled deletion of project {{ projectId }}.": "已取消删除项目 {{ projectId }}。", + "Deleted project {{ projectId }}.": "已删除删除项目 {{ projectId }}。", + "Error deleting project {{ projectId }}.": "删除项目 {{ projectId }} 时出错。", "Deploy Application": "部署应用程序", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "从 Azure 容器注册表、Docker Hub 或 GHCR 部署", + "Failed to load pipeline runs": "无法加载管道运行", + "Pipeline": "管道", + "Set up your pipeline": "设置管道", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "设置 CI/CD 管道以自动执行部署并简化工作流", + "Waiting for browser authorization...": "正在等待浏览器授权...", + "Sign in to GitHub to view pipeline runs.": "登录到 GitHub 以查看管道运行。", + "Connecting...": "正在连接...", + "No pipeline runs yet.": "尚无管道运行。", + "View on GitHub": "在 GitHub 上查看", + "View run on GitHub": "在 GitHub 上查看运行", + "Healthy": "正常", + "Scaled down": "已纵向缩减", + "Degraded": "已降级", + "VS Code": "VS Code", + "Manual": "手动", + "Manual Deploy": "手动部署", + "Deploy {{repo}}": "部署 {{repo}}", "Deploy via Pipeline": "通过管道部署", - "Deploying": "正在部署", + "No deployments found in this namespace.": "在此命名空间中找不到任何部署。", "Deployment": "部署", - "Deployment PR": "部署 PR", - "Deployment PR Ready": "部署 PR 就绪", - "Deployment PR reviewed and merged": "已审阅和合并部署 PR", - "Deployment source": "部署源", - "Description": "说明", - "Deselect All": "取消全选", - "Desired Replicas": "所需副本数", - "Discard": "放弃", - "Dismiss": "取消", - "Distributes pods evenly across nodes to improve workload distribution.": "在各节点上均匀分布 Pod 以优化工作负载分布。", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "在节点、区域或其他拓扑域之间均匀分配 Pod,以改进工作负载分布和可用性。", - "Done": "完成", - "Edit Configuration": "编辑配置", + "Source": "源", + "Replicas": "副本", + "Ready": "就绪", + "Status": "状态", + "Actions": "操作", "Edit deployment": "编辑部署", - "Edit HPA Configuration": "编辑 HPA 配置", - "Edit Manual Scaling Configuration": "编辑手动缩放配置", - "Egress Policy": "出口策略", + "View workflow run": "查看工作流运行", + "Re-deploy": "重新部署", + "Failed to trigger deployment": "未能触发部署", + "Trigger": "触发器", + "workflow on": "工作流开启", + "with the following parameters:": "带有以下参数:", + "Namespace": "命名空间", + "Sign in": "登录", + "GitHub authentication required to trigger deployment.": "触发部署所需的 GitHub 身份验证。", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "已成功触发工作流调度。检查 GitHub Actions 进度。", + "Close": "关闭", + "Triggering...": "正在触发...", + "Deploy": "部署", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "在“设置”→“预览功能”中启用 GitHub 管道以使用管道部署。", - "Enable GitHub-based deployment pipelines for AKS projects.": "为 AKS 项目启用基于 GitHub 的部署管道。", - "Enable Horizontal Pod Autoscaler": "启用水平 Pod 自动缩放程序", - "Enable liveness probe": "启用运行情况探测", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "启用或禁用仍在开发中的功能。预览功能可能会在将来的版本中发生更改或移除。", - "Enable pod anti-affinity": "启用 Pod 反亲和性", - "Enable public access": "启用公共访问", - "Enable readiness probe": "启用就绪情况探测", - "Enable resource requests and limits": "启用资源请求和限制", - "Enable startup probe": "启用启动探测", - "Enable topology spread constraints": "启用拓扑分布约束", - "Enabling Addons...": "正在启用加载项...", - "Enabling these addons may incur additional Azure costs.": "启用这些加载项可能会产生额外的 Azure 成本。", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "请确保最小值 ≤ 最大副本数,且目标 CPU 在 10% 到 95% 之间。", + "Workloads": "工作负载", + "No clusters in this project.": "此项目中没有群集。", + "Failed to fetch deployments": "无法提取部署", + "Failed to fetch cluster status": "未能提取群集状态", + "Configure security context settings for the container.": "配置容器的安全上下文设置。", + "Run as non root user": "以非根用户身份运行", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "确保容器以非根用户身份(UID != 0)运行,以提高安全性。这可以防止特权提升攻击。", "Ensures the container runs as a non-root user for better security.": "确保容器以非根用户身份运行,以提高安全性。", - "Ensuring resource group exists...": "正在确保资源组存在...", - "Enter a name for your first application to get started with deployment.": "输入你的第一个应用程序的名称以开始部署。", - "Enter application name": "输入应用程序名称", - "Enter project description": "输入项目说明", - "Environment Variables": "环境变量", - "Error deleting project {{ projectId }}.": "删除项目 {{ projectId }} 时出错。", - "Error Rate": "错误率", - "Failed to apply": "未能应用", - "Failed to apply resources.": "未能应用资源。", - "Failed to convert namespace: {{message}}": "未能转换命名空间: {{message}}", - "Failed to create namespace": "未能创建命名空间", - "Failed to create project": "无法创建项目", - "Failed to enable addon: {{error}}": "未能启用加载项: {{error}}", - "Failed to enable addons": "未能启用加载项", - "Failed to fetch cluster status": "未能提取群集状态", - "Failed to fetch deployment status": "未能提取部署状态", - "Failed to fetch deployments": "无法提取部署", - "Failed to fetch managed namespace details": "未能提取托管命名空间详细信息", - "Failed to fetch managed namespaces": "未能提取托管命名空间", - "Failed to fetch pod status": "未能提取 Pod 状态", - "Failed to fetch service status": "未能提取服务状态", - "Failed to import any projects. See details below.": "未能导入任何项目。请参阅下面的详细信息。", - "Failed to initiate login: {{message}}": "启动登录失败: {{message}}", - "Failed to load AKS clusters": "未能加载 AKS 群集", - "Failed to load Azure context": "未能加载 Azure 上下文", - "Failed to load pipeline runs": "无法加载管道运行", - "Failed to load repositories": "未能加载存储库", - "Failed to load subscriptions": "无法加载订阅", - "Failed to merge cluster: {{message}}": "未能合并群集: {{message}}", - "Failed to monitor deployment health": "无法监视部署运行状况", - "Failed to register cluster: {{message}}": "未能注册群集: {{message}}", - "Failed to trigger deployment": "未能触发部署", - "Failed to update managed namespace": "未能更新托管命名空间", - "failureThreshold": "failureThreshold", - "Features": "功能", - "Federated Credential": "联合凭据", - "Filter repositories": "筛选存储库", - "Final status check failed: {{message}}": "最终状态检查失败: {{message}}", - "Final status verification failed: {{message}}": "最终状态验证失败: {{message}}", - "for full network policy support.": "以获取完整的网络策略支持。", - "Generated Kubernetes manifests (namespace: {{namespace}})": "已生成 Kubernetes 清单(命名空间: {{namespace}})", - "GitHub authentication required to trigger deployment.": "触发部署所需的 GitHub 身份验证。", - "GitHub Pipelines": "GitHub 管道", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "转到项目", - "Guided configuration for ports, replicas, env, and resources": "端口、副本、env 和资源的引导式配置", + "Read only root filesystem": "只读根文件系统", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "以只读方式装载容器的根文件系统,以防止写入操作。通过防止恶意代码修改系统文件,此操作增强了安全性。", + "Mounts the container's root filesystem as read-only to prevent write operations.": "将容器的根文件系统以只读方式挂载,防止写入操作。", + "Allow privilege escalation": "允许特权提升", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "控制进程是否可以获得比其父进程更多的权限。禁用此功能(推荐)可防止特权提升攻击。", + "Controls whether a process can gain more privileges than its parent process.": "控制进程是否可以获得比其父进程更多的权限。", + "Enable pod anti-affinity": "启用 Pod 反亲和性", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "优先将 Pod 调度至不同节点,以提高可用性和容错。这有助于确保 Pod 分布在群集中。", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "优先将 Pod 调度至不同节点,提高可用性和容错。", + "Enable topology spread constraints": "启用拓扑分布约束", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "在节点、区域或其他拓扑域之间均匀分配 Pod,以改进工作负载分布和可用性。", + "Distributes pods evenly across nodes to improve workload distribution.": "在各节点上均匀分布 Pod 以优化工作负载分布。", + "Container image": "容器映像", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "要运行的 Pod 副本数。更多的副本可提供更好的可用性和负载分配。", + "Continue": "继续", + "Configure Container Deployment": "配置容器部署", + "Networking": "网络", "Healthchecks": "运行状况检查", - "Healthy": "正常", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "执行运行情况探测的频率(秒)。默认值为 10 秒。", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "执行就绪情况探测的频率(秒)。默认值为 10 秒。", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "执行启动探测的频率(秒)。默认值为 10 秒。", - "HPA scales pods based on CPU utilization.": "HPA 基于 CPU 利用率缩放 Pod。", - "Identity Resource Group": "标识资源组", - "Import AKS Projects": "导入 AKS 项目", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "将现有托管命名空间和常规命名空间作为项目导入。将通过添加所需的项目标签,转换尚不是 AKS 桌面项目的命名空间。", - "Import Selected Projects": "导入所选项目", - "Importing": "正在导入", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "正在导入 {{current}}/{{total}}: 来自 {{clusterName}} 的 {{name}}", - "in resource group": "在资源组中", + "Resource Limits": "资源限制", + "Environment Variables": "环境变量", + "Workload Identity": "", + "Advanced": "高级", "Information about {{label}}": "有关 {{label}} 的信息", - "Information about CPU limit": "有关 CPU 限制的信息", - "Information about CPU request": "有关 CPU 请求的信息", - "Information about memory limit": "有关内存限制的信息", - "Information about memory request": "有关内存请求的信息", - "Information about target CPU utilization": "有关目标 CPU 使用率的信息", - "Ingress Policy": "入口策略", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "正在初始化...", - "Initiating Azure login": "正在启动 Azure 登录", - "Initiating managed namespace creation": "正在启动托管命名空间创建", - "Install Extension": "安装扩展", - "Install GitHub App": "安装 GitHub 应用", - "Installing": "正在安装", - "Internal only": "仅内部", - "Invalid YAML": "YAML 无效", - "Invalid YAML: List item missing required field (kind)": "YAML 无效: 列出缺少必填字段(种类)的项", - "Invalid YAML: List item missing required field (metadata.name)": "YAML 无效: 列出缺少必填字段(metadata.name)的项", - "Invalid YAML: List resource must have an array \"items\" field": "YAML 无效: 列表资源必须具有数组 \"items\" 字段", - "Invalid YAML: missing required field (kind)": "YAML 无效: 缺少必填字段(种类)", - "Invalid YAML: missing required field (metadata.name)": "YAML 无效: 缺少必填字段(metadata.name)", - "Issue {{number}}": "问题 {{number}}", - "Issues": "问题", - "just now": "刚才", - "KEDA (Event-Driven Autoscaling)": "KEDA (事件驱动的自动缩放)", - "Keep Going": "继续", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "添加一个或多个 Kubernetes 清单。上传文件以填充编辑器或直接在下方粘贴/编辑。", + "Upload files": "上传文件", + "Clear editor": "清除编辑器", + "Review & Deploy": "审阅和部署", + "Generated Kubernetes manifests (namespace: {{namespace}})": "已生成 Kubernetes 清单(命名空间: {{namespace}})", + "Resources to be deployed ({{count}} object)_other": "要部署的资源({{count}} 个对象)", + "namespace: {{namespace}}": "命名空间: {{namespace}}", + "Configure": "配置", + "Deploying": "正在部署", "Key": "键", - "Kubernetes restarts the container if this check fails repeatedly.": "如果此检查重复失败,Kubernetes 将重新启动容器。", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "值", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "移除", + "Add variable": "添加变量", + "Configure container health probes.": "配置容器运行状况探测。", + "Manually configure settings": "手动配置设置", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "默认情况下,探针在根路径使用带有合理默认值的 HTTP GET。启用此项可自定义探针设置。", + "Enable liveness probe": "启用运行情况探测", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "如果此检查反复失败,Kubernetes 将重启容器。用于检测和从死锁或无响应容器中恢复。", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "在启动成功之前,Kubernetes 会暂时禁用活性/就绪性。", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "在启动成功之前,Kubernetes 会暂时禁用活性/就绪情况。适用于启动时间很长的容器。", - "Kubernetes Version": "Kubernetes 版本", - "Kubernetes won't send traffic to the pod until this check passes.": "在此检查通过之前,Kubernetes 不会将流量发送到 Pod。", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "在此检查通过之前,Kubernetes 不会向 Pod 发送流量。用于指示容器何时准备好接受流量。", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "少于一分钟", - "Limits": "限制", + "Kubernetes restarts the container if this check fails repeatedly.": "如果此检查重复失败,Kubernetes 将重新启动容器。", "Liveness path": "运行情况路径", - "Loading": "正在加载", - "Loading AKS clusters": "正在加载 AKS 群集", - "Loading Azure account information": "正在加载 Azure 帐户信息", - "Loading Azure context...": "正在加载 Azure 上下文...", - "Loading clusters": "正在加载群集", - "Loading configuration...": "正在加载配置...", - "Loading deployments": "正在加载部署", - "Loading metrics": "正在加载指标", - "Loading scaling metrics from Prometheus": "正在从 Prometheus 加载缩放指标", - "Loading subscriptions": "正在加载订阅", - "Loading...": "正在加载...", - "Location": "位置", - "Log out": "退出登录", - "Logged in as": "当前登录身份为", - "Logging out": "正在退出登录", - "Login successful! Redirecting": "登录成功!正在重定向", - "Login timeout. Please try again.": "登录超时。请重试。", - "Managed Identity": "托管标识", - "managed namespaces only": "仅限托管命名空间", - "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 功能已成功注册!", - "Manual": "手动", - "Manual Deploy": "手动部署", - "Manually configure settings": "手动配置设置", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "用于检查运行状况的 HTTP 路径(例如 /healthz)。探测对此路径执行 HTTP GET 请求。", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "容器启动后到启动运行情况探测之前的秒数。", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "执行运行情况探测的频率(秒)。默认值为 10 秒。", + "timeoutSeconds": "TimeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "探测超时之前的秒数。默认值为 1 秒。", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "探测失败后,Kubernetes 会在放弃并重启容器之前多次尝试此操作。", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "探测在失败后被视为成功的最小连续成功次数。默认值为 1。", + "Enable readiness probe": "启用就绪情况探测", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "在此检查通过之前,Kubernetes 不会向 Pod 发送流量。用于指示容器何时准备好接受流量。", + "Kubernetes won't send traffic to the pod until this check passes.": "在此检查通过之前,Kubernetes 不会将流量发送到 Pod。", + "Readiness path": "就绪路径", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "用于检查就绪情况的 HTTP 路径(例如,/ready)。探测对此路径执行 HTTP GET 请求。", + "Number of seconds after the container has started before readiness probes are initiated.": "容器启动后到发起就绪情况探测之前的秒数。", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "执行就绪情况探测的频率(秒)。默认值为 10 秒。", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "探测失败后,Kubernetes 会在将 Pod 标记为未就绪之前多次尝试此操作。", + "Enable startup probe": "启用启动探测", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "在启动成功之前,Kubernetes 会暂时禁用活性/就绪情况。适用于启动时间很长的容器。", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "在启动成功之前,Kubernetes 会暂时禁用活性/就绪性。", + "Startup path": "启动路径", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "用于检查启动的 HTTP 路径(例如/startup)。探测对此路径执行 HTTP GET 请求。", + "Number of seconds after the container has started before startup probes are initiated.": "容器启用后到发起启动探测前的秒数。", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "执行启动探测的频率(秒)。默认值为 10 秒。", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "当探测失败时,Kubernetes 将会在放弃前多次尝试此操作。对于启动探测,这决定了重启前等待的时长。", + "Enable Horizontal Pod Autoscaler": "启用水平 Pod 自动缩放程序", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "根据 CPU 利用率自动缩放 Pod 数。当 CPU 使用率超过目标时,HPA 会增加 Pod 数,并在低于目标时减少 Pod 数。", + "HPA scales pods based on CPU utilization.": "HPA 基于 CPU 利用率缩放 Pod。", + "Min replicas": "最小副本数", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "HPA 即使在 CPU 使用率较低时仍会维护的最小 Pod 副本数。", "Max replicas": "最大副本数", - "Maximum CPU allowed (1000m = 1 CPU core)": "允许的最大 CPU (1000m = 1 个 CPU 核心)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "允许的最大内存(1024 MiB = 1 GiB)", - "Maximum Replicas": "最大副本数", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "HPA 在 CPU 使用率较高时可以纵向扩展到的最大 Pod 副本数。", + "Target CPU utilization": "目标 CPU 利用率", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "所有 Pod 中的目标平均 CPU 使用率百分比。当 CPU 使用率超过此值时,HPA 将纵向扩展,并在低于此值时纵向缩减。", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "请确保最小值 ≤ 最大副本数,且目标 CPU 在 10% 到 95% 之间。", + "Target port": "目标端口", + "The port number that your container listens on. This is the port inside the container where your application runs.": "容器侦听的端口号。这是运行应用程序的容器内的端口。", + "Service port": "服务端口", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes 服务公开的端口号。发往此端口的流量将转发到目标端口。", + "Use custom service port": "使用自定义服务端口", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "默认情况下,服务端口与目标端口匹配。启用此功能可为服务使用其他端口。", + "Service type": "服务类型", + "Internal only": "仅内部", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "使用 ClusterIP。适用于仅在群集内可访问的服务。", + "Enable public access": "启用公共访问", + "Creates a LoadBalancer to expose the application to the internet.": "创建 LoadBalancer 以向 Internet 公开应用程序。", + "Enable resource requests and limits": "启用资源请求和限制", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "设置 CPU 和内存请求(保证资源)和限制(最大资源),以控制资源分配并防止容器过多消耗群集资源。", + "CPU request": "CPU 请求", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "容器保证最小 CPU 量。Kubernetes 会将 Pod 调度到至少有此可用 CPU 的节点上。", + "millicores": "毫核数", + "CPU limit": "CPU 限制", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "容器可使用的最大 CPU 量。超出后,容器将被限流。", + "Memory request": "内存请求", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "容器保证最小内存量。Kubernetes 会将 Pod 调度到至少有此可用内存的节点上。", "mebibytes": "兆字节", - "Memory": "内存", "Memory limit": "内存限制", - "Memory Limits": "内存限制", - "Memory request": "内存请求", - "Memory Requests": "内存请求", - "Memory Resources": "内存资源", - "Memory Usage": "内存使用", - "Memory utilization": "内存利用率", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "合并群集“{{clusterName}}”({{count}} 个命名空间)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "合并群集“{{clusterName}}”({{count}} 个命名空间)", - "Metrics": "指标", - "Metrics refreshed every 30 seconds": "指标每 30 秒刷新一次", - "Metrics Unavailable": "指标不可用", - "millicores": "毫核数", - "Min replicas": "最小副本数", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "探测在失败后被视为成功的最小连续成功次数。默认值为 1。", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "保证的最小 CPU (1000m = 1 个 CPU 核心)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "保证的最小内存(1024 MiB = 1 GiB)", - "Minimum Replicas": "最小副本数", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "缺少所需的 Azure 上下文。请确保已登录,并且群集与有效的订阅、资源组和租户相关联。", - "Mounts the container's root filesystem as read-only to prevent write operations.": "将容器的根文件系统以只读方式挂载,防止写入操作。", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "以只读方式装载容器的根文件系统,以防止写入操作。通过防止恶意代码修改系统文件,此操作增强了安全性。", - "Multi-file support (Deployments, Services, Ingress, etc.)": "多文件支持(部署、服务、入口等)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "必须仅包含小写字母、数字和连字符,并以字母数字字符开头和结尾", - "Name": "名称", - "Namespace": "命名空间", - "Namespace '{{name}}' converted and imported as project": "命名空间“{{name}}”已转换并作为项目导入", - "Namespace created successfully!": "已成功创建命名空间!", - "Namespace Created Successfully!": "已成功创建命名空间!", - "Namespace creation API succeeded, proceeding with user assignments": "命名空间创建 API 成功,继续执行用户分配", - "Namespace creation completed successfully! Adding user access": "已成功完成命名空间创建!正在添加用户访问权限", - "Namespace Creation Failed": "命名空间创建失败", - "Namespace creation failed: {{message}}": "命名空间创建失败: {{message}}", - "Namespace creation initiated! Monitoring creation status": "已启动命名空间创建!正在监视创建状态", - "Namespace Name": "命名空间名称", - "Namespace name is required": "命名空间名称是必需的", - "Namespace name must be 63 characters or fewer": "命名空间名称不得超过 63 个字符", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "命名空间名称必须仅包含小写字母、数字和连字符,并且以字母数字字符开头和结尾", - "Namespace status check failed: {{message}}": "命名空间状态检查失败: {{message}}", - "Namespace status verification failed: {{message}}": "命名空间状态验证失败: {{message}}", - "namespace: {{namespace}}": "命名空间: {{namespace}}", - "Namespaces to convert:": "要转换的命名空间:", - "Network I/O": "网络 I/O", - "Network In": "网络流入量", - "Network Out": "网络流出量", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "创建群集后,无法更改网络策略引擎。创建新智能体方式", - "Networking": "网络", - "Networking Policies": "网络策略", - "New Project": "新项目", - "Next": "下一页", - "No": "否", - "No AKS clusters found in this subscription.": "此订阅中未找到任何 AKS 群集。", - "No cluster is associated with this project.": "没有与此项目关联的群集。", - "No clusters found. Register a cluster first.": "找不到群集。请先注册群集。", - "No clusters in this project.": "此项目中没有群集。", - "No clusters with Azure Entra ID authentication found for this subscription": "此订阅中未找到启用 Azure Entra ID 身份验证的群集", - "No data available": "无可用数据", - "No deployments found": "找不到部署", - "No Deployments Found": "未找到任何部署", - "No deployments found in this namespace.": "在此命名空间中找不到任何部署。", - "No description provided": "未提供任何说明", - "No eligible clusters found in this subscription.": "此订阅中未找到符合条件的群集。", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "容器可使用的最大内存量。超出后,容器将被终止(OOMKilled)。", + "Container Image": "容器映像", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "从 Azure 容器注册表、Docker Hub 或 GHCR 部署", + "Auto-generated Deployment and Service manifests": "自动生成的部署和服务清单", + "Guided configuration for ports, replicas, env, and resources": "端口、副本、env 和资源的引导式配置", "No Kubernetes expertise required to get started": "无需 Kubernetes 专业知识即可开始使用", - "No options": "无选项", - "No pipeline runs yet.": "尚无管道运行。", - "No pods found for deployment \"{{name}}\"": "对于部署“{{name}}”,未找到 Pod", - "No repositories found": "未找到存储库", + "Bring your own Kubernetes manifests to deploy": "自带 Kubernetes 清单进行部署", + "Use existing manifests for full control": "使用现有清单实现完全控制", + "Multi-file support (Deployments, Services, Ingress, etc.)": "多文件支持(部署、服务、入口等)", + "Preview and basic validation before apply": "应用前的预览和基本验证", + "Select Source": "选择源", + "Choose a source for your deployment (container image, repo, etc.).": "为部署选择源(容器映像、存储库等)。", + "Deployment source": "部署源", + "Features": "功能", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "标识资源组", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "正在检查现有标识...", + "Creating managed identity...": "正在创建托管标识...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "YAML 无效: 缺少必填字段(种类)", + "Invalid YAML: List resource must have an array \"items\" field": "YAML 无效: 列表资源必须具有数组 \"items\" 字段", + "Invalid YAML: List item missing required field (kind)": "YAML 无效: 列出缺少必填字段(种类)的项", + "Invalid YAML: List item missing required field (metadata.name)": "YAML 无效: 列出缺少必填字段(metadata.name)的项", + "Invalid YAML: missing required field (metadata.name)": "YAML 无效: 缺少必填字段(metadata.name)", + "Invalid YAML": "YAML 无效", + "Validation failed": "验证失败", + "Failed to apply": "未能应用", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "已应用 {{applied}} 个资源,但 {{failed}} 个失败:\n{{errors}}", + "Applied {{count}} resource(s) successfully._other": "已成功应用 {{count}} 个资源。", + "Failed to apply resources.": "未能应用资源。", + "unnamed": "未命名", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "内容", + "Push agent config files": "推送代理配置文件", + "Workflows": "工作流", + "Create setup workflow in .github/workflows/": "在 .github/workflows/ 中创建设置工作流", + "Pull requests": "拉取请求", + "Create deployment PRs": "创建部署 PR", + "Issues": "问题", + "Track agent progress": "跟踪代理进度", + "Run deployment workflows": "运行部署工作流", + "Connect to GitHub": "连接到 GitHub", + "Connected to '{{username}}'.": "已连接到 ‘{{username}}’。", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "授权 AKS 桌面在存储库中创建部署管道。", + "Required Permissions": "所需权限", + "Complete authorization on your browser screen": "在浏览器屏幕上完成授权", + "Connect": "连接", + "Select repository": "选择存储库", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "在浏览器中完成安装。在 {{repoName}} 上安装应用后,此操作将自动更新。", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "必须在 {{repoName}} 上安装 AKS 桌面 GitHub Apps 才能继续。", + "Reopen install page": "重新打开安装页面", + "Install GitHub App": "安装 GitHub 应用", + "Checking...": "正在检查...", + "Connecting to GitHub...": "正在连接到 GitHub...", + "Connect GitHub": "连接 GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "已连接", + "Sign in to GitHub": "登录到 GitHub", + "Failed to load repositories": "未能加载存储库", + "Filter repositories": "筛选存储库", "No repositories match your filter": "没有与筛选器匹配的存储库", - "No response time data available": "无响应时间数据可用", - "No scaling data available": "无缩放数据可用", - "No subscriptions found": "找不到任何订阅", - "Not specified": "未指定", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "注意: 对于 AKS 托管命名空间,Azure ARM 管理将被自动移除。", - "Number of Replicas": "副本数", - "Number of seconds after the container has started before liveness probes are initiated.": "容器启动后到启动运行情况探测之前的秒数。", - "Number of seconds after the container has started before readiness probes are initiated.": "容器启动后到发起就绪情况探测之前的秒数。", - "Number of seconds after the container has started before startup probes are initiated.": "容器启用后到发起启动探测前的秒数。", - "Number of seconds after which the probe times out. Default is 1 second.": "探测超时之前的秒数。默认值为 1 秒。", - "OIDC trust for": "OIDC 信任", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "智能体创建部署 PR 后,请立即查看生成的文件并合并以启动部署管道", - "Only clusters with Azure Entra ID authentication are shown.": "仅显示启用 Azure Entra ID 身份验证的群集。", - "Performing final status verification": "正在执行最终状态验证", - "periodSeconds": "periodSeconds", - "Pipeline": "管道", + "No repositories found": "未找到存储库", + "less than a minute": "少于一分钟", + "{{count}} min_other": "{{count}} 分钟", + "Up next": "后续步骤", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "正在检查合并状态...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "用时超出预期。检查 GitHub 上的 PR 以了解最新状态。", + "This PR was closed without merging. You may need to restart the process.": "已关闭此 PR 但未合并。可能需要重启进程。", + "Review on GitHub": "在 GitHub 中审阅", + "Agent is working": "智能体正在工作", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot 编码智能体正在分析存储库,并使用 Dockerfile、Kubernetes 清单和 GitHub Actions 工作流生成部署 PR。", + "Issue {{number}}": "问题 {{number}}", + "Waiting for agent workflow to start...": "正在等待代理工作流启动...", + "This typically takes 10–25 minutes.": "此操作通常需要 10-25 分钟。", "Pipeline configured": "已配置管道", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "请在浏览器中完成身份验证。登录完成后,此窗口将自动重定向。", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "请注册以继续。", - "Please review all the settings before creating your AKS project": "请在创建 AKS 项目前审阅所有设置", - "Please select a deployment to view metrics": "请选择一个部署以查看指标", - "Please select a subscription first": "请先选择订阅", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} 的 CI/CD 管道已就绪。从“部署”选项卡触发部署。", + "Setup PR reviewed and merged": "已审阅并合并设置 PR", + "Copilot agent reviewed your repo and generated deployment PR": "Copilot 智能体已查看存储库并生成部署 PR", + "Deployment PR reviewed and merged": "已审阅和合并部署 PR", + "View deployment": "查看部署", + "You can collapse this panel. Progress is saved and will resume when you return.": "可以折叠此面板。进度已保存,并将在返回时继续。", + "Creating setup PR...": "正在创建设置 PR...", + "The agent is creating the setup PR to enable the Copilot agent.": "智能体正在创建设置 PR 以启用 Copilot 智能体。", + "Setup PR Created": "已创建设置 PR", + "Review and merge the setup PR to enable the Copilot agent.": "查看并合并设置 PR 以启用 Copilot 智能体。", + "Setting up Copilot agent...": "正在设置 Copilot 智能体...", + "Creating the trigger issue for the Copilot coding agent.": "为 Copilot 编码智能体创建触发器问题。", + "Deployment PR Ready": "部署 PR 就绪", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "智能体已创建部署 PR。查看生成的文件并合并以启动部署管道。", + "Copilot agent": "Copilot 智能体", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "合并后,Copilot 智能体将分析存储库并创建部署 PR", + "Deployment PR": "部署 PR", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "智能体创建部署 PR 后,请立即查看生成的文件并合并以启动部署管道", + "Connect Source": "连接源", + "Set up Copilot Agent": "设置 Copilot 智能体", + "Review & Merge": "查看与合并", + "Collapse panel": "折叠面板", + "Keep Going": "继续", + "Discard": "放弃", + "Canceling will discard your pipeline progress. Are you sure?": "取消将放弃管道进度。是否确定?", + "Ensuring resource group exists...": "正在确保资源组存在...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "正在配置联合凭据...", + "Workload identity configured": "已配置工作负载标识", + "Configure Workload Identity": "配置工作负载标识", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "将会创建以下 Azure 资源,以支持 GitHub Actions 管道向 AKS 群集进行身份验证:", + "Managed Identity": "托管标识", + "in resource group": "在资源组中", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "联合凭据", + "OIDC trust for": "OIDC 信任", + "branch": "分支", + "Resource group where the managed identity will be created": "将在其中创建托管标识的资源组", + "Workload identity configured successfully.": "已成功配置工作负载标识。", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "这可能是权限问题。请检查你的 GitHub Apps 权限,然后重试。", + "The operation may still be running on GitHub. Check the link above for the latest status.": "该操作可能仍在 GitHub 上运行。检查上面的链接以了解最新状态。", + "Try again, or check GitHub for details.": "请重试,或查看 GitHub 以了解详细信息。", + "Initializing...": "正在初始化...", + "Checking repository readiness...": "正在检查存储库就绪情况...", + "Loading configuration...": "正在加载配置...", + "Unknown error": "未知错误", + "Trigger Copilot Agent": "触发 Copilot 智能体", + "Create Setup PR": "创建设置 PR", + "Failed to fetch deployment status": "未能提取部署状态", + "Failed to fetch pod status": "未能提取 Pod 状态", + "Failed to fetch service status": "未能提取服务状态", + "Failed to monitor deployment health": "无法监视部署运行状况", + "Convert Namespaces to AKS Projects": "将命名空间转换为 AKS 项目", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "将通过添加这些标签,将以下命名空间转换为 AKS 桌面项目:", + "managed namespaces only": "仅限托管命名空间", + "Namespaces to convert:": "要转换的命名空间:", + "Already AKS projects (will import directly):": "已是 AKS 项目(将直接导入):", + "Converting": "正在转换", + "Confirm & Import": "确认并导入", "Please select at least one namespace to import": "请至少选择一个命名空间进行导入", - "Please sign in to Azure to continue.": "请登录到 Azure 以继续。", - "Pod Details": "Pod 详细信息", - "Pod Name": "Pod 名称", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "优先将 Pod 调度至不同节点,提高可用性和容错。", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "优先将 Pod 调度至不同节点,以提高可用性和容错。这有助于确保 Pod 分布在群集中。", - "Preview and basic validation before apply": "应用前的预览和基本验证", - "Preview Features": "预览功能", - "Project '{{name}}' successfully imported": "已成功导入项目“{{name}}”", - "Project Basics": "项目基础信息", - "Project Created Successfully!": "已成功创建项目!", - "Project creation completed successfully!": "已成功完成项目创建!", - "Project Creation Failed": "项目创建失败", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "项目创建操作 10 分钟后超时。请检查命名空间是否已创建,并重试。", - "Project Description": "项目说明", - "Project Name": "项目名称", - "Project name is available": "此项目名称可用", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "项目名称只能包含小写字母、数字和连字符(无空格)", - "Project Status": "项目状态", - "Pull requests": "拉取请求", - "Push agent config files": "推送代理配置文件", - "Re-deploy": "重新部署", - "Read only root filesystem": "只读根文件系统", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "对命名空间中大多数对象的只读访问权限。无法查看角色、角色绑定或机密。", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "对命名空间中大多数对象的读/写访问权限。无法查看或修改角色或角色绑定。可以访问机密,并以命名空间中的任何 ServiceAccount 身份运行 Pod。", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "对命名空间中大多数资源的读/写访问权限。可以在命名空间中创建角色和角色绑定。无法写入资源配额或命名空间本身。", - "Readiness path": "就绪路径", - "Ready": "就绪", - "Refresh": "刷新", - "Refreshing": "正在刷新", - "Register AKS Cluster": "注册 AKS 群集", - "Register Cluster": "注册群集", - "Register ManagedNamespacePreview Feature": "注册 ManagedNamespacePreview 功能", - "Registering": "正在注册", - "Registering cluster": "正在注册群集", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "在导入常规命名空间之前,必须先注册群集“{{clusterName}}”。请先从此群集中导入托管命名空间。", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "合并群集“{{clusterName}}”({{count}} 个命名空间)", + "Failed to merge cluster: {{message}}": "未能合并群集: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "正在将{{name}}转换为 AKS 项目(这可能需要一些时间)...", + "Failed to convert namespace: {{message}}": "未能转换命名空间: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "正在导入 {{current}}/{{total}}: 来自 {{clusterName}} 的 {{name}}", + "Project '{{name}}' successfully imported": "已成功导入项目“{{name}}”", + "Namespace '{{name}}' converted and imported as project": "命名空间“{{name}}”已转换并作为项目导入", + "Successfully merged {{count}} cluster(s)_other": "已成功合并 {{count}} 个群集", + "with {{count}} project(s)_other": "具有 {{count}} 个项目", + "{{count}} failed._other": "{{count}} 个失败。", + "Failed to import any projects. See details below.": "未能导入任何项目。请参阅下面的详细信息。", + "Import AKS Projects": "导入 AKS 项目", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "将现有托管命名空间和常规命名空间作为项目导入。将通过添加所需的项目标签,转换尚不是 AKS 桌面项目的命名空间。", + "Select Namespaces to Import": "选择要导入的命名空间", + "{{count}} selected_other": "已选择 {{count}} 个", + "Select All": "全选", + "Deselect All": "取消全选", + "AKS Managed": "AKS 托管", "Regular": "常规", - "Regular Kubernetes namespace": "常规 Kubernetes 命名空间", - "remove": "移除", - "Remove assignee": "移除被分派人", - "Reopen install page": "重新打开安装页面", - "Replica Bounds": "副本范围", - "Replicas": "副本", - "Request & error rate": "请求和错误率", + "AKS Project?": "AKS 项目?", + "Yes": "是", + "No": "否", + "Importing": "正在导入", + "Import Selected Projects": "导入所选项目", + "Failed to fetch managed namespaces": "未能提取托管命名空间", + "Failed to fetch managed namespace details": "未能提取托管命名空间详细信息", + "Failed to update managed namespace": "未能更新托管命名空间", + "Updating": "正在更新", + "Update": "更新", + "AKS desktop logo": "AKS 桌面徽标", + "No Deployments Found": "未找到任何部署", + "There are no deployments in this project namespace yet.": "此项目命名空间中尚无部署。", + "Deploy an application to view logs.": "部署应用程序以查看日志。", + "Metrics": "指标", + "CPU Usage": "CPU 使用率", + "Memory Usage": "内存使用", "Request Rate": "请求速率", - "Requests": "请求", - "Required Permissions": "所需权限", - "Resource Group": "资源组", - "Resource group where the managed identity will be created": "将在其中创建托管标识的资源组", - "Resource Limits": "资源限制", - "Resource Usage": "资源使用状况", - "Resources to be deployed ({{count}} object)_one": "要部署的资源({{count}} 个对象)", - "Resources to be deployed ({{count}} object)_other": "要部署的资源({{count}} 个对象)", + "Error Rate": "错误率", + "Metrics refreshed every 30 seconds": "指标每 30 秒刷新一次", + "Select a deployment to view metrics": "选择一个部署以查看指标", + "Metrics Unavailable": "指标不可用", + "Application Metrics": "应用程序指标", + "Request & error rate": "请求和错误率", + "No data available": "无可用数据", "Response Time": "响应时间", + "Memory utilization": "内存利用率", + "Network I/O": "网络 I/O", + "Deploy an application to start viewing metrics.": "部署应用程序以开始查看指标。", + "Please select a deployment to view metrics": "请选择一个部署以查看指标", + "Project Status": "项目状态", + "Total Pods": "Pod 总数", + "Application Health": "应用程序运行状况", + "Loading metrics": "正在加载指标", + "Resource Usage": "资源使用状况", + "Avg Response Time": "平均响应时间", + "No response time data available": "无响应时间数据可用", + "Absolute usage": "绝对使用情况", + "Network In": "网络流入量", + "Network Out": "网络流出量", + "Pod Details": "Pod 详细信息", + "Pod Name": "Pod 名称", "Restarts": "重启数", - "Retry": "重试", - "Review": "评审", - "Review & Deploy": "审阅和部署", - "Review & Merge": "查看与合并", - "Review and merge the setup PR to enable the Copilot agent.": "查看并合并设置 PR 以启用 Copilot 智能体。", - "Review on GitHub": "在 GitHub 中审阅", - "Review Project Configuration": "审阅项目配置", - "Role": "角色", - "Role Assignment": "角色分配", - "Run as non root user": "以非根用户身份运行", - "Run deployment workflows": "运行部署工作流", - "Save": "保存", - "Scaled down": "已纵向缩减", - "Scaling": "正在扩展", + "No pods found for deployment \"{{name}}\"": "对于部署“{{name}}”,未找到 Pod", + "Preview Features": "预览功能", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "启用或禁用仍在开发中的功能。预览功能可能会在将来的版本中发生更改或移除。", + "GitHub Pipelines": "GitHub 管道", + "Enable GitHub-based deployment pipelines for AKS projects.": "为 AKS 项目启用基于 GitHub 的部署管道。", + "Loading scaling metrics from Prometheus": "正在从 Prometheus 加载缩放指标", "Scaling Chart Unavailable": "缩放图表不可用", - "Scaling History (Last 24 Hours)": "缩放历史记录(过去 24 小时)", + "No scaling data available": "无缩放数据可用", + "Edit HPA Configuration": "编辑 HPA 配置", + "Edit Manual Scaling Configuration": "编辑手动缩放配置", + "Minimum Replicas": "最小副本数", + "Maximum Replicas": "最大副本数", + "Target CPU Utilization (%)": "目标 CPU 利用率(%)", + "Number of Replicas": "副本数", + "Set the desired number of pod replicas for this deployment": "设置此部署所需的 Pod 副本数", + "Save": "保存", "Scaling Mode": "缩放模式", - "Scaling Overview": "缩放概述", - "Search clusters": "搜索群集", - "Search subscriptions": "搜索订阅", - "Select a cluster": "选择群集", - "Select a deployment to view metrics": "选择一个部署以查看指标", + "Current Replicas": "当前副本数", + "Desired Replicas": "所需副本数", + "Configured Replicas": "已配置副本", + "Replica Bounds": "副本范围", + "Available Replicas": "可用副本", + "CPU Usage / Target": "CPU 使用率/目标", + "Scaling": "正在扩展", "Select a deployment to view scaling metrics": "选择一个部署以查看缩放指标", - "Select a subscription": "选择订阅", - "Select All": "全选", - "Select an AKS cluster": "选择 AKS 群集", - "Select an Azure subscription": "选择 Azure 订阅", - "Select an option": "选择选项", + "Scaling Overview": "缩放概述", + "Edit Configuration": "编辑配置", + "Scaling History (Last 24 Hours)": "缩放历史记录(过去 24 小时)", + "Copied!": "已复制!", + "Copy": "复制", + "Copy to clipboard": "复制到剪贴板", + "No deployments found": "找不到部署", "Select Deployment": "选择部署", - "Select Namespaces to Import": "选择要导入的命名空间", - "Select repository": "选择存储库", - "Select Source": "选择源", - "Selected Cluster Details": "所选群集详细信息", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "kubeconfig 中缺少所选群集。请先注册,然后继续。", - "Service port": "服务端口", - "Service type": "服务类型", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "设置 CPU 和内存请求(保证资源)和限制(最大资源),以控制资源分配并防止容器过多消耗群集资源。", - "Set quota limits to prevent overuse and maintain cluster stability": "设置配额限制以防止过度使用并保持群集稳定性", - "Set security, communication and access rules for incoming and outgoing traffic": "为传入和传出流量设置安全、通信和访问规则", - "Set the desired number of pod replicas for this deployment": "设置此部署所需的 Pod 副本数", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "设置 CI/CD 管道以自动执行部署并简化工作流", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "在 Azure Kubernetes 服务(AKS)中设置并配置新项目", - "Set up Copilot Agent": "设置 Copilot 智能体", - "Set up your pipeline": "设置管道", - "Setting up Copilot agent...": "正在设置 Copilot 智能体...", - "Setup PR Created": "已创建设置 PR", - "Setup PR reviewed and merged": "已审阅并合并设置 PR", - "Sign in": "登录", - "Sign in to GitHub": "登录到 GitHub", - "Sign in to GitHub to view pipeline runs.": "登录到 GitHub 以查看管道运行。", - "Sign in with Azure": "使用 Azure 登录", - "Sign in with your Azure account to manage AKS clusters and resources": "使用 Azure 帐户登录以管理 AKS 群集和资源", - "Source": "源", - "Starting project creation": "正在开始项目创建", - "Startup path": "启动路径", - "Status": "状态", - "Subscription": "订阅", + "Loading deployments": "正在加载部署", + "No cluster is associated with this project.": "没有与此项目关联的群集。", + "Please sign in to Azure to continue.": "请登录到 Azure 以继续。", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "缺少所需的 Azure 上下文。请确保已登录,并且群集与有效的订阅、资源组和租户相关联。", + "Failed to load Azure context": "未能加载 Azure 上下文", + "just now": "刚才", + "{{seconds}}s ago": "{{seconds}} 秒前", + "{{minutes}} min ago": "{{minutes}} 分钟前", + "{{hours}}h ago": "{{hours}} 小时前", + "{{days}}d ago": "{{days}} 天前", + "{{weeks}}w ago": "{{weeks}} 周前", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "{{count}} 个群集隐藏 - 无 Azure Entra ID", + "{{count}} eligible cluster(s) found._one": "找到 {{count}} 个符合条件的群集。", + "{{count}} failed._one": "{{count}} 个失败。", + "{{count}} min_one": "{{count}} 分钟", + "{{count}} selected_one": "已选择 {{count}} 个", + "Access Control ({{count}} assignee)_one": "访问控制({{count}} 个被分配者)", + "Applied {{count}} resource(s) successfully._one": "已成功应用 {{count}} 个资源。", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "合并群集“{{clusterName}}”({{count}} 个命名空间)", + "Resources to be deployed ({{count}} object)_one": "要部署的资源({{count}} 个对象)", "Successfully merged {{count}} cluster(s)_one": "已成功合并 {{count}} 个群集", - "Successfully merged {{count}} cluster(s)_other": "已成功合并 {{count}} 个群集", - "successThreshold": "successThreshold", - "Target CPU utilization": "目标 CPU 利用率", - "Target CPU Utilization (%)": "目标 CPU 利用率(%)", - "Target port": "目标端口", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "智能体已创建部署 PR。查看生成的文件并合并以启动部署管道。", - "The agent is creating the setup PR to enable the Copilot agent.": "智能体正在创建设置 PR 以启用 Copilot 智能体。", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "必须在 {{repoName}} 上安装 AKS 桌面 GitHub Apps 才能继续。", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "创建托管命名空间需要 aks-preview 扩展。请先安装以继续。", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot 编码智能体正在分析存储库,并使用 Dockerfile、Kubernetes 清单和 GitHub Actions 工作流生成部署 PR。", - "The following addons can be enabled on this cluster:": "可在此群集上启用以下加载项:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "将会创建以下 Azure 资源,以支持 GitHub Actions 管道向 AKS 群集进行身份验证:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "将通过添加这些标签,将以下命名空间转换为 AKS 桌面项目:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "用于检查运行状况的 HTTP 路径(例如 /healthz)。探测对此路径执行 HTTP GET 请求。", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "用于检查就绪情况的 HTTP 路径(例如,/ready)。探测对此路径执行 HTTP GET 请求。", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "用于检查启动的 HTTP 路径(例如/startup)。探测对此路径执行 HTTP GET 请求。", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "必须注册 ManagedNamespacePreview 功能才能创建托管命名空间。", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "容器可使用的最大 CPU 量。超出后,容器将被限流。", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "容器可使用的最大内存量。超出后,容器将被终止(OOMKilled)。", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "HPA 在 CPU 使用率较高时可以纵向扩展到的最大 Pod 副本数。", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "容器保证最小 CPU 量。Kubernetes 会将 Pod 调度到至少有此可用 CPU 的节点上。", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "容器保证最小内存量。Kubernetes 会将 Pod 调度到至少有此可用内存的节点上。", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "HPA 即使在 CPU 使用率较低时仍会维护的最小 Pod 副本数。", - "The namespace will be created on the selected cluster and set up as a project": "命名空间将在所选群集上创建,并设置为项目", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "要运行的 Pod 副本数。更多的副本可提供更好的可用性和负载分配。", - "The operation may still be running on GitHub. Check the link above for the latest status.": "该操作可能仍在 GitHub 上运行。检查上面的链接以了解最新状态。", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes 服务公开的端口号。发往此端口的流量将转发到目标端口。", - "The port number that your container listens on. This is the port inside the container where your application runs.": "容器侦听的端口号。这是运行应用程序的容器内的端口。", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "所有 Pod 中的目标平均 CPU 使用率百分比。当 CPU 使用率超过此值时,HPA 将纵向扩展,并在低于此值时纵向缩减。", - "There are no deployments in this project namespace yet.": "此项目命名空间中尚无部署。", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "用时超出预期。检查 GitHub 上的 PR 以了解最新状态。", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "这可能是权限问题。请检查你的 GitHub Apps 权限,然后重试。", - "This PR was closed without merging. You may need to restart the process.": "已关闭此 PR 但未合并。可能需要重启进程。", - "This typically takes 10–25 minutes.": "此操作通常需要 10-25 分钟。", - "timeoutSeconds": "TimeoutSeconds", - "Total Pods": "Pod 总数", - "Track agent progress": "跟踪代理进度", - "Trigger": "触发器", - "Trigger Copilot Agent": "触发 Copilot 智能体", - "Triggering...": "正在触发...", - "Try again, or check GitHub for details.": "请重试,或查看 GitHub 以了解详细信息。", - "Type": "类型", - "Unknown error": "未知错误", - "unnamed": "未命名", - "Up next": "后续步骤", - "Update": "更新", - "Updating": "正在更新", - "Updating local settings": "正在更新本地设置", - "Upload files": "上传文件", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "使用 ClusterIP。适用于仅在群集内可访问的服务。", - "Use custom service port": "使用自定义服务端口", - "Use existing manifests for full control": "使用现有清单实现完全控制", - "User assignment completed with errors": "用户分配已完成,但出现错误", - "Validation failed": "验证失败", - "Value": "值", - "View deployment": "查看部署", - "View on GitHub": "在 GitHub 上查看", - "View run on GitHub": "在 GitHub 上查看运行", - "View workflow run": "查看工作流运行", - "VPA (Vertical Pod Autoscaler)": "VPA (垂直 Pod 自动缩放程序)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "正在等待代理工作流启动...", - "Waiting for browser authorization...": "正在等待浏览器授权...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "正在等待登录完成...(剩余 {{minutes}} 分钟)", - "Waiting for namespace to be created": "正在等待创建命名空间", - "Waiting for namespace to propagate": "正在等待命名空间传播", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "警告: 无法撤消此操作。将永久删除这些命名空间中的所有资源。", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "探测失败后,Kubernetes 会在放弃并重启容器之前多次尝试此操作。", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "当探测失败时,Kubernetes 将会在放弃前多次尝试此操作。对于启动探测,这决定了重启前等待的时长。", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "探测失败后,Kubernetes 会在将 Pod 标记为未就绪之前多次尝试此操作。", - "with {{count}} project(s)_one": "具有 {{count}} 个项目", - "with {{count}} project(s)_other": "具有 {{count}} 个项目", - "with the following parameters:": "带有以下参数:", - "Wizard steps": "向导步骤", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "已成功触发工作流调度。检查 GitHub Actions 进度。", - "workflow on": "工作流开启", - "Workflows": "工作流", - "Workload identity configured": "已配置工作负载标识", - "Workload identity configured successfully.": "已成功配置工作负载标识。", - "Workloads": "工作负载", - "Yes": "是", - "You can collapse this panel. Progress is saved and will resume when you return.": "可以折叠此面板。进度已保存,并将在返回时继续。", - "You need to be logged in to Azure to register AKS clusters.": "你需要登录 Azure 才能注册 AKS 群集。", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "你的 AKS 项目“{{projectName}}”已创建且准备就绪。", - "Your project \"{{projectName}}\" is ready to use.": "你的项目“{{projectName}}”已可供使用。" + "with {{count}} project(s)_one": "具有 {{count}} 个项目" } diff --git a/plugins/aks-desktop/locales/zh-Hant/translation.json b/plugins/aks-desktop/locales/zh-Hant/translation.json index dd19c1f36..eab4a8fcb 100644 --- a/plugins/aks-desktop/locales/zh-Hant/translation.json +++ b/plugins/aks-desktop/locales/zh-Hant/translation.json @@ -1,629 +1,671 @@ { - "\"AKS Cluster User Role\" scoped to the resource group": "「AKS 叢集使用者角色」範圍為資源群組", - "(already enabled)": "(已啟用)", - "{{count}} cluster(s) hidden — no Azure Entra ID_one": "已隱藏 {{count}} 個叢集 - 沒有 Azure Entra ID", - "{{count}} cluster(s) hidden — no Azure Entra ID_other": "已隱藏 {{count}} 個叢集 - 沒有 Azure Entra ID", - "{{count}} eligible cluster(s) found._one": "找到 {{count}} 個合格的叢集。", - "{{count}} eligible cluster(s) found._other": "找到 {{count}} 個合格的叢集。", - "{{count}} failed._one": "{{count}} 個已失敗。", - "{{count}} failed._other": "{{count}} 個已失敗。", - "{{count}} min_one": "{{count}} 分鐘", - "{{count}} min_other": "{{count}} 分鐘", - "{{count}} selected_one": "已選取 {{count}} 個", - "{{count}} selected_other": "已選取 {{count}} 個", - "{{days}}d ago": "{{days}} 天前", - "{{hours}}h ago": "{{hours}} 小時前", - "{{minutes}} min ago": "{{minutes}} 分鐘前", - "{{seconds}}s ago": "{{seconds}} 秒前", - "{{weeks}}w ago": "{{weeks}} 週前", - "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", - "A cluster must be selected": "必須選取一個叢集", - "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "將在已套用專案標籤的叢集上建立新的命名空間。該命名空間會立即出現在您的專案清單中。", - "Absolute usage": "絕對使用量", - "Access": "存取", - "Access Control ({{count}} assignee)_one": "存取控制 ({{count}} 個受託人)", - "Access Control ({{count}} assignee)_other": "存取控制 ({{count}} 個受託人)", - "Actions": "動作", - "Add assignee": "新增受託人", - "Add Cluster from Azure": "從 Azure 新增叢集", - "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "新增一或多個 Kubernetes 清單。上傳檔案以填入編輯器,或直接在下方貼上/編輯。", - "Add variable": "新增變數", - "Advanced": "進階", - "After merging, the Copilot agent will analyze your repo and create a deployment PR": "合併後,Copilot Agent 會分析您的存放庫,並建立部署 PR", - "Agent is working": "Agent 處理中", + "Failed to load subscriptions": "無法載入訂用帳戶", + "Failed to load AKS clusters": "無法載入 AKS 叢集", + "Cluster '{{cluster}}' successfully merged in kubeconfig": "已順利在 kubeconfig 中合併叢集 '{{cluster}}'", + "Failed to register cluster: {{message}}": "無法註冊叢集: {{message}}", + "Register AKS Cluster": "註冊 AKS 叢集", + "Checking authentication status": "正在檢查驗證狀態", + "You need to be logged in to Azure to register AKS clusters.": "您必須登入 Azure 以註冊 AKS 叢集。", + "Subscription": "訂用帳戶", + "Select an Azure subscription": "選取 Azure 訂用帳戶", + "Loading subscriptions": "正在載入訂閱", + "Loading AKS clusters": "正在載入 AKS 叢集", + "No AKS clusters found in this subscription.": "在此訂用帳戶中找不到 AKS 叢集。", "AKS Cluster": "AKS 叢集", - "AKS desktop logo": "AKS Desktop 標誌", - "AKS Managed": "AKS 管理", - "AKS Preview Extension installed successfully!": "已成功安裝 AKS 預覽延伸模組!", - "AKS Preview Extension Required": "需要 AKS 預覽延伸模組", - "AKS Project?": "AKS 專案?", - "All selected addons have been enabled successfully.": "所有選取的附加元件已成功啟用。", - "All verifications completed successfully!": "已順利完成所有驗證!", - "Allow all traffic": "允許所有流量", - "Allow privilege escalation": "允許權限提升", - "Allow traffic within same namespace": "允許相同命名空間內的流量", - "Already AKS projects (will import directly):": "已為 AKS 專案 (將直接匯入):", - "Also delete the namespaces (this will remove all resources within them)": "也會刪除命名空間 (這將移除命名空間內的所有資源)", - "Another project already exists with same name. Please choose a different name.": "已有另一個相同名稱的專案存在。請選擇其他名稱。", - "Application Health": "應用程式健全狀況", - "Application Metrics": "應用程式計量", - "Application name": "應用程式名稱", - "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "已套用 {{applied}} 個資源,但 {{failed}} 失敗:\n{{errors}}", - "Applied {{count}} resource(s) successfully._one": "已成功套用 {{count}} 個資源。", - "Applied {{count}} resource(s) successfully._other": "已成功套用 {{count}} 個資源。", - "Are you sure you want to delete project \"{{projectId}}\"?": "確定要刪除專案 \"{{projectId}}\" 嗎?", - "Assign permissions to users who need access to your namespace": "將權限指派給需要存取您命名空間的使用者", - "Assignee": "受託人", - "Assigning AKS Cluster User Role...": "正在指派 AKS 叢集使用者角色...", - "Authorize AKS Desktop to create deployment pipelines in your repository.": "授權 AKS Desktop 在您的存放庫中建立部署管線。", - "Auto-generated Deployment and Service manifests": "自動產生的部署和服務資源清單", - "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "根據 CPU 使用率自動調整 Pod 數目。HPA 會在 CPU 使用量超過目標時增加 Pod,低於目標值時減少。", - "Available Replicas": "可用的複本", - "Avg Response Time": "平均回應時間", - "Azure Account": "Azure 帳戶", - "Azure AD object ID": "Azure AD object ID", + "Select an AKS cluster": "選取 AKS 叢集", + "Selected Cluster Details": "已選取的叢集詳細資料", + "Name": "名稱", + "Resource Group": "資源群組", + "Location": "位置", + "Kubernetes Version": "Kubernetes 版本", + "Done": "完成", + "Cancel": "取消", + "Registering": "正在註冊", + "Register Cluster": "註冊叢集", + "Initiating Azure login": "正在起始 Azure 登入", + "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "請在瀏覽器中完成驗證。登入完成後,此視窗會自動重新導向。", + "Login successful! Redirecting": "登入成功!正在重新導向", + "Login timeout. Please try again.": "登入逾時。請再試一次。", + "Waiting for login completion... ({{minutes}} minutes remaining)": "正在等待登入完成...(剩餘 {{minutes}} 分鐘)", + "Failed to initiate login: {{message}}": "無法起始登入: {{message}}", "Azure Authentication": "Azure 驗證", - "Azure CLI/aks-preview requirements not met": "未符合 Azure CLI/aks-preview 需求", - "Azure Monitor Metrics (Managed Prometheus)": "Azure 監視器計量 (受控 Prometheus)", + "Sign in with your Azure account to manage AKS clusters and resources": "使用 Azure 帳戶登入以管理 AKS 叢集和資源", + "Sign in with Azure": "使用 Azure 登入", + "Loading Azure account information": "正在載入 Azure 帳戶資訊", "Back": "返回", - "Basics": "基本", - "branch": "分支", - "Bring your own Kubernetes manifests to deploy": "使用您自己的 Kubernetes 資源清單以部署", - "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "根據預設,探查會以合理的預設值在根路徑使用 HTTP GET。啟用此功能以自訂探查設定。", - "By default, the service port matches the target port. Enable this to use a different port for the service.": "根據預設,服務連接埠會符合目標連接埠。啟用此功能以使用該服務的不同連接埠。", - "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "根據預設,這會從下列命名空間移除 Azure 受控命名空間和專案標籤:", - "Cancel": "取消", - "Canceling will discard your pipeline progress. Are you sure?": "取消將會捨棄您的管線進度。您確定嗎?", - "Cancelled deletion of project {{ projectId }}.": "已取消刪除專案 {{ projectId }}。", - "Checking authentication status": "正在檢查驗證狀態", - "Checking for existing identity...": "正在檢查現有的身分識別...", - "Checking if another project exists with same name": "正在檢查另一個名稱相同的專案是否存在", - "Checking merge status...": "正在檢查合併狀態...", - "Checking repository readiness...": "正在檢查存放庫整備度...", - "Checking...": "正在檢查...", - "Choose a source for your deployment (container image, repo, etc.).": "選擇部署的來源 (容器映像、存放庫等)。", - "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} 的 CI/CD 管線已就緒。從 [部署] 索引標籤觸發部署。", - "Clear editor": "清除編輯器", - "Close": "關閉", - "Cluster": "叢集", - "Cluster '{{cluster}}' successfully merged in kubeconfig": "已順利在 kubeconfig 中合併叢集 '{{cluster}}'", - "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "必須先註冊叢集 {{clusterName}},才能匯入一般命名空間。請先從此叢集匯入一個受控命名空間。", - "Cluster Configuration": "叢集設定", - "Cluster is being deleted. Cannot deploy to this cluster.": "正在刪除叢集。無法部署到此叢集。", + "Azure Account": "Azure 帳戶", + "Logged in as": "登入身分為", + "Add Cluster from Azure": "從 Azure 新增叢集", + "Logging out": "正在登出", + "Log out": "登出", + "Azure CLI/aks-preview requirements not met": "未符合 Azure CLI/aks-preview 需求", + "Dismiss": "關閉", + "Configure Pipeline": "設定管線", + "Loading Azure context...": "正在載入 Azure 內容...", + "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "命名空間中大部分物件的唯讀存取權。無法檢視角色、角色繫結或祕密。", + "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "命名空間中大部分物件的讀取/寫入存取權。無法檢視或修改角色或角色繫結。可以存取祕密,並以命名空間中的任何 ServiceAccount 的身分執行 Pod。", + "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "命名空間中大部分資源的讀取/寫入存取權。可以在命名空間內建立角色和角色繫結。無法寫入資源配額或命名空間本身。", + "Access": "存取", + "Assign permissions to users who need access to your namespace": "將權限指派給需要存取您命名空間的使用者", + "Assignee": "受託人", + "Search for a user or remove this entry": "", + "Select a user from the search results or enter a valid object ID (UUID)": "", + "Role": "角色", + "Remove assignee": "移除受託人", + "Add assignee": "新增受託人", + "Only clusters with Azure Entra ID authentication are shown.": "僅顯示具有 Azure Entra ID 驗證的叢集。", + "{{count}} cluster(s) hidden — no Azure Entra ID_other": "已隱藏 {{count}} 個叢集 - 沒有 Azure Entra ID", + "No eligible clusters found in this subscription.": "在此訂用帳戶中找不到合格的叢集。", + "{{count}} eligible cluster(s) found._other": "找到 {{count}} 個合格的叢集。", "Cluster is currently updating. Deployment may fail.": "正在更新叢集。部署可能會失敗。", - "Cluster is deallocated. Please start the cluster before deploying.": "叢集已解除配置。部署之前,請先啟動該叢集。", - "Cluster is in a failed state. Please check Azure portal.": "叢集處於失敗狀態。請檢查 Azure 入口網站。", + "Cluster is being deleted. Cannot deploy to this cluster.": "正在刪除叢集。無法部署到此叢集。", "Cluster is still being created. Please wait until creation completes.": "仍在建立叢集。請等待建立完成。", + "Cluster is in a failed state. Please check Azure portal.": "叢集處於失敗狀態。請檢查 Azure 入口網站。", "Cluster is stopped. Please start the cluster before deploying.": "已停止叢集。部署之前,請先啟動該叢集。", + "Cluster is deallocated. Please start the cluster before deploying.": "叢集已解除配置。部署之前,請先啟動該叢集。", + "AKS Preview Extension Required": "需要 AKS 預覽延伸模組", + "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "要求 aks-preview 延伸模組才能建立受控命名空間。請安裝它以繼續。", + "Installing": "正在安裝", + "Install Extension": "安裝延伸模組", + "AKS Preview Extension installed successfully!": "已成功安裝 AKS 預覽延伸模組!", + "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "必須註冊 ManagedNamespacePreview 功能以建立受控命名空間。", + "Current state": "目前的狀態", + "Please register it to continue.": "請將其註冊以繼續。", + "Register ManagedNamespacePreview Feature": "註冊 ManagedNamespacePreview 功能", + "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 功能已成功註冊!", + "Project Name": "專案名稱", + "Checking if another project exists with same name": "正在檢查另一個名稱相同的專案是否存在", + "Another project already exists with same name. Please choose a different name.": "已有另一個相同名稱的專案存在。請選擇其他名稱。", + "Project name is available": "專案名稱可用", + "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "專案名稱只能包含小寫字母、數字和連字號 (無空格)", + "Project Description": "專案描述", + "Enter project description": "輸入專案描述", + "Select a subscription": "選取訂閱", + "Search subscriptions": "搜尋訂用帳戶", + "No subscriptions found": "找不到訂用帳戶", + "Retry": "重試", + "Cluster": "叢集", + "Please select a subscription first": "請先選取訂用帳戶", + "Loading clusters": "正在載入叢集", + "Select a cluster": "選取叢集", + "Search clusters": "搜尋叢集", + "No clusters with Azure Entra ID authentication found for this subscription": "找不到此訂用帳戶具有 Azure Entra ID 驗證的叢集", "Cluster Not Ready": "叢集未就緒", - "Collapse panel": "摺疊面板", - "Complete authorization on your browser screen": "在您的瀏覽器畫面上完成授權", - "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "在您的瀏覽器中完成安裝。一旦應用程式安裝在 {{repoName}} 上,將會自動更新。", - "Compute Quota": "計算配額", - "Configuration Complete": "設定完成", - "Configuration Error": "設定錯誤", + "Refreshing": "正在重新整理", + "Refresh": "重新整理", + "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "kubeconfig 遺漏已選取的叢集。在繼續之前請先註冊。", + "Registering cluster": "正在註冊叢集", + "Wizard steps": "精靈步驟", + "Azure Monitor Metrics (Managed Prometheus)": "Azure 監視器計量 (受控 Prometheus)", + "KEDA (Event-Driven Autoscaling)": "KEDA (事件驅動自動調整)", + "VPA (Vertical Pod Autoscaler)": "VPA (垂直 Pod 自動調整器)", "Configuration is taking longer than expected. Please check the Azure portal for the current status of your cluster.": "設定耗費的時間超出預期。請檢查 Azure 入口網站以了解您叢集目前的狀態。", - "Configure": "設定", - "Configure Cluster": "設定叢集", - "Configure Container Deployment": "設定容器部署", - "Configure container health probes.": "設定容器健康情況探查。", - "Configure Pipeline": "設定管線", - "Configure security context settings for the container.": "設定容器的資訊安全內容設定。", - "Configure Workload Identity": "設定工作負載身分識別", - "Configured Replicas": "已設定的複本", + "Failed to enable addons": "無法啟用附加元件", + "Failed to enable addon: {{error}}": "無法啟用附加元件: {{error}}", + "Cluster Configuration": "叢集設定", + "(already enabled)": "(已啟用)", + "The following addons can be enabled on this cluster:": "可以在此叢集上啟用下列附加元件:", + "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "建立叢集之後,無法變更網路原則引擎。建立新叢集", + "for full network policy support.": "以獲得完整網路原則支援。", + "Enabling these addons may incur additional Azure costs.": "啟用這些附加元件可能會產生額外的 Azure 成本。", + "Configuration Error": "設定錯誤", + "Configuration Complete": "設定完成", + "All selected addons have been enabled successfully.": "所有選取的附加元件已成功啟用。", "Configuring cluster... This may take a few minutes.": "正在設定叢集...這可能需要幾分鐘的時間。", - "Configuring federated credential...": "正在設定同盟認證...", + "Enabling Addons...": "正在啟用附加元件...", "Configuring...": "正在設定...", - "Confirm & Import": "確認並匯入", - "Connect": "連線", - "Connect GitHub": "連線 GitHub", - "Connect Source": "連線來源", - "Connect to GitHub": "連線至 GitHub", - "Connected": "已連接", - "Connected to '{{username}}'.": "已連線到 '{{username}}'。", - "Connecting to GitHub...": "正在連線到 GitHub...", - "Connecting...": "正在連線...", - "Container image": "容器映像", - "Container Image": "容器映像", - "Contents": "內容", - "Continue": "繼續", - "Controls whether a process can gain more privileges than its parent process.": "控制程序是否可以取得比其上層程序更多的權限。", - "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "控制程序是否可以取得比其上層程序更多的權限。停用此項目 (建議) 可防止權限提升攻擊。", - "Convert Namespaces to AKS Projects": "將命名空間轉換為 AKS 專案", - "Converting": "正在轉換", - "Converting {{name}} to AKS project (this may take a moment)...": "正在將 {{name}} 轉換為 AKS 專案 (這可能需要一點時間)...", - "Copied!": "已複製!", - "Copilot agent": "Copilot Agent", - "Copilot agent reviewed your repo and generated deployment PR": "Copilot Agent 已檢閱您的存放庫並產生部署 PR", - "Copy": "複製", - "Copy to clipboard": "複製到剪貼簿", - "CPU": "CPU", - "CPU limit": "CPU 限制", - "CPU Limits": "CPU 限制", - "CPU request": "CPU 要求", - "CPU Requests": "CPU 要求", + "Configure Cluster": "設定叢集", + "Compute Quota": "計算配額", + "Set quota limits to prevent overuse and maintain cluster stability": "設定配額限制,以防止超用並維持叢集的穩定性", "CPU Resources": "CPU 資源", - "CPU Usage": "CPU 使用量", - "CPU Usage / Target": "CPU 使用量 / 目標", - "Create a new namespace on an existing cluster and set it up as a project": "在現有叢集上建立新的命名空間,並將其設定為專案", - "Create Application": "建立應用程式", - "Create deployment PRs": "建立部署 PR", - "Create Namespace": "建立命名空間", - "Create New Namespace": "建立新的命名空間", - "Create Project": "建立專案", - "Create Setup PR": "建立設定 PR", - "Create setup workflow in .github/workflows/": "在 .github/workflow/ 中建立設定工作流程", - "Creates a LoadBalancer to expose the application to the internet.": "建立 LoadBalancer,將應用程式公開至網際網路。", - "Creating managed identity...": "正在建立受控識別...", - "Creating namespace": "正在建立命名空間", - "Creating Namespace": "正在建立命名空間", - "Creating Project": "正在建立專案", - "Creating setup PR...": "正在建立設定 PR...", - "Creating the trigger issue for the Copilot coding agent.": "正在建立 Copilot 程式碼編寫 Agent 的觸發程式問題。", - "Current Replicas": "目前的複本數", - "Current state": "目前的狀態", - "Degraded": "已降級", + "CPU Requests": "CPU 要求", + "Minimum CPU guaranteed (1000m = 1 CPU core)": "保證的最低 CPU (1000m = 1 個 CPU 核心)", + "CPU Limits": "CPU 限制", + "Maximum CPU allowed (1000m = 1 CPU core)": "允許的 CPU 上限 (1000m = 1 個 CPU 核心)", + "Memory Resources": "記憶體資源", + "Memory Requests": "記憶體要求", + "Minimum memory guaranteed (1024 MiB = 1 GiB)": "保證的記憶體下限 (1024 MiB = 1 GiB)", + "Memory Limits": "記憶體限制", + "Maximum memory allowed (1024 MiB = 1 GiB)": "允許的記憶體上限 (1024 MiB = 1 GiB)", + "Basics": "基本", + "Networking Policies": "網路原則", + "Review": "檢閱", + "New Project": "新專案", + "Set up and configure a new project in Azure Kubernetes Service (AKS)": "在 Azure Kubernetes Service (AKS) 中設定新專案", + "Creating Project": "正在建立專案", + "Create Project": "建立專案", + "Loading": "正在載入", + "Next": "下一個", + "Project Created Successfully!": "已成功建立專案!", + "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "已建立您的 AKS 專案「{{projectName}}」且已隨時可用。", + "Application name": "應用程式名稱", + "Enter application name": "輸入應用程式名稱", + "Enter a name for your first application to get started with deployment.": "輸入第一個應用程式的名稱以開始部署。", + "Create Application": "建立應用程式", + "Project Creation Failed": "專案建立失敗", + "Set security, communication and access rules for incoming and outgoing traffic": "設定傳入和傳出流量的安全性、通訊和存取規則", + "Allow traffic within same namespace": "允許相同命名空間內的流量", + "Allow all traffic": "允許所有流量", + "Deny all traffic": "拒絕所有流量", + "Review Project Configuration": "檢查專案設定", + "Please review all the settings before creating your AKS project": "請先檢閱所有設定,再建立 AKS 專案", + "Project Basics": "專案基本資料", + "Description": "描述", + "No description provided": "未提供任何描述", + "Ingress Policy": "輸入原則", + "Egress Policy": "輸出原則", + "CPU": "CPU", + "Requests": "要求", + "Limits": "限制", + "Memory": "記憶體", + "Access Control ({{count}} assignee)_other": "存取控制 ({{count}} 個受託人)", + "Not specified": "未指定", + "Select an option": "選取選項", + "No options": "沒有選項", + "00000000-0000-0000-0000-000000000000": "00000000-0000-0000-0000-000000000000", + "Search by name or email...": "", + "No users found": "", + "Type at least 2 characters to search": "", + "User search is not available. Enter the Azure AD object ID (UUID) directly. Find it in Azure Portal > Microsoft Entra ID > Users > select user > Object ID.": "", + "Object ID": "", + "Starting project creation": "開始建立專案", + "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "專案建立在 10 分鐘後逾時。請檢查是否已建立命名空間,然後再試一次。", + "Initiating managed namespace creation": "正在起始受控命名空間建立", + "Namespace creation failed: {{message}}": "命名空間建立失敗: {{message}}", + "Namespace creation initiated! Monitoring creation status": "已起始命名空間建立!正在監視建立狀態", + "Waiting for namespace to propagate": "正在等待命名空間散佈", + "Namespace status check failed: {{message}}": "命名空間狀態檢查失敗: {{message}}", + "Waiting for namespace to be created": "正在等待建立命名空間", + "Namespace status verification failed: {{message}}": "命名空間狀態驗證失敗: {{message}}", + "Namespace creation API succeeded, proceeding with user assignments": "命名空間建立 API 成功,繼續進行使用者指派", + "Namespace creation completed successfully! Adding user access": "已成功完成命名空間建立!新增使用者存取", + "User assignment completed with errors": "已完成使用者指派,但發生錯誤", + "Project creation completed successfully!": "已成功完成專案建立!", + "Performing final status verification": "正在執行最終狀態驗證", + "Final status check failed: {{message}}": "最終狀態檢查失敗: {{message}}", + "Final status verification failed: {{message}}": "最終狀態驗證失敗: {{message}}", + "All verifications completed successfully!": "已順利完成所有驗證!", + "Failed to create project": "無法建立專案", + "A cluster must be selected": "必須選取一個叢集", + "Namespace name is required": "命名空間名稱為必要項目", + "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "命名空間名稱必須只包含小寫字母、數字和連字號,且開頭和結尾必須為英數字元", + "Namespace name must be 63 characters or fewer": "命名空間名稱不得超過 63 個字元", + "Creating namespace": "正在建立命名空間", + "Updating local settings": "正在更新本機設定", + "Namespace created successfully!": "已成功建立命名空間!", + "Failed to create namespace": "無法建立命名空間", + "No clusters found. Register a cluster first.": "找不到任何叢集。請先註冊叢集。", + "Namespace Name": "命名空間名稱", + "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "必須只包含小寫字母、數字和連字號,且開頭和結尾必須為英數字元", + "The namespace will be created on the selected cluster and set up as a project": "將在選取的叢集上建立命名空間,並設定為專案", + "Type": "類型", + "Regular Kubernetes namespace": "一般 Kubernetes 命名空間", + "A new namespace will be created on the cluster with project labels applied. It will appear in your project list immediately.": "將在已套用專案標籤的叢集上建立新的命名空間。該命名空間會立即出現在您的專案清單中。", + "Create New Namespace": "建立新的命名空間", + "Create a new namespace on an existing cluster and set it up as a project": "在現有叢集上建立新的命名空間,並將其設定為專案", + "Creating Namespace": "正在建立命名空間", + "Namespace Creation Failed": "命名空間建立失敗", + "Namespace Created Successfully!": "已成功建立命名空間!", + "Your project \"{{projectName}}\" is ready to use.": "您的專案「{{projectName}}」已可供使用。", + "Go To Projects": "移至專案", + "Create Namespace": "建立命名空間", "Delete project": "刪除專案", "Delete Project": "刪除專案", + "Are you sure you want to delete project \"{{projectId}}\"?": "確定要刪除專案 \"{{projectId}}\" 嗎?", + "By default, this will remove the Azure managed namespace and project labels from the following namespaces:": "根據預設,這會從下列命名空間移除 Azure 受控命名空間和專案標籤:", + "Also delete the namespaces (this will remove all resources within them)": "也會刪除命名空間 (這將移除命名空間內的所有資源)", + "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "警告: 此動作無法復原。將永久刪除這些命名空間中的所有資源。", + "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "注意: 對於 AKS 受控命名空間,將會自動移除 Azure ARM 管理。", "Delete Project & Namespaces": "刪除專案與命名空間", - "Deleted project {{ projectId }}.": "已刪除專案 {{ projectId }}。", "Deleting project {{ projectId }}…": "正在刪除專案 {{ projectId }}...", - "Deny all traffic": "拒絕所有流量", - "Deploy": "部署", - "Deploy {{repo}}": "部署 {{repo}}", - "Deploy an application to start viewing metrics.": "部署應用程式以開始檢視計量。", - "Deploy an application to view logs.": "部署應用程式以檢視記錄。", + "Cancelled deletion of project {{ projectId }}.": "已取消刪除專案 {{ projectId }}。", + "Deleted project {{ projectId }}.": "已刪除專案 {{ projectId }}。", + "Error deleting project {{ projectId }}.": "刪除專案 {{ projectId }} 時發生錯誤。", "Deploy Application": "部署應用程式", - "Deploy from Azure Container Registry, Docker Hub, or GHCR": "部署自 Azure Container Registry、Docker Hub 或 GHCR", + "Failed to load pipeline runs": "無法載入管線執行", + "Pipeline": "管線", + "Set up your pipeline": "設定您的管線", + "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "設定 CI/CD 管線以自動化部署並簡化您的工作流程", + "Waiting for browser authorization...": "正在等待瀏覽器授權...", + "Sign in to GitHub to view pipeline runs.": "登入 GitHub 以檢視管線執行。", + "Connecting...": "正在連線...", + "No pipeline runs yet.": "尚沒有管線執行。", + "View on GitHub": "在 GitHub 上檢視", + "View run on GitHub": "在 GitHub 上檢視執行", + "Healthy": "狀況良好", + "Scaled down": "已縮小", + "Degraded": "已降級", + "VS Code": "VS Code", + "Manual": "手動", + "Manual Deploy": "手動部署", + "Deploy {{repo}}": "部署 {{repo}}", "Deploy via Pipeline": "透過管線部署", - "Deploying": "正在部署", + "No deployments found in this namespace.": "在此命名空間中找不到部署。", "Deployment": "部署", - "Deployment PR": "部署 PR", - "Deployment PR Ready": "部署 PR 就緒", - "Deployment PR reviewed and merged": "已檢閱並合併部署 PR", - "Deployment source": "部署來源", - "Description": "描述", - "Deselect All": "取消全選", - "Desired Replicas": "需要的複本數", - "Discard": "捨棄", - "Dismiss": "關閉", - "Distributes pods evenly across nodes to improve workload distribution.": "將 Pod 平均散發至多個節點,以改進工作負載散發。", - "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "將 Pod 平均分散到節點、區域或其他拓撲網域,以改善工作負載分佈和可用性。", - "Done": "完成", - "Edit Configuration": "編輯設定", + "Source": "來源", + "Replicas": "複本", + "Ready": "就緒", + "Status": "狀態", + "Actions": "動作", "Edit deployment": "編輯部署", - "Edit HPA Configuration": "編輯 HPA 設定", - "Edit Manual Scaling Configuration": "編輯手動縮放設定", - "Egress Policy": "輸出原則", + "View workflow run": "檢視工作流程執行", + "Re-deploy": "重新部署", + "Failed to trigger deployment": "無法觸發部署", + "Trigger": "觸發程序", + "workflow on": "工作流程於", + "with the following parameters:": "使用下列參數:", + "Namespace": "命名空間", + "Sign in": "登入", + "GitHub authentication required to trigger deployment.": "觸發部署需要 GitHub 驗證。", + "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "工作流程分派已成功觸發。檢查 GitHub Actions 以了解進度。", + "Close": "關閉", + "Triggering...": "正在觸發...", + "Deploy": "部署", "Enable GitHub Pipelines in Settings → Preview Features to use pipeline deployments.": "在 [設定] → [預覽功能] 中啟用 GitHub 管線,以使用管線部署。", - "Enable GitHub-based deployment pipelines for AKS projects.": "啟用 AKS 專案的 GitHub 型部署管線。", - "Enable Horizontal Pod Autoscaler": "啟用水平 Pod 自動調整器", - "Enable liveness probe": "啟用活躍度探查", - "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "啟用或停用仍在開發中的功能。預覽功能可能會在未來版本中變更或移除。", - "Enable pod anti-affinity": "啟用 Pod 反親和性", - "Enable public access": "啟用公用存取", - "Enable readiness probe": "啟用整備度探查", - "Enable resource requests and limits": "啟用資源要求和限制", - "Enable startup probe": "啟用啟動探查", - "Enable topology spread constraints": "啟用拓撲擴張限制", - "Enabling Addons...": "正在啟用附加元件...", - "Enabling these addons may incur additional Azure costs.": "啟用這些附加元件可能會產生額外的 Azure 成本。", - "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "確定複本最小值≤最大值以及目標 CPU 介於 10% 到 95% 之間。", + "Workloads": "工作負載", + "No clusters in this project.": "此專案中沒有叢集。", + "Failed to fetch deployments": "無法擷取部署", + "Failed to fetch cluster status": "無法擷取叢集狀態", + "Configure security context settings for the container.": "設定容器的資訊安全內容設定。", + "Run as non root user": "以非根使用者身分執行", "Ensures the container runs as a non-root user (UID != 0) for better security. This prevents privilege escalation attacks.": "確保容器以非根使用者的身分執行 (UID != 0),以提升安全性。這可防止權限提升攻擊。", "Ensures the container runs as a non-root user for better security.": "確保容器以非根使用者的身分執行,以提升安全性。", - "Ensuring resource group exists...": "正在確保資源群組存在...", - "Enter a name for your first application to get started with deployment.": "輸入第一個應用程式的名稱以開始部署。", - "Enter application name": "輸入應用程式名稱", - "Enter project description": "輸入專案描述", - "Environment Variables": "環境變數", - "Error deleting project {{ projectId }}.": "刪除專案 {{ projectId }} 時發生錯誤。", - "Error Rate": "錯誤率", - "Failed to apply": "無法套用", - "Failed to apply resources.": "無法申請資源。", - "Failed to convert namespace: {{message}}": "無法轉換命名空間: {{message}}", - "Failed to create namespace": "無法建立命名空間", - "Failed to create project": "無法建立專案", - "Failed to enable addon: {{error}}": "無法啟用附加元件: {{error}}", - "Failed to enable addons": "無法啟用附加元件", - "Failed to fetch cluster status": "無法擷取叢集狀態", - "Failed to fetch deployment status": "無法擷取部署狀態", - "Failed to fetch deployments": "無法擷取部署", - "Failed to fetch managed namespace details": "無法擷取受控命名空間詳細資料", - "Failed to fetch managed namespaces": "無法擷取受控命名空間", - "Failed to fetch pod status": "無法擷取 Pod 狀態", - "Failed to fetch service status": "無法擷取服務狀態", - "Failed to import any projects. See details below.": "無法匯入任何專案。請參閱下方詳細資料。", - "Failed to initiate login: {{message}}": "無法起始登入: {{message}}", - "Failed to load AKS clusters": "無法載入 AKS 叢集", - "Failed to load Azure context": "無法載入 Azure 內容", - "Failed to load pipeline runs": "無法載入管線執行", - "Failed to load repositories": "無法載入存放庫", - "Failed to load subscriptions": "無法載入訂用帳戶", - "Failed to merge cluster: {{message}}": "無法合併叢集: {{message}}", - "Failed to monitor deployment health": "無法監視部署健康情況", - "Failed to register cluster: {{message}}": "無法註冊叢集: {{message}}", - "Failed to trigger deployment": "無法觸發部署", - "Failed to update managed namespace": "無法更新受控命名空間", - "failureThreshold": "failureThreshold", - "Features": "功能", - "Federated Credential": "同盟認證", - "Filter repositories": "篩選存放庫", - "Final status check failed: {{message}}": "最終狀態檢查失敗: {{message}}", - "Final status verification failed: {{message}}": "最終狀態驗證失敗: {{message}}", - "for full network policy support.": "以獲得完整網路原則支援。", - "Generated Kubernetes manifests (namespace: {{namespace}})": "產生的 Kubernetes 資訊清單 (命名空間: {{namespace}})", - "GitHub authentication required to trigger deployment.": "觸發部署需要 GitHub 驗證。", - "GitHub Pipelines": "GitHub 管線", - "GitHub: {{username}}": "GitHub: {{username}}", - "Go To Projects": "移至專案", - "Guided configuration for ports, replicas, env, and resources": "連接埠、複本、環境及資源的引導式設定", + "Read only root filesystem": "唯讀根檔案系統", + "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "將容器的根檔案系統裝載為唯讀,以防止寫入作業。這會防止惡意程式碼修改系統檔案,以增強安全性。", + "Mounts the container's root filesystem as read-only to prevent write operations.": "將容器的根檔案系統裝載為唯讀,以防止寫入作業。", + "Allow privilege escalation": "允許權限提升", + "Controls whether a process can gain more privileges than its parent process. Disabling this (recommended) prevents privilege escalation attacks.": "控制程序是否可以取得比其上層程序更多的權限。停用此項目 (建議) 可防止權限提升攻擊。", + "Controls whether a process can gain more privileges than its parent process.": "控制程序是否可以取得比其上層程序更多的權限。", + "Enable pod anti-affinity": "啟用 Pod 反親和性", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "寧可在不同節點上排程 Pod,以改進可用性容錯。這有助於確保 Pod 分散在整個叢集中。", + "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "偏好在不同節點上排程 Pod,以改進可用性容錯。", + "Enable topology spread constraints": "啟用拓撲擴張限制", + "Distributes pods evenly across nodes, zones, or other topology domains to improve workload distribution and availability.": "將 Pod 平均分散到節點、區域或其他拓撲網域,以改善工作負載分佈和可用性。", + "Distributes pods evenly across nodes to improve workload distribution.": "將 Pod 平均散發至多個節點,以改進工作負載散發。", + "Container image": "容器映像", + "The number of pod replicas to run. More replicas provide better availability and load distribution.": "要執行的 Pod 複本的數目。更多複本可提供更佳的可用性和負載散發。", + "Continue": "繼續", + "Configure Container Deployment": "設定容器部署", + "Networking": "網路", "Healthchecks": "健康情況檢查", - "Healthy": "狀況良好", - "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "執行活躍度探查的頻率 (秒)。預設值為 10 秒。", - "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "執行整備度探查的頻率 (秒)。預設值為 10 秒。", - "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "執行啟動探查的頻率 (秒)。預設值為 10 秒。", - "HPA scales pods based on CPU utilization.": "HPA 根據 CPU 使用率來縮放 Pod。", - "Identity Resource Group": "身分識別資源群組", - "Import AKS Projects": "匯入 AKS 專案", - "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "將現有的受控命名空間和一般命名空間匯入為專案。尚未成為 AKS Desktop 專案的命名空間將透過新增必要的專案標籤來轉換。", - "Import Selected Projects": "匯入選取的專案", - "Importing": "正在匯入", - "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "正在匯入 {{current}} (共 {{total}}): 來自 {{clusterName}} 的 {{name}}", - "in resource group": "在資源群組中", + "Resource Limits": "資源限制", + "Environment Variables": "環境變數", + "Workload Identity": "", + "Advanced": "進階", "Information about {{label}}": "{{label}} 的相關資訊", - "Information about CPU limit": "CPU 限制相關資訊", - "Information about CPU request": "CPU 要求相關資訊", - "Information about memory limit": "記憶體限制相關資訊", - "Information about memory request": "記憶體要求相關資訊", - "Information about target CPU utilization": "目標 CPU 使用率相關資訊", - "Ingress Policy": "輸入原則", - "initialDelaySeconds": "initialDelaySeconds", - "Initializing...": "正在初始化...", - "Initiating Azure login": "正在起始 Azure 登入", - "Initiating managed namespace creation": "正在起始受控命名空間建立", - "Install Extension": "安裝延伸模組", - "Install GitHub App": "安裝 GitHub 應用程式", - "Installing": "正在安裝", - "Internal only": "僅限內部", - "Invalid YAML": "無效 YAML", - "Invalid YAML: List item missing required field (kind)": "無效的 YAML: 清單項目缺少必要的欄位 (種類)", - "Invalid YAML: List item missing required field (metadata.name)": "無效的 YAML: 清單項目缺少必要的欄位 (metadata.name)", - "Invalid YAML: List resource must have an array \"items\" field": "無效的 YAML: 清單資源必須有陣列 \"items\" 欄位", - "Invalid YAML: missing required field (kind)": "無效的 YAML: 缺少必要的欄位 (種類)", - "Invalid YAML: missing required field (metadata.name)": "無效的 YAML: 缺少必要的欄位 (metadata.name)", - "Issue {{number}}": "問題 {{number}}", - "Issues": "問題", - "just now": "剛剛", - "KEDA (Event-Driven Autoscaling)": "KEDA (事件驅動自動調整)", - "Keep Going": "繼續進行", + "Kubernetes YAML": "Kubernetes YAML", + "Add one or more Kubernetes manifests. Upload files to populate the editor or paste/edit directly below.": "新增一或多個 Kubernetes 清單。上傳檔案以填入編輯器,或直接在下方貼上/編輯。", + "Upload files": "上傳檔案", + "Clear editor": "清除編輯器", + "Review & Deploy": "檢閱與部署", + "Generated Kubernetes manifests (namespace: {{namespace}})": "產生的 Kubernetes 資訊清單 (命名空間: {{namespace}})", + "Resources to be deployed ({{count}} object)_other": "要部署的資源 ({{count}} 個物件)", + "namespace: {{namespace}}": "命名空間: {{namespace}}", + "Configure": "設定", + "Deploying": "正在部署", "Key": "索引鍵", - "Kubernetes restarts the container if this check fails repeatedly.": "如果此檢查重複失敗,Kubernetes 會重新啟動容器。", + "Keys must start with a letter or underscore and contain only letters, numbers, and underscores.": "", + "Value": "值", + "(existing — enter value to overwrite)": "", + "Stored as Kubernetes Secret": "", + "Mark as secret (stored as Kubernetes Secret)": "", + "toggle secret": "", + "remove": "移除", + "Add variable": "新增變數", + "Configure container health probes.": "設定容器健康情況探查。", + "Manually configure settings": "手動配置設定", + "By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.": "根據預設,探查會以合理的預設值在根路徑使用 HTTP GET。啟用此功能以自訂探查設定。", + "Enable liveness probe": "啟用活躍度探查", "Kubernetes restarts the container if this check fails repeatedly. Used to detect and recover from deadlocks or unresponsive containers.": "如果此檢查重複失敗,Kubernetes 會重新啟動容器。用來偵測和復原鎖死或無回應的容器。", - "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes 會暫時停用活躍度/整備度狀態,直到啟動成功。", - "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes 會暫時停用活躍度/整備度狀態,直到啟動成功。適合需要長時間才能啟動的容器。", - "Kubernetes Version": "Kubernetes 版本", - "Kubernetes won't send traffic to the pod until this check passes.": "在此檢查通過之前,Kubernetes 不會將流量傳送至 Pod。", - "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "在此檢查通過之前,Kubernetes 不會將流量傳送至 Pod。用來指出容器何時準備好接受流量。", - "Kubernetes YAML": "Kubernetes YAML", - "less than a minute": "少於 1 分鐘", - "Limits": "限制", + "Kubernetes restarts the container if this check fails repeatedly.": "如果此檢查重複失敗,Kubernetes 會重新啟動容器。", "Liveness path": "活躍度路徑", - "Loading": "正在載入", - "Loading AKS clusters": "正在載入 AKS 叢集", - "Loading Azure account information": "正在載入 Azure 帳戶資訊", - "Loading Azure context...": "正在載入 Azure 內容...", - "Loading clusters": "正在載入叢集", - "Loading configuration...": "正在載入設定...", - "Loading deployments": "正在載入部署", - "Loading metrics": "正在載入計量", - "Loading scaling metrics from Prometheus": "正在從 Prometheus 載入縮放計量", - "Loading subscriptions": "正在載入訂閱", - "Loading...": "正在載入...", - "Location": "位置", - "Log out": "登出", - "Logged in as": "登入身分為", - "Logging out": "正在登出", - "Login successful! Redirecting": "登入成功!正在重新導向", - "Login timeout. Please try again.": "登入逾時。請再試一次。", - "Managed Identity": "受控識別", - "managed namespaces only": "僅限受控命名空間", - "ManagedNamespacePreview feature registered successfully!": "ManagedNamespacePreview 功能已成功註冊!", - "Manual": "手動", - "Manual Deploy": "手動部署", - "Manually configure settings": "手動配置設定", + "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "要檢查活躍度的 HTTP 路徑 (例如 /healthz)。探查會對此路徑執行 HTTP GET 要求。", + "initialDelaySeconds": "initialDelaySeconds", + "Number of seconds after the container has started before liveness probes are initiated.": "容器啟動後,起始活躍度探查前的秒數。", + "periodSeconds": "periodSeconds", + "How often (in seconds) to perform the liveness probe. Default is 10 seconds.": "執行活躍度探查的頻率 (秒)。預設值為 10 秒。", + "timeoutSeconds": "timeoutSeconds", + "Number of seconds after which the probe times out. Default is 1 second.": "探查逾時的秒數。預設值為 1 秒。", + "failureThreshold": "failureThreshold", + "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "當探查失敗時,Kubernetes 會先嘗試這麼多次,之後才放棄並重新啟動容器。", + "successThreshold": "successThreshold", + "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "探查在失敗後要將其視為成功的最小連續成功次數。預設值為 1。", + "Enable readiness probe": "啟用整備度探查", + "Kubernetes won't send traffic to the pod until this check passes. Used to indicate when a container is ready to accept traffic.": "在此檢查通過之前,Kubernetes 不會將流量傳送至 Pod。用來指出容器何時準備好接受流量。", + "Kubernetes won't send traffic to the pod until this check passes.": "在此檢查通過之前,Kubernetes 不會將流量傳送至 Pod。", + "Readiness path": "整備度路徑", + "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "要檢查整備度的 HTTP 路徑 (例如 /ready)。探查會對此路徑執行 HTTP GET 要求。", + "Number of seconds after the container has started before readiness probes are initiated.": "容器啟動後,起始整備度探查前的秒數。", + "How often (in seconds) to perform the readiness probe. Default is 10 seconds.": "執行整備度探查的頻率 (秒)。預設值為 10 秒。", + "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "當探查失敗時,Kubernetes 將先嘗試這麼多次,再將 Pod 標示為未就緒。", + "Enable startup probe": "啟用啟動探查", + "Kubernetes temporarily disables liveness/readiness until startup succeeds. Useful for containers that take a long time to start.": "Kubernetes 會暫時停用活躍度/整備度狀態,直到啟動成功。適合需要長時間才能啟動的容器。", + "Kubernetes temporarily disables liveness/readiness until startup succeeds.": "Kubernetes 會暫時停用活躍度/整備度狀態,直到啟動成功。", + "Startup path": "啟動路徑", + "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "要檢查啟動的 HTTP 路徑 (例如 /startup)。探查會對此路徑執行 HTTP GET 要求。", + "Number of seconds after the container has started before startup probes are initiated.": "容器啟動後,起始啟動探查前的秒數。", + "How often (in seconds) to perform the startup probe. Default is 10 seconds.": "執行啟動探查的頻率 (秒)。預設值為 10 秒。", + "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "當探查失敗時,Kubernetes 會先嘗試這麼多次,之後才放棄。對於啟動探查,這會決定重新啟動前要等候多久。", + "Enable Horizontal Pod Autoscaler": "啟用水平 Pod 自動調整器", + "Automatically scales the number of pods based on CPU utilization. HPA will increase pods when CPU usage exceeds the target and decrease when it's below.": "根據 CPU 使用率自動調整 Pod 數目。HPA 會在 CPU 使用量超過目標時增加 Pod,低於目標值時減少。", + "HPA scales pods based on CPU utilization.": "HPA 根據 CPU 使用率來縮放 Pod。", + "Min replicas": "最小複本", + "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "即使 CPU 使用率較低,HPA 也會維持的最低 Pod 複本數目。", "Max replicas": "最大複本", - "Maximum CPU allowed (1000m = 1 CPU core)": "允許的 CPU 上限 (1000m = 1 個 CPU 核心)", - "Maximum memory allowed (1024 MiB = 1 GiB)": "允許的記憶體上限 (1024 MiB = 1 GiB)", - "Maximum Replicas": "複本上限", + "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "當 CPU 使用率過高,HPA 可調整至的 Pod 複本數目上限。", + "Target CPU utilization": "目標 CPU 使用率", + "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "所有 Pod 的目標平均 CPU 使用率百分比。當 CPU 使用量超過此值時,HPA 將會擴大,低於此值時就會縮小。", + "Ensure min ≤ max replicas and target CPU between 10% and 95%.": "確定複本最小值≤最大值以及目標 CPU 介於 10% 到 95% 之間。", + "Target port": "目標連接埠", + "The port number that your container listens on. This is the port inside the container where your application runs.": "您的容器接聽所在的連接埠號碼。這是應用程式執行所在容器內的連接埠。", + "Service port": "服務連接埠", + "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes 服務公開的連接埠號碼。對此連接埠的流量會轉送至目標連接埠。", + "Use custom service port": "使用自訂服務連接埠", + "By default, the service port matches the target port. Enable this to use a different port for the service.": "根據預設,服務連接埠會符合目標連接埠。啟用此功能以使用該服務的不同連接埠。", + "Service type": "服務類型", + "Internal only": "僅限內部", + "Use ClusterIP. Best for services that are only reachable within the cluster.": "使用 ClusterIP。最適合只能在叢集內觸達的服務。", + "Enable public access": "啟用公用存取", + "Creates a LoadBalancer to expose the application to the internet.": "建立 LoadBalancer,將應用程式公開至網際網路。", + "Enable resource requests and limits": "啟用資源要求和限制", + "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "設定 CPU 和記憶體要求 (保證資源) 和限制 (資源上限),以控制資源配置並防止容器耗用過多的叢集資源。", + "CPU request": "CPU 要求", + "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "保證給容器的 CPU 數量最小值。Kubernetes 會將 Pod 排程到至少具備此可用 CPU 數量的節點上。", + "millicores": "毫核", + "CPU limit": "CPU 限制", + "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "容器可使用的 CPU 數上限。如果超過此限制,將會節流容器。", + "Memory request": "記憶體要求", + "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "保證給容器的記憶體數量最小值。Kubernetes 會將 Pod 排程到至少具備此可用記憶體數量的節點上。", "mebibytes": "二進位兆位元組", - "Memory": "記憶體", "Memory limit": "記憶體限制", - "Memory Limits": "記憶體限制", - "Memory request": "記憶體要求", - "Memory Requests": "記憶體要求", - "Memory Resources": "記憶體資源", - "Memory Usage": "記憶體使用量", - "Memory utilization": "記憶體使用率", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "正在合併叢集 {{clusterName}} ({{count}} 個命名空間)", - "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "正在合併叢集 {{clusterName}} ({{count}} 個命名空間)", - "Metrics": "計量", - "Metrics refreshed every 30 seconds": "每 30 秒重新整理一次計量", - "Metrics Unavailable": "計量無法使用", - "millicores": "毫核", - "Min replicas": "最小複本", - "Minimum consecutive successes for the probe to be considered successful after having failed. Default is 1.": "探查在失敗後要將其視為成功的最小連續成功次數。預設值為 1。", - "Minimum CPU guaranteed (1000m = 1 CPU core)": "保證的最低 CPU (1000m = 1 個 CPU 核心)", - "Minimum memory guaranteed (1024 MiB = 1 GiB)": "保證的記憶體下限 (1024 MiB = 1 GiB)", - "Minimum Replicas": "複本下限", - "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "遺失必要的 Azure 內容。請確保您已登入,且叢集與有效的訂用帳戶、資源群組和租用戶相關聯。", - "Mounts the container's root filesystem as read-only to prevent write operations.": "將容器的根檔案系統裝載為唯讀,以防止寫入作業。", - "Mounts the container's root filesystem as read-only to prevent write operations. This enhances security by preventing malicious code from modifying system files.": "將容器的根檔案系統裝載為唯讀,以防止寫入作業。這會防止惡意程式碼修改系統檔案,以增強安全性。", - "Multi-file support (Deployments, Services, Ingress, etc.)": "多檔案支援 (部署、服務、輸入等)", - "Must contain only lowercase letters, numbers, and hyphens, starting and ending with an alphanumeric character": "必須只包含小寫字母、數字和連字號,且開頭和結尾必須為英數字元", - "Name": "名稱", - "Namespace": "命名空間", - "Namespace '{{name}}' converted and imported as project": "命名空間 '{{name}}' 已轉換並匯入為專案", - "Namespace created successfully!": "已成功建立命名空間!", - "Namespace Created Successfully!": "已成功建立命名空間!", - "Namespace creation API succeeded, proceeding with user assignments": "命名空間建立 API 成功,繼續進行使用者指派", - "Namespace creation completed successfully! Adding user access": "已成功完成命名空間建立!新增使用者存取", - "Namespace Creation Failed": "命名空間建立失敗", - "Namespace creation failed: {{message}}": "命名空間建立失敗: {{message}}", - "Namespace creation initiated! Monitoring creation status": "已起始命名空間建立!正在監視建立狀態", - "Namespace Name": "命名空間名稱", - "Namespace name is required": "命名空間名稱為必要項目", - "Namespace name must be 63 characters or fewer": "命名空間名稱不得超過 63 個字元", - "Namespace name must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character": "命名空間名稱必須只包含小寫字母、數字和連字號,且開頭和結尾必須為英數字元", - "Namespace status check failed: {{message}}": "命名空間狀態檢查失敗: {{message}}", - "Namespace status verification failed: {{message}}": "命名空間狀態驗證失敗: {{message}}", - "namespace: {{namespace}}": "命名空間: {{namespace}}", - "Namespaces to convert:": "要轉換的命名空間:", - "Network I/O": "網路 I/O", - "Network In": "網路輸入", - "Network Out": "網路輸出", - "Network policy engine cannot be changed after cluster creation. Create a new cluster with": "建立叢集之後,無法變更網路原則引擎。建立新叢集", - "Networking": "網路", - "Networking Policies": "網路原則", - "New Project": "新專案", - "Next": "下一個", - "No": "否", - "No AKS clusters found in this subscription.": "在此訂用帳戶中找不到 AKS 叢集。", - "No cluster is associated with this project.": "沒有與此專案關聯的叢集。", - "No clusters found. Register a cluster first.": "找不到任何叢集。請先註冊叢集。", - "No clusters in this project.": "此專案中沒有叢集。", - "No clusters with Azure Entra ID authentication found for this subscription": "找不到此訂用帳戶具有 Azure Entra ID 驗證的叢集", - "No data available": "沒有可用的資料", - "No deployments found": "找不到部署", - "No Deployments Found": "找不到部署", - "No deployments found in this namespace.": "在此命名空間中找不到部署。", - "No description provided": "未提供任何描述", - "No eligible clusters found in this subscription.": "在此訂用帳戶中找不到合格的叢集。", + "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "容器可以使用的記憶體數上限。如果超過,將會終止容器 (OOMKilled)。", + "Container Image": "容器映像", + "Deploy from Azure Container Registry, Docker Hub, or GHCR": "部署自 Azure Container Registry、Docker Hub 或 GHCR", + "Auto-generated Deployment and Service manifests": "自動產生的部署和服務資源清單", + "Guided configuration for ports, replicas, env, and resources": "連接埠、複本、環境及資源的引導式設定", "No Kubernetes expertise required to get started": "不需要 Kubernetes 專長即可開始", - "No options": "沒有選項", - "No pipeline runs yet.": "尚沒有管線執行。", - "No pods found for deployment \"{{name}}\"": "找不到部署「{{name}}」的 Pod", - "No repositories found": "找不到任何存放庫", + "Bring your own Kubernetes manifests to deploy": "使用您自己的 Kubernetes 資源清單以部署", + "Use existing manifests for full control": "使用現有資訊清單進行完全控制", + "Multi-file support (Deployments, Services, Ingress, etc.)": "多檔案支援 (部署、服務、輸入等)", + "Preview and basic validation before apply": "在套用前預覽和基本驗證", + "Select Source": "選取來源", + "Choose a source for your deployment (container image, repo, etc.).": "選擇部署的來源 (容器映像、存放庫等)。", + "Deployment source": "部署來源", + "Features": "功能", + "Enable Workload Identity": "", + "Azure Workload Identity enables pods to authenticate to Azure services using a managed identity without storing credentials. Creates a service account with federated credentials.": "", + "Azure sign-in is required to configure workload identity.": "", + "Create new identity": "", + "Use existing identity": "", + "Identity Resource Group": "身分識別資源群組", + "Resource group for the managed identity. Will be created if it does not exist.": "", + "Identity resource group name is invalid. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid identity name. Use only letters, numbers, hyphens, and underscores.": "", + "Application name produces an invalid Kubernetes service account name. Use only lowercase letters, numbers, and hyphens.": "", + "Reconfigure Identity": "", + "Configure Identity": "", + "Creating resource group...": "", + "Checking for existing identity...": "正在檢查現有的身分識別...", + "Creating managed identity...": "正在建立受控識別...", + "Assigning required roles...": "", + "Fetching OIDC issuer URL...": "", + "Creating federated credential...": "", + "Resource group to search for managed identities.": "", + "Load": "", + "Loading identities...": "", + "Select managed identity": "", + "Choose an existing user-assigned managed identity. You will still need to create federated credentials manually.": "", + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account.": "", + "Client ID": "", + "Service Account": "", + "Invalid YAML: missing required field (kind)": "無效的 YAML: 缺少必要的欄位 (種類)", + "Invalid YAML: List resource must have an array \"items\" field": "無效的 YAML: 清單資源必須有陣列 \"items\" 欄位", + "Invalid YAML: List item missing required field (kind)": "無效的 YAML: 清單項目缺少必要的欄位 (種類)", + "Invalid YAML: List item missing required field (metadata.name)": "無效的 YAML: 清單項目缺少必要的欄位 (metadata.name)", + "Invalid YAML: missing required field (metadata.name)": "無效的 YAML: 缺少必要的欄位 (metadata.name)", + "Invalid YAML": "無效 YAML", + "Validation failed": "驗證失敗", + "Failed to apply": "無法套用", + "Applied {{applied}} resource(s), but {{failed}} failed:\n{{errors}}": "已套用 {{applied}} 個資源,但 {{failed}} 失敗:\n{{errors}}", + "Applied {{count}} resource(s) successfully._other": "已成功套用 {{count}} 個資源。", + "Failed to apply resources.": "無法申請資源。", + "unnamed": "未命名", + "Failed to create container registry": "", + "Container Registry": "", + "Select an Azure Container Registry for building and pushing container images, or create a new one.": "", + "Loading container registries...": "", + "Create new registry": "", + "Skip (configure manually later)": "", + "Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.": "", + "Registry Name": "", + "Globally unique name. 5-50 alphanumeric characters.": "", + "SKU": "", + "Basic": "", + "Standard": "", + "Premium": "", + "Creating...": "", + "Create Registry": "", + "Contents": "內容", + "Push agent config files": "推送 Agent 設定檔", + "Workflows": "工作流程", + "Create setup workflow in .github/workflows/": "在 .github/workflow/ 中建立設定工作流程", + "Pull requests": "提取要求", + "Create deployment PRs": "建立部署 PR", + "Issues": "問題", + "Track agent progress": "追蹤 Agent 進度", + "Run deployment workflows": "執行部署工作流程", + "Connect to GitHub": "連線至 GitHub", + "Connected to '{{username}}'.": "已連線到 '{{username}}'。", + "Authorize AKS Desktop to create deployment pipelines in your repository.": "授權 AKS Desktop 在您的存放庫中建立部署管線。", + "Required Permissions": "必要的權限", + "Complete authorization on your browser screen": "在您的瀏覽器畫面上完成授權", + "Connect": "連線", + "Select repository": "選取存放庫", + "Complete the installation in your browser. This will update automatically once the app is installed on {{repoName}}.": "在您的瀏覽器中完成安裝。一旦應用程式安裝在 {{repoName}} 上,將會自動更新。", + "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "必須在 {{repoName}} 上安裝 AKS Desktop GitHub 應用程式,才能繼續。", + "Reopen install page": "重新啟用安裝頁面", + "Install GitHub App": "安裝 GitHub 應用程式", + "Checking...": "正在檢查...", + "Connecting to GitHub...": "正在連線到 GitHub...", + "Connect GitHub": "連線 GitHub", + "GitHub: {{username}}": "GitHub: {{username}}", + "Connected": "已連接", + "Sign in to GitHub": "登入 GitHub", + "Failed to load repositories": "無法載入存放庫", + "Filter repositories": "篩選存放庫", "No repositories match your filter": "沒有符合您的篩選的存放庫", - "No response time data available": "沒有可用的回應時間資料", - "No scaling data available": "沒有可用的縮放資料", - "No subscriptions found": "找不到訂用帳戶", - "Not specified": "未指定", - "Note: For AKS managed namespaces, Azure ARM management will be removed automatically.": "注意: 對於 AKS 受控命名空間,將會自動移除 Azure ARM 管理。", - "Number of Replicas": "複本數目", - "Number of seconds after the container has started before liveness probes are initiated.": "容器啟動後,起始活躍度探查前的秒數。", - "Number of seconds after the container has started before readiness probes are initiated.": "容器啟動後,起始整備度探查前的秒數。", - "Number of seconds after the container has started before startup probes are initiated.": "容器啟動後,起始啟動探查前的秒數。", - "Number of seconds after which the probe times out. Default is 1 second.": "探查逾時的秒數。預設值為 1 秒。", - "OIDC trust for": "OIDC 信任", - "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Agent 建立部署 PR 之後,請檢閱產生的檔案並合併以開始部署管線", - "Only clusters with Azure Entra ID authentication are shown.": "僅顯示具有 Azure Entra ID 驗證的叢集。", - "Performing final status verification": "正在執行最終狀態驗證", - "periodSeconds": "periodSeconds", - "Pipeline": "管線", + "No repositories found": "找不到任何存放庫", + "less than a minute": "少於 1 分鐘", + "{{count}} min_other": "{{count}} 分鐘", + "Up next": "下一步", + "PR {{number}}": "PR {{number}}", + "Checking merge status...": "正在檢查合併狀態...", + "This is taking longer than expected. Check the PR on GitHub for the latest status.": "耗費的時間超出預期。檢查 GitHub 上的 PR 以了解最新狀態。", + "This PR was closed without merging. You may need to restart the process.": "此 PR 已關閉而未合併。您可能需要重新開始程序。", + "Review on GitHub": "在 GitHub 上檢閱", + "Agent is working": "Agent 處理中", + "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot 程式碼編寫 Agent 正在分析您的存放庫,並產生具有 Dockerfile、Kubernetes 資訊清單和 GitHub Actions 工作流程的部署 PR。", + "Issue {{number}}": "問題 {{number}}", + "Waiting for agent workflow to start...": "正在等候 Agent 工作流程開始...", + "This typically takes 10–25 minutes.": "這通常需要 10 到 25 分鐘。", "Pipeline configured": "管線已設定", - "Please complete the authentication in your browser. This window will automatically redirect once login is complete.": "請在瀏覽器中完成驗證。登入完成後,此視窗會自動重新導向。", - "Please enter a valid Azure AD object ID (UUID format)": "Please enter a valid Azure AD object ID (UUID format)", - "Please enter a valid Azure AD object ID or remove this entry": "Please enter a valid Azure AD object ID or remove this entry", - "Please register it to continue.": "請將其註冊以繼續。", - "Please review all the settings before creating your AKS project": "請先檢閱所有設定,再建立 AKS 專案", - "Please select a deployment to view metrics": "請選取部署以檢視計量", - "Please select a subscription first": "請先選取訂用帳戶", + "CI/CD pipeline for {{repoFullName}} is ready. Trigger deployments from the Deploy tab.": "{{repoFullName}} 的 CI/CD 管線已就緒。從 [部署] 索引標籤觸發部署。", + "Setup PR reviewed and merged": "已檢閱並合併設定 PR", + "Copilot agent reviewed your repo and generated deployment PR": "Copilot Agent 已檢閱您的存放庫並產生部署 PR", + "Deployment PR reviewed and merged": "已檢閱並合併部署 PR", + "View deployment": "檢視部署", + "You can collapse this panel. Progress is saved and will resume when you return.": "您可以摺疊此面板。進度已儲存,當您回來時將會繼續。", + "Creating setup PR...": "正在建立設定 PR...", + "The agent is creating the setup PR to enable the Copilot agent.": "Agent 正在建立設定 PR 以啟用 Copilot Agent。", + "Setup PR Created": "設定 PR 已建立", + "Review and merge the setup PR to enable the Copilot agent.": "檢閱並合併設定 PR 以啟用 Copilot Agent。", + "Setting up Copilot agent...": "正在設定 Copilot Agent...", + "Creating the trigger issue for the Copilot coding agent.": "正在建立 Copilot 程式碼編寫 Agent 的觸發程式問題。", + "Deployment PR Ready": "部署 PR 就緒", + "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agent 已建立部署 PR。檢閱產生的檔案並合併以開始部署管線。", + "Copilot agent": "Copilot Agent", + "After merging, the Copilot agent will analyze your repo and create a deployment PR": "合併後,Copilot Agent 會分析您的存放庫,並建立部署 PR", + "Deployment PR": "部署 PR", + "Once agent has created deployment PR, review the generated files and merge to start the deployment pipeline": "Agent 建立部署 PR 之後,請檢閱產生的檔案並合併以開始部署管線", + "Connect Source": "連線來源", + "Set up Copilot Agent": "設定 Copilot Agent", + "Review & Merge": "檢閱並合併", + "Collapse panel": "摺疊面板", + "Keep Going": "繼續進行", + "Discard": "捨棄", + "Canceling will discard your pipeline progress. Are you sure?": "取消將會捨棄您的管線進度。您確定嗎?", + "Ensuring resource group exists...": "正在確保資源群組存在...", + "Assigning required Azure RBAC roles...": "", + "Configuring federated credential...": "正在設定同盟認證...", + "Workload identity configured": "工作負載身分識別已設定", + "Configure Workload Identity": "設定工作負載身分識別", + "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "將建立下列 Azure 資源,以啟用 GitHub Actions 管線以向 AKS 叢集進行驗證:", + "Managed Identity": "受控識別", + "in resource group": "在資源群組中", + "Role Assignments": "", + "Required Azure RBAC roles for cluster access, deployment, and container registry": "", + "Federated Credential": "同盟認證", + "OIDC trust for": "OIDC 信任", + "branch": "分支", + "Resource group where the managed identity will be created": "將建立受控識別所在的資源群組", + "Workload identity configured successfully.": "工作負載身分識別已成功設定。", + "This may be a permissions issue. Check your GitHub App permissions and try again.": "這可能是權限問題。檢查您的 GitHub 應用程式權限,然後再試一次。", + "The operation may still be running on GitHub. Check the link above for the latest status.": "作業可能仍在 GitHub 上執行中。檢查上方的連結以取得最新狀態。", + "Try again, or check GitHub for details.": "請再試一次,或查看 GitHub 以尋找詳細資料。", + "Initializing...": "正在初始化...", + "Checking repository readiness...": "正在檢查存放庫整備度...", + "Loading configuration...": "正在載入設定...", + "Unknown error": "未知的錯誤", + "Trigger Copilot Agent": "觸發 Copilot Agent", + "Create Setup PR": "建立設定 PR", + "Failed to fetch deployment status": "無法擷取部署狀態", + "Failed to fetch pod status": "無法擷取 Pod 狀態", + "Failed to fetch service status": "無法擷取服務狀態", + "Failed to monitor deployment health": "無法監視部署健康情況", + "Convert Namespaces to AKS Projects": "將命名空間轉換為 AKS 專案", + "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "以下命名空間將透過新增這些標籤轉換為 AKS Desktop 專案:", + "managed namespaces only": "僅限受控命名空間", + "Namespaces to convert:": "要轉換的命名空間:", + "Already AKS projects (will import directly):": "已為 AKS 專案 (將直接匯入):", + "Converting": "正在轉換", + "Confirm & Import": "確認並匯入", "Please select at least one namespace to import": "請至少選取一個要匯出的命名空間", - "Please sign in to Azure to continue.": "請登入 Azure 以繼續。", - "Pod Details": "Pod 詳細資料", - "Pod Name": "Pod 名稱", - "PR {{number}}": "PR {{number}}", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance.": "偏好在不同節點上排程 Pod,以改進可用性容錯。", - "Prefer scheduling pods on different nodes to improve availability and fault tolerance. This helps ensure pods are distributed across the cluster.": "寧可在不同節點上排程 Pod,以改進可用性容錯。這有助於確保 Pod 分散在整個叢集中。", - "Preview and basic validation before apply": "在套用前預覽和基本驗證", - "Preview Features": "預覽功能", - "Project '{{name}}' successfully imported": "已成功匯入專案 '{{name}}'", - "Project Basics": "專案基本資料", - "Project Created Successfully!": "已成功建立專案!", - "Project creation completed successfully!": "已成功完成專案建立!", - "Project Creation Failed": "專案建立失敗", - "Project creation timed out after 10 minutes. Please check if the namespace was created and try again.": "專案建立在 10 分鐘後逾時。請檢查是否已建立命名空間,然後再試一次。", - "Project Description": "專案描述", - "Project Name": "專案名稱", - "Project name is available": "專案名稱可用", - "Project name must contain only lowercase letters, numbers, and hyphens (no spaces)": "專案名稱只能包含小寫字母、數字和連字號 (無空格)", - "Project Status": "專案狀態", - "Pull requests": "提取要求", - "Push agent config files": "推送 Agent 設定檔", - "Re-deploy": "重新部署", - "Read only root filesystem": "唯讀根檔案系統", - "Read-only access to most objects in a namespace. Cannot view roles, role bindings, or Secrets.": "命名空間中大部分物件的唯讀存取權。無法檢視角色、角色繫結或祕密。", - "Read/write access to most objects in a namespace. Cannot view or modify roles or role bindings. Can access Secrets and run Pods as any ServiceAccount in the namespace.": "命名空間中大部分物件的讀取/寫入存取權。無法檢視或修改角色或角色繫結。可以存取祕密,並以命名空間中的任何 ServiceAccount 的身分執行 Pod。", - "Read/write access to most resources in a namespace. Can create roles and role bindings within the namespace. Cannot write to resource quota or the namespace itself.": "命名空間中大部分資源的讀取/寫入存取權。可以在命名空間內建立角色和角色繫結。無法寫入資源配額或命名空間本身。", - "Readiness path": "整備度路徑", - "Ready": "就緒", - "Refresh": "重新整理", - "Refreshing": "正在重新整理", - "Register AKS Cluster": "註冊 AKS 叢集", - "Register Cluster": "註冊叢集", - "Register ManagedNamespacePreview Feature": "註冊 ManagedNamespacePreview 功能", - "Registering": "正在註冊", - "Registering cluster": "正在註冊叢集", + "Cluster {{clusterName}} must be registered before importing regular namespaces. Import a managed namespace from this cluster first.": "必須先註冊叢集 {{clusterName}},才能匯入一般命名空間。請先從此叢集匯入一個受控命名空間。", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_other": "正在合併叢集 {{clusterName}} ({{count}} 個命名空間)", + "Failed to merge cluster: {{message}}": "無法合併叢集: {{message}}", + "Converting {{name}} to AKS project (this may take a moment)...": "正在將 {{name}} 轉換為 AKS 專案 (這可能需要一點時間)...", + "Failed to convert namespace: {{message}}": "無法轉換命名空間: {{message}}", + "Importing {{current}} of {{total}}: {{name}} from {{clusterName}}": "正在匯入 {{current}} (共 {{total}}): 來自 {{clusterName}} 的 {{name}}", + "Project '{{name}}' successfully imported": "已成功匯入專案 '{{name}}'", + "Namespace '{{name}}' converted and imported as project": "命名空間 '{{name}}' 已轉換並匯入為專案", + "Successfully merged {{count}} cluster(s)_other": "已成功合併 {{count}} 個叢集", + "with {{count}} project(s)_other": "具有 {{count}} 個專案", + "{{count}} failed._other": "{{count}} 個已失敗。", + "Failed to import any projects. See details below.": "無法匯入任何專案。請參閱下方詳細資料。", + "Import AKS Projects": "匯入 AKS 專案", + "Import existing managed namespaces and regular namespaces as projects. Namespaces that are not yet AKS Desktop projects will be converted by adding the required project label.": "將現有的受控命名空間和一般命名空間匯入為專案。尚未成為 AKS Desktop 專案的命名空間將透過新增必要的專案標籤來轉換。", + "Select Namespaces to Import": "選取要匯出的命名空間", + "{{count}} selected_other": "已選取 {{count}} 個", + "Select All": "全選", + "Deselect All": "取消全選", + "AKS Managed": "AKS 管理", "Regular": "一般", - "Regular Kubernetes namespace": "一般 Kubernetes 命名空間", - "remove": "移除", - "Remove assignee": "移除受託人", - "Reopen install page": "重新啟用安裝頁面", - "Replica Bounds": "複本界限", - "Replicas": "複本", - "Request & error rate": "要求與錯誤率", + "AKS Project?": "AKS 專案?", + "Yes": "是", + "No": "否", + "Importing": "正在匯入", + "Import Selected Projects": "匯入選取的專案", + "Failed to fetch managed namespaces": "無法擷取受控命名空間", + "Failed to fetch managed namespace details": "無法擷取受控命名空間詳細資料", + "Failed to update managed namespace": "無法更新受控命名空間", + "Updating": "正在更新", + "Update": "更新", + "AKS desktop logo": "AKS Desktop 標誌", + "No Deployments Found": "找不到部署", + "There are no deployments in this project namespace yet.": "此專案命名空間中尚無部署。", + "Deploy an application to view logs.": "部署應用程式以檢視記錄。", + "Metrics": "計量", + "CPU Usage": "CPU 使用量", + "Memory Usage": "記憶體使用量", "Request Rate": "要求速率", - "Requests": "要求", - "Required Permissions": "必要的權限", - "Resource Group": "資源群組", - "Resource group where the managed identity will be created": "將建立受控識別所在的資源群組", - "Resource Limits": "資源限制", - "Resource Usage": "資源使用狀況", - "Resources to be deployed ({{count}} object)_one": "要部署的資源 ({{count}} 個物件)", - "Resources to be deployed ({{count}} object)_other": "要部署的資源 ({{count}} 個物件)", + "Error Rate": "錯誤率", + "Metrics refreshed every 30 seconds": "每 30 秒重新整理一次計量", + "Select a deployment to view metrics": "選取部署以檢視計量", + "Metrics Unavailable": "計量無法使用", + "Application Metrics": "應用程式計量", + "Request & error rate": "要求與錯誤率", + "No data available": "沒有可用的資料", "Response Time": "回應時間", + "Memory utilization": "記憶體使用率", + "Network I/O": "網路 I/O", + "Deploy an application to start viewing metrics.": "部署應用程式以開始檢視計量。", + "Please select a deployment to view metrics": "請選取部署以檢視計量", + "Project Status": "專案狀態", + "Total Pods": "Pod 總計", + "Application Health": "應用程式健全狀況", + "Loading metrics": "正在載入計量", + "Resource Usage": "資源使用狀況", + "Avg Response Time": "平均回應時間", + "No response time data available": "沒有可用的回應時間資料", + "Absolute usage": "絕對使用量", + "Network In": "網路輸入", + "Network Out": "網路輸出", + "Pod Details": "Pod 詳細資料", + "Pod Name": "Pod 名稱", "Restarts": "重新啟動", - "Retry": "重試", - "Review": "檢閱", - "Review & Deploy": "檢閱與部署", - "Review & Merge": "檢閱並合併", - "Review and merge the setup PR to enable the Copilot agent.": "檢閱並合併設定 PR 以啟用 Copilot Agent。", - "Review on GitHub": "在 GitHub 上檢閱", - "Review Project Configuration": "檢查專案設定", - "Role": "角色", - "Role Assignment": "角色指派", - "Run as non root user": "以非根使用者身分執行", - "Run deployment workflows": "執行部署工作流程", - "Save": "儲存", - "Scaled down": "已縮小", - "Scaling": "擴充中", + "No pods found for deployment \"{{name}}\"": "找不到部署「{{name}}」的 Pod", + "Preview Features": "預覽功能", + "Enable or disable features that are still in development. Preview features may change or be removed in future releases.": "啟用或停用仍在開發中的功能。預覽功能可能會在未來版本中變更或移除。", + "GitHub Pipelines": "GitHub 管線", + "Enable GitHub-based deployment pipelines for AKS projects.": "啟用 AKS 專案的 GitHub 型部署管線。", + "Loading scaling metrics from Prometheus": "正在從 Prometheus 載入縮放計量", "Scaling Chart Unavailable": "無法取得縮放圖表", - "Scaling History (Last 24 Hours)": "縮放歷程記錄 (過去 24 小時)", + "No scaling data available": "沒有可用的縮放資料", + "Edit HPA Configuration": "編輯 HPA 設定", + "Edit Manual Scaling Configuration": "編輯手動縮放設定", + "Minimum Replicas": "複本下限", + "Maximum Replicas": "複本上限", + "Target CPU Utilization (%)": "目標 CPU 使用率 (%)", + "Number of Replicas": "複本數目", + "Set the desired number of pod replicas for this deployment": "設定此部署所需的 Pod 複本數目", + "Save": "儲存", "Scaling Mode": "縮放模式", - "Scaling Overview": "縮放概觀", - "Search clusters": "搜尋叢集", - "Search subscriptions": "搜尋訂用帳戶", - "Select a cluster": "選取叢集", - "Select a deployment to view metrics": "選取部署以檢視計量", + "Current Replicas": "目前的複本數", + "Desired Replicas": "需要的複本數", + "Configured Replicas": "已設定的複本", + "Replica Bounds": "複本界限", + "Available Replicas": "可用的複本", + "CPU Usage / Target": "CPU 使用量 / 目標", + "Scaling": "擴充中", "Select a deployment to view scaling metrics": "選取部署以檢視縮放計量", - "Select a subscription": "選取訂閱", - "Select All": "全選", - "Select an AKS cluster": "選取 AKS 叢集", - "Select an Azure subscription": "選取 Azure 訂用帳戶", - "Select an option": "選取選項", + "Scaling Overview": "縮放概觀", + "Edit Configuration": "編輯設定", + "Scaling History (Last 24 Hours)": "縮放歷程記錄 (過去 24 小時)", + "Copied!": "已複製!", + "Copy": "複製", + "Copy to clipboard": "複製到剪貼簿", + "No deployments found": "找不到部署", "Select Deployment": "選取部署", - "Select Namespaces to Import": "選取要匯出的命名空間", - "Select repository": "選取存放庫", - "Select Source": "選取來源", - "Selected Cluster Details": "已選取的叢集詳細資料", - "Selected cluster is missing from the kubeconfig. Register it before proceeding.": "kubeconfig 遺漏已選取的叢集。在繼續之前請先註冊。", - "Service port": "服務連接埠", - "Service type": "服務類型", - "Set CPU and memory requests (guaranteed resources) and limits (maximum resources) to control resource allocation and prevent containers from consuming excessive cluster resources.": "設定 CPU 和記憶體要求 (保證資源) 和限制 (資源上限),以控制資源配置並防止容器耗用過多的叢集資源。", - "Set quota limits to prevent overuse and maintain cluster stability": "設定配額限制,以防止超用並維持叢集的穩定性", - "Set security, communication and access rules for incoming and outgoing traffic": "設定傳入和傳出流量的安全性、通訊和存取規則", - "Set the desired number of pod replicas for this deployment": "設定此部署所需的 Pod 複本數目", - "Set up a CI/CD pipeline to automate your deployments and streamline your workflow": "設定 CI/CD 管線以自動化部署並簡化您的工作流程", - "Set up and configure a new project in Azure Kubernetes Service (AKS)": "在 Azure Kubernetes Service (AKS) 中設定新專案", - "Set up Copilot Agent": "設定 Copilot Agent", - "Set up your pipeline": "設定您的管線", - "Setting up Copilot agent...": "正在設定 Copilot Agent...", - "Setup PR Created": "設定 PR 已建立", - "Setup PR reviewed and merged": "已檢閱並合併設定 PR", - "Sign in": "登入", - "Sign in to GitHub": "登入 GitHub", - "Sign in to GitHub to view pipeline runs.": "登入 GitHub 以檢視管線執行。", - "Sign in with Azure": "使用 Azure 登入", - "Sign in with your Azure account to manage AKS clusters and resources": "使用 Azure 帳戶登入以管理 AKS 叢集和資源", - "Source": "來源", - "Starting project creation": "開始建立專案", - "Startup path": "啟動路徑", - "Status": "狀態", - "Subscription": "訂用帳戶", + "Loading deployments": "正在載入部署", + "No cluster is associated with this project.": "沒有與此專案關聯的叢集。", + "Please sign in to Azure to continue.": "請登入 Azure 以繼續。", + "Missing required Azure context. Please ensure you are logged in and the cluster is associated with a valid subscription, resource group, and tenant.": "遺失必要的 Azure 內容。請確保您已登入,且叢集與有效的訂用帳戶、資源群組和租用戶相關聯。", + "Failed to load Azure context": "無法載入 Azure 內容", + "just now": "剛剛", + "{{seconds}}s ago": "{{seconds}} 秒前", + "{{minutes}} min ago": "{{minutes}} 分鐘前", + "{{hours}}h ago": "{{hours}} 小時前", + "{{days}}d ago": "{{days}} 天前", + "{{weeks}}w ago": "{{weeks}} 週前", + "{{count}} cluster(s) hidden — no Azure Entra ID_one": "已隱藏 {{count}} 個叢集 - 沒有 Azure Entra ID", + "{{count}} eligible cluster(s) found._one": "找到 {{count}} 個合格的叢集。", + "{{count}} failed._one": "{{count}} 個已失敗。", + "{{count}} min_one": "{{count}} 分鐘", + "{{count}} selected_one": "已選取 {{count}} 個", + "Access Control ({{count}} assignee)_one": "存取控制 ({{count}} 個受託人)", + "Applied {{count}} resource(s) successfully._one": "已成功套用 {{count}} 個資源。", + "Merging cluster {{clusterName}} ({{count}} namespace(s))_one": "正在合併叢集 {{clusterName}} ({{count}} 個命名空間)", + "Resources to be deployed ({{count}} object)_one": "要部署的資源 ({{count}} 個物件)", "Successfully merged {{count}} cluster(s)_one": "已成功合併 {{count}} 個叢集", - "Successfully merged {{count}} cluster(s)_other": "已成功合併 {{count}} 個叢集", - "successThreshold": "successThreshold", - "Target CPU utilization": "目標 CPU 使用率", - "Target CPU Utilization (%)": "目標 CPU 使用率 (%)", - "Target port": "目標連接埠", - "The agent has created the deployment PR. Review the generated files and merge to start the deployment pipeline.": "Agent 已建立部署 PR。檢閱產生的檔案並合併以開始部署管線。", - "The agent is creating the setup PR to enable the Copilot agent.": "Agent 正在建立設定 PR 以啟用 Copilot Agent。", - "The AKS Desktop GitHub App must be installed on {{repoName}} to continue.": "必須在 {{repoName}} 上安裝 AKS Desktop GitHub 應用程式,才能繼續。", - "The aks-preview extension is required to create managed namespaces. Please install it to continue.": "要求 aks-preview 延伸模組才能建立受控命名空間。請安裝它以繼續。", - "The Copilot coding agent is analyzing your repo and generating a deployment PR with Dockerfile, Kubernetes manifests and a GitHub Actions workflow.": "Copilot 程式碼編寫 Agent 正在分析您的存放庫,並產生具有 Dockerfile、Kubernetes 資訊清單和 GitHub Actions 工作流程的部署 PR。", - "The following addons can be enabled on this cluster:": "可以在此叢集上啟用下列附加元件:", - "The following Azure resources will be created to enable your GitHub Actions pipeline to authenticate with your AKS cluster:": "將建立下列 Azure 資源,以啟用 GitHub Actions 管線以向 AKS 叢集進行驗證:", - "The following namespaces will be converted to AKS Desktop projects by adding these labels:": "以下命名空間將透過新增這些標籤轉換為 AKS Desktop 專案:", - "The HTTP path to check for liveness (e.g., /healthz). The probe performs an HTTP GET request to this path.": "要檢查活躍度的 HTTP 路徑 (例如 /healthz)。探查會對此路徑執行 HTTP GET 要求。", - "The HTTP path to check for readiness (e.g., /ready). The probe performs an HTTP GET request to this path.": "要檢查整備度的 HTTP 路徑 (例如 /ready)。探查會對此路徑執行 HTTP GET 要求。", - "The HTTP path to check for startup (e.g., /startup). The probe performs an HTTP GET request to this path.": "要檢查啟動的 HTTP 路徑 (例如 /startup)。探查會對此路徑執行 HTTP GET 要求。", - "The ManagedNamespacePreview feature must be registered to create managed namespaces.": "必須註冊 ManagedNamespacePreview 功能以建立受控命名空間。", - "The maximum amount of CPU the container can use. If exceeded, the container will be throttled.": "容器可使用的 CPU 數上限。如果超過此限制,將會節流容器。", - "The maximum amount of memory the container can use. If exceeded, the container will be terminated (OOMKilled).": "容器可以使用的記憶體數上限。如果超過,將會終止容器 (OOMKilled)。", - "The maximum number of pod replicas that HPA can scale up to when CPU usage is high.": "當 CPU 使用率過高,HPA 可調整至的 Pod 複本數目上限。", - "The minimum amount of CPU guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much CPU available.": "保證給容器的 CPU 數量最小值。Kubernetes 會將 Pod 排程到至少具備此可用 CPU 數量的節點上。", - "The minimum amount of memory guaranteed to the container. Kubernetes will schedule the pod on a node with at least this much memory available.": "保證給容器的記憶體數量最小值。Kubernetes 會將 Pod 排程到至少具備此可用記憶體數量的節點上。", - "The minimum number of pod replicas that HPA will maintain, even when CPU usage is low.": "即使 CPU 使用率較低,HPA 也會維持的最低 Pod 複本數目。", - "The namespace will be created on the selected cluster and set up as a project": "將在選取的叢集上建立命名空間,並設定為專案", - "The number of pod replicas to run. More replicas provide better availability and load distribution.": "要執行的 Pod 複本的數目。更多複本可提供更佳的可用性和負載散發。", - "The operation may still be running on GitHub. Check the link above for the latest status.": "作業可能仍在 GitHub 上執行中。檢查上方的連結以取得最新狀態。", - "The port number exposed by the Kubernetes service. Traffic to this port is forwarded to the target port.": "Kubernetes 服務公開的連接埠號碼。對此連接埠的流量會轉送至目標連接埠。", - "The port number that your container listens on. This is the port inside the container where your application runs.": "您的容器接聽所在的連接埠號碼。這是應用程式執行所在容器內的連接埠。", - "The target average CPU utilization percentage across all pods. HPA will scale up when CPU usage exceeds this value and scale down when it's below.": "所有 Pod 的目標平均 CPU 使用率百分比。當 CPU 使用量超過此值時,HPA 將會擴大,低於此值時就會縮小。", - "There are no deployments in this project namespace yet.": "此專案命名空間中尚無部署。", - "This is taking longer than expected. Check the PR on GitHub for the latest status.": "耗費的時間超出預期。檢查 GitHub 上的 PR 以了解最新狀態。", - "This may be a permissions issue. Check your GitHub App permissions and try again.": "這可能是權限問題。檢查您的 GitHub 應用程式權限,然後再試一次。", - "This PR was closed without merging. You may need to restart the process.": "此 PR 已關閉而未合併。您可能需要重新開始程序。", - "This typically takes 10–25 minutes.": "這通常需要 10 到 25 分鐘。", - "timeoutSeconds": "timeoutSeconds", - "Total Pods": "Pod 總計", - "Track agent progress": "追蹤 Agent 進度", - "Trigger": "觸發程序", - "Trigger Copilot Agent": "觸發 Copilot Agent", - "Triggering...": "正在觸發...", - "Try again, or check GitHub for details.": "請再試一次,或查看 GitHub 以尋找詳細資料。", - "Type": "類型", - "Unknown error": "未知的錯誤", - "unnamed": "未命名", - "Up next": "下一步", - "Update": "更新", - "Updating": "正在更新", - "Updating local settings": "正在更新本機設定", - "Upload files": "上傳檔案", - "Use ClusterIP. Best for services that are only reachable within the cluster.": "使用 ClusterIP。最適合只能在叢集內觸達的服務。", - "Use custom service port": "使用自訂服務連接埠", - "Use existing manifests for full control": "使用現有資訊清單進行完全控制", - "User assignment completed with errors": "已完成使用者指派,但發生錯誤", - "Validation failed": "驗證失敗", - "Value": "值", - "View deployment": "檢視部署", - "View on GitHub": "在 GitHub 上檢視", - "View run on GitHub": "在 GitHub 上檢視執行", - "View workflow run": "檢視工作流程執行", - "VPA (Vertical Pod Autoscaler)": "VPA (垂直 Pod 自動調整器)", - "VS Code": "VS Code", - "Waiting for agent workflow to start...": "正在等候 Agent 工作流程開始...", - "Waiting for browser authorization...": "正在等待瀏覽器授權...", - "Waiting for login completion... ({{minutes}} minutes remaining)": "正在等待登入完成...(剩餘 {{minutes}} 分鐘)", - "Waiting for namespace to be created": "正在等待建立命名空間", - "Waiting for namespace to propagate": "正在等待命名空間散佈", - "Warning: This action cannot be undone. All resources in these namespaces will be permanently deleted.": "警告: 此動作無法復原。將永久刪除這些命名空間中的所有資源。", - "When a probe fails, Kubernetes will try this many times before giving up and restarting the container.": "當探查失敗時,Kubernetes 會先嘗試這麼多次,之後才放棄並重新啟動容器。", - "When a probe fails, Kubernetes will try this many times before giving up. For startup probes, this determines how long to wait before restarting.": "當探查失敗時,Kubernetes 會先嘗試這麼多次,之後才放棄。對於啟動探查,這會決定重新啟動前要等候多久。", - "When a probe fails, Kubernetes will try this many times before marking the pod as not ready.": "當探查失敗時,Kubernetes 將先嘗試這麼多次,再將 Pod 標示為未就緒。", - "with {{count}} project(s)_one": "具有 {{count}} 個專案", - "with {{count}} project(s)_other": "具有 {{count}} 個專案", - "with the following parameters:": "使用下列參數:", - "Wizard steps": "精靈步驟", - "Workflow dispatch triggered successfully. Check GitHub Actions for progress.": "工作流程分派已成功觸發。檢查 GitHub Actions 以了解進度。", - "workflow on": "工作流程於", - "Workflows": "工作流程", - "Workload identity configured": "工作負載身分識別已設定", - "Workload identity configured successfully.": "工作負載身分識別已成功設定。", - "Workloads": "工作負載", - "Yes": "是", - "You can collapse this panel. Progress is saved and will resume when you return.": "您可以摺疊此面板。進度已儲存,當您回來時將會繼續。", - "You need to be logged in to Azure to register AKS clusters.": "您必須登入 Azure 以註冊 AKS 叢集。", - "Your AKS project \"{{projectName}}\" has been created and is ready to use.": "已建立您的 AKS 專案「{{projectName}}」且已隨時可用。", - "Your project \"{{projectName}}\" is ready to use.": "您的專案「{{projectName}}」已可供使用。" + "with {{count}} project(s)_one": "具有 {{count}} 個專案" } diff --git a/plugins/aks-desktop/src/components/DeployTab/components/ClusterDeployCard.tsx b/plugins/aks-desktop/src/components/DeployTab/components/ClusterDeployCard.tsx index c09425ce6..23ebea1d8 100644 --- a/plugins/aks-desktop/src/components/DeployTab/components/ClusterDeployCard.tsx +++ b/plugins/aks-desktop/src/components/DeployTab/components/ClusterDeployCard.tsx @@ -23,6 +23,7 @@ import { import { visuallyHidden } from '@mui/utils'; import React, { useMemo, useState } from 'react'; import { useAzureContext } from '../../../hooks/useAzureContext'; +import { useNamespaceCapabilities } from '../../../hooks/useNamespaceCapabilities'; import type { GitHubRepo } from '../../../types/github'; import { openExternalUrl } from '../../../utils/shared/openExternalUrl'; import DeployWizard from '../../DeployWizard/DeployWizard'; @@ -92,6 +93,12 @@ export function ClusterDeployCard({ cluster, namespace, pipelineEnabled }: Clust const [manualDeployOpen, setManualDeployOpen] = useState(false); const [pipelineDeployRepo, setPipelineDeployRepo] = useState(null); const [editingDeployment, setEditingDeployment] = useState(null); + const { isManagedNamespace, azureRbacEnabled } = useNamespaceCapabilities({ + subscriptionId: azureContext?.subscriptionId, + resourceGroup: azureContext?.resourceGroup, + clusterName: cluster, + namespace, + }); const editingContainerConfig: Partial | undefined = useMemo(() => { if (!editingDeployment?.rawDeployment) return undefined; @@ -279,6 +286,17 @@ export function ClusterDeployCard({ cluster, namespace, pipelineEnabled }: Clust initialApplicationName={editingDeployment?.name} initialContainerConfig={editingContainerConfig} onClose={handleCloseManualDeploy} + azureContext={ + azureContext + ? { + subscriptionId: azureContext.subscriptionId, + resourceGroup: azureContext.resourceGroup, + clusterName: cluster, + isManagedNamespace, + azureRbacEnabled, + } + : undefined + } /> diff --git a/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.test.ts b/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.test.ts index 8d87e496a..db1a43554 100644 --- a/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.test.ts +++ b/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.test.ts @@ -82,8 +82,8 @@ describe('extractContainerConfigFromDeployment', () => { expect(result.targetPort).toBe(8080); expect(result.envVars).toEqual([ - { key: 'NODE_ENV', value: 'production' }, - { key: 'PORT', value: '8080' }, + { key: 'NODE_ENV', value: 'production', isSecret: false }, + { key: 'PORT', value: '8080', isSecret: false }, ]); expect(result.enableResources).toBe(true); @@ -249,4 +249,74 @@ describe('extractContainerConfigFromDeployment', () => { expect(result.containerImage).toBe('first:v1'); expect(result.targetPort).toBe(8080); }); + + it('extracts secret env vars from secretKeyRef', () => { + const deployment = { + metadata: { name: 'my-app' }, + spec: { + replicas: 1, + template: { + spec: { + containers: [ + { + image: 'nginx:latest', + env: [ + { name: 'PLAIN_VAR', value: 'hello' }, + { + name: 'SECRET_VAR', + valueFrom: { secretKeyRef: { name: 'my-secret', key: 'SECRET_VAR' } }, + }, + ], + }, + ], + }, + }, + }, + }; + const result = extractContainerConfigFromDeployment(deployment); + expect(result.envVars).toEqual([ + { key: 'PLAIN_VAR', value: 'hello', isSecret: false }, + { key: 'SECRET_VAR', value: '', isSecret: true }, + ]); + }); + + it('extracts workload identity config from pod labels and serviceAccountName', () => { + const deployment = { + metadata: { name: 'my-app' }, + spec: { + replicas: 1, + template: { + metadata: { + labels: { app: 'my-app', 'azure.workload.identity/use': 'true' }, + }, + spec: { + containers: [{ image: 'nginx:latest' }], + serviceAccountName: 'my-app-sa', + }, + }, + }, + }; + const result = extractContainerConfigFromDeployment(deployment); + expect(result.enableWorkloadIdentity).toBe(true); + expect(result.workloadIdentityServiceAccount).toBe('my-app-sa'); + }); + + it('does not enable workload identity when serviceAccountName is missing', () => { + const deployment = { + metadata: { name: 'my-app' }, + spec: { + replicas: 1, + template: { + metadata: { + labels: { app: 'my-app', 'azure.workload.identity/use': 'true' }, + }, + spec: { + containers: [{ image: 'nginx:latest' }], + }, + }, + }, + }; + const result = extractContainerConfigFromDeployment(deployment); + expect(result.enableWorkloadIdentity).toBeUndefined(); + }); }); diff --git a/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.ts b/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.ts index dd0bacffd..fbe3eb60a 100644 --- a/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.ts +++ b/plugins/aks-desktop/src/components/DeployTab/utils/extractContainerConfig.ts @@ -1,28 +1,13 @@ // Copyright (c) Microsoft Corporation. // Licensed under the Apache 2.0. +import type { KubeContainer as HeadlampKubeContainer } from '@kinvolk/headlamp-plugin/lib/lib/k8s/cluster'; import type { ContainerConfig } from '../../DeployWizard/hooks/useContainerConfiguration'; -interface KubeContainer { - image?: string; - ports?: Array<{ containerPort?: number }>; - env?: Array<{ name?: string; value?: string }>; - resources?: { - requests?: { cpu?: string; memory?: string }; - limits?: { cpu?: string; memory?: string }; - }; - securityContext?: { - runAsNonRoot?: boolean; - readOnlyRootFilesystem?: boolean; - allowPrivilegeEscalation?: boolean; - }; - livenessProbe?: KubeProbe; - readinessProbe?: KubeProbe; - startupProbe?: KubeProbe; -} - interface KubeProbe { httpGet?: { path?: string }; + exec?: { command?: string[] }; + tcpSocket?: { port?: number }; initialDelaySeconds?: number; periodSeconds?: number; timeoutSeconds?: number; @@ -30,13 +15,28 @@ interface KubeProbe { successThreshold?: number; } +type KubeContainer = Partial> & { + livenessProbe?: KubeProbe; + readinessProbe?: KubeProbe; + startupProbe?: KubeProbe; + securityContext?: { + runAsNonRoot?: boolean; + readOnlyRootFilesystem?: boolean; + allowPrivilegeEscalation?: boolean; + }; +}; + interface KubeDeploymentInput { metadata?: { name?: string }; spec?: { replicas?: number; template?: { + metadata?: { + labels?: Record; + }; spec?: { containers?: KubeContainer[]; + serviceAccountName?: string; securityContext?: { runAsNonRoot?: boolean }; affinity?: { podAntiAffinity?: unknown }; topologySpreadConstraints?: unknown[]; @@ -82,7 +82,11 @@ export function extractContainerConfigFromDeployment( if (Array.isArray(container.env) && container.env.length > 0) { result.envVars = container.env .filter(e => e.name) - .map(e => ({ key: e.name!, value: e.value ?? '' })); + .map(e => ({ + key: e.name!, + value: e.valueFrom?.secretKeyRef ? '' : e.value ?? '', + isSecret: !!e.valueFrom?.secretKeyRef, + })); } const resources = container.resources; @@ -113,6 +117,12 @@ export function extractContainerConfigFromDeployment( result.runAsNonRoot = true; } + const podLabels = spec?.template?.metadata?.labels ?? {}; + if (podLabels['azure.workload.identity/use'] === 'true' && templateSpec.serviceAccountName) { + result.enableWorkloadIdentity = true; + result.workloadIdentityServiceAccount = templateSpec.serviceAccountName; + } + result.enablePodAntiAffinity = !!templateSpec.affinity?.podAntiAffinity; result.enableTopologySpreadConstraints = Array.isArray(templateSpec.topologySpreadConstraints) && diff --git a/plugins/aks-desktop/src/components/DeployWizard/DeployWizard.tsx b/plugins/aks-desktop/src/components/DeployWizard/DeployWizard.tsx index cf0c4f776..a719df72c 100644 --- a/plugins/aks-desktop/src/components/DeployWizard/DeployWizard.tsx +++ b/plugins/aks-desktop/src/components/DeployWizard/DeployWizard.tsx @@ -3,6 +3,7 @@ import React from 'react'; import ConfigureContainer from './components/ConfigureContainer'; +import type { DeployAzureContext } from './components/configureContainerUtils'; import ConfigureYAML from './components/ConfigureYAML'; import Deploy from './components/Deploy'; import DeployWizardPure from './components/DeployWizardPure'; @@ -21,6 +22,8 @@ type DeployWizardProps = { initialContainerConfig?: Partial; /** Called when the user clicks "Close" after a deploy result. */ onClose?: () => void; + /** Azure context for workload identity setup */ + azureContext?: DeployAzureContext; }; /** @@ -64,7 +67,11 @@ export default function DeployWizard(props: DeployWizardProps) { onYamlErrorChange={err => setYamlError(err)} /> ) : ( - + )} ); diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/AdvancedStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/AdvancedStep.tsx new file mode 100644 index 000000000..c6d72aec7 --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/AdvancedStep.tsx @@ -0,0 +1,119 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { Box, Button, FormControlLabel, Switch, Typography } from '@mui/material'; +import React from 'react'; +import { CONTAINER_STEPS, type ContainerConfig } from '../hooks/useContainerConfiguration'; +import { ContainerConfigProp, LabelWithInfo } from './configureContainerUtils'; + +interface AdvancedStepProps { + containerConfig: ContainerConfigProp; +} + +function SwitchWithDescription({ + checked, + onChange, + label, + infoText, + description, +}: { + checked: boolean; + onChange: (checked: boolean) => void; + label: string; + infoText: string; + description: string; +}) { + return ( + <> + onChange(e.target.checked)} />} + label={} + /> + + {description} + + + ); +} + +export default function AdvancedStep({ containerConfig }: AdvancedStepProps) { + const { t } = useTranslation(); + const set = (key: K) => { + return (val: ContainerConfig[K]) => containerConfig.setConfig(c => ({ ...c, [key]: val })); + }; + + return ( + <> + + {t('Configure security context settings for the container.')} + + + + + + + + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/BasicsStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/BasicsStep.tsx new file mode 100644 index 000000000..99f97e65f --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/BasicsStep.tsx @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { Box, Button, TextField } from '@mui/material'; +import React from 'react'; +import { CONTAINER_STEPS } from '../hooks/useContainerConfiguration'; +import { ContainerConfigProp, LabelWithInfo } from './configureContainerUtils'; + +interface BasicsStepProps { + containerConfig: ContainerConfigProp; + requireContainerImage?: boolean; +} + +export default function BasicsStep({ + containerConfig, + requireContainerImage = true, +}: BasicsStepProps) { + const { t } = useTranslation(); + + return ( + <> + + containerConfig.setConfig(c => ({ ...c, appName: e.target.value }))} + fullWidth + /> + containerConfig.setConfig(c => ({ ...c, containerImage: e.target.value }))} + fullWidth + /> + + } + type="number" + inputProps={{ min: 1 }} + value={containerConfig.config.replicas} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + replicas: Math.max(1, Number(e.target.value)), + })) + } + /> + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/ConfigureContainer.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/ConfigureContainer.tsx index 91b87384a..bbe856744 100644 --- a/plugins/aks-desktop/src/components/DeployWizard/components/ConfigureContainer.tsx +++ b/plugins/aks-desktop/src/components/DeployWizard/components/ConfigureContainer.tsx @@ -1,27 +1,19 @@ // Copyright (c) Microsoft Corporation. // Licensed under the Apache 2.0. -import { Icon } from '@iconify/react'; import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; -import { - Box, - Button, - Checkbox, - FormControlLabel, - IconButton, - InputAdornment, - Step, - StepContent, - StepLabel, - Stepper, - Switch, - TextField, - Tooltip, - Typography, -} from '@mui/material'; +import { Step, StepContent, StepLabel, Stepper, Typography } from '@mui/material'; import React from 'react'; import { ContainerConfig } from '../hooks/useContainerConfiguration'; -import { setFromInput } from './types'; +import AdvancedStep from './AdvancedStep'; +import BasicsStep from './BasicsStep'; +import type { DeployAzureContext } from './configureContainerUtils'; +import EnvVarsStep from './EnvVarsStep'; +import HealthchecksStep from './HealthchecksStep'; +import HpaStep from './HpaStep'; +import NetworkingStep from './NetworkingStep'; +import ResourcesStep from './ResourcesStep'; +import WorkloadIdentityStep from './WorkloadIdentityStep'; interface ConfigureContainerProps { containerConfig: { @@ -30,1365 +22,86 @@ interface ConfigureContainerProps { }; /** When false, containerImage is not required to proceed past the Basics step. Default: true. */ requireContainerImage?: boolean; -} - -function LabelWithInfo({ label, infoText }: { label: string; infoText: string }) { - const { t } = useTranslation(); - - return ( - - {label} - - - - - - - ); + /** Azure context needed for workload identity setup */ + azureContext?: DeployAzureContext; + /** Target namespace for workload identity setup */ + namespace?: string; } export default function ConfigureContainer({ containerConfig, requireContainerImage = true, + azureContext, + namespace, }: ConfigureContainerProps) { const { t } = useTranslation(); + return ( <> {t('Configure Container Deployment')} - {/* 1. Basics: App name, image, replicas */} {t('Basics')} - - containerConfig.setConfig(c => ({ ...c, appName: e.target.value }))} - fullWidth - /> - - containerConfig.setConfig(c => ({ ...c, containerImage: e.target.value })) - } - fullWidth - /> - - } - type="number" - inputProps={{ min: 1 }} - value={containerConfig.config.replicas} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - replicas: Math.max(1, Number(e.target.value)), - })) - } - /> - - - - + - {/* 2. Networking: port and service */} {t('Networking')} - - - } - type="number" - inputProps={{ min: 1 }} - value={containerConfig.config.targetPort} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - targetPort: Math.max(1, Number(e.target.value)), - })) - } - /> - {containerConfig.config.useCustomServicePort && ( - - } - type="number" - inputProps={{ min: 1 }} - value={containerConfig.config.servicePort} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - servicePort: Math.max(1, Number(e.target.value)), - })) - } - /> - )} - - - - containerConfig.setConfig(c => ({ - ...c, - useCustomServicePort: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t( - 'By default, the service port matches the target port. Enable this to use a different port for the service.' - )} - - - - containerConfig.setConfig(c => ({ ...c, serviceType: 'ClusterIP' }))} - onKeyDown={e => { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - containerConfig.setConfig(c => ({ ...c, serviceType: 'ClusterIP' })); - } - }} - sx={{ - flex: 1, - p: 2, - border: '2px solid', - borderColor: - containerConfig.config.serviceType === 'ClusterIP' ? 'primary.main' : 'divider', - borderRadius: 2, - cursor: 'pointer', - backgroundColor: 'background.paper', - }} - > - - {t('Internal only')} - - - {t( - 'Use ClusterIP. Best for services that are only reachable within the cluster.' - )} - - - - containerConfig.setConfig(c => ({ ...c, serviceType: 'LoadBalancer' })) - } - onKeyDown={e => { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - containerConfig.setConfig(c => ({ ...c, serviceType: 'LoadBalancer' })); - } - }} - sx={{ - flex: 1, - p: 2, - border: '2px solid', - borderColor: - containerConfig.config.serviceType === 'LoadBalancer' - ? 'primary.main' - : 'divider', - borderRadius: 2, - cursor: 'pointer', - backgroundColor: 'background.paper', - }} - > - - {t('Enable public access')} - - - {t('Creates a LoadBalancer to expose the application to the internet.')} - - - - - - - + - {/* 3. Healthchecks */} {t('Healthchecks')} - - {t('Configure container health probes.')} - - - - containerConfig.setConfig(c => ({ ...c, showProbeConfigs: e.target.checked })) - } - /> - } - label={ - - } - /> - - {t( - 'By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.' - )} - - - - - - containerConfig.setConfig(c => ({ - ...c, - enableLivenessProbe: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t('Kubernetes restarts the container if this check fails repeatedly.')} - - {containerConfig.config.enableLivenessProbe && - containerConfig.config.showProbeConfigs && ( - <> - - - } - value={containerConfig.config.livenessPath} - onChange={e => - containerConfig.setConfig(c => ({ ...c, livenessPath: e.target.value })) - } - placeholder="/healthz" - /> - - - - } - value={containerConfig.config.livenessInitialDelay} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - livenessInitialDelay: Math.max(0, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.livenessPeriod} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - livenessPeriod: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.livenessTimeout} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - livenessTimeout: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.livenessFailure} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - livenessFailure: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.livenessSuccess} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - livenessSuccess: Math.max(1, Number(e.target.value)), - })) - } - /> - - - )} - - - - containerConfig.setConfig(c => ({ - ...c, - enableReadinessProbe: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t("Kubernetes won't send traffic to the pod until this check passes.")} - - {containerConfig.config.enableReadinessProbe && - containerConfig.config.showProbeConfigs && ( - <> - - - } - value={containerConfig.config.readinessPath} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - readinessPath: e.target.value, - })) - } - placeholder="/ready" - /> - - - - } - value={containerConfig.config.readinessInitialDelay} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - readinessInitialDelay: Math.max(0, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.readinessPeriod} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - readinessPeriod: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.readinessTimeout} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - readinessTimeout: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.readinessFailure} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - readinessFailure: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.readinessSuccess} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - readinessSuccess: Math.max(1, Number(e.target.value)), - })) - } - /> - - - )} - - - - containerConfig.setConfig(c => ({ - ...c, - enableStartupProbe: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t('Kubernetes temporarily disables liveness/readiness until startup succeeds.')} - - {containerConfig.config.enableStartupProbe && - containerConfig.config.showProbeConfigs && ( - <> - - - } - value={containerConfig.config.startupPath} - onChange={e => - containerConfig.setConfig(c => ({ ...c, startupPath: e.target.value })) - } - placeholder="/startup" - /> - - - - } - value={containerConfig.config.startupInitialDelay} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - startupInitialDelay: Math.max(0, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.startupPeriod} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - startupPeriod: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.startupTimeout} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - startupTimeout: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.startupFailure} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - startupFailure: Math.max(1, Number(e.target.value)), - })) - } - /> - - } - value={containerConfig.config.startupSuccess} - onChange={e => - containerConfig.setConfig(c => ({ - ...c, - startupSuccess: Math.max(1, Number(e.target.value)), - })) - } - /> - - - )} - - - - - - + - {/* 4. Resources */} {t('Resource Limits')} - - containerConfig.setConfig(c => ({ ...c, enableResources: e.target.checked })) - } - /> - } - label={ - - } - /> - - - - - {t('CPU request')} - - - - - - - - setFromInput(e.target.value, 'm', val => - containerConfig.setConfig(c => ({ ...c, cpuRequest: val })) - ) - } - InputProps={{ - endAdornment: {t('millicores')}, - }} - disabled={!containerConfig.config.enableResources} - fullWidth - /> - - - - - - {t('CPU limit')} - - - - - - - - setFromInput(e.target.value, 'm', val => - containerConfig.setConfig(c => ({ ...c, cpuLimit: val })) - ) - } - InputProps={{ - endAdornment: {t('millicores')}, - }} - disabled={!containerConfig.config.enableResources} - fullWidth - /> - - - - - {t('Memory request')} - - - - - - - - setFromInput(e.target.value, 'Mi', val => - containerConfig.setConfig(c => ({ ...c, memoryRequest: val })) - ) - } - InputProps={{ - endAdornment: {t('mebibytes')}, - }} - disabled={!containerConfig.config.enableResources} - fullWidth - /> - - - - - - {t('Memory limit')} - - - - - - - - setFromInput(e.target.value, 'Mi', val => - containerConfig.setConfig(c => ({ ...c, memoryLimit: val })) - ) - } - InputProps={{ - endAdornment: {t('mebibytes')}, - }} - disabled={!containerConfig.config.enableResources} - fullWidth - /> - - - - - - + - {/* 5. Env variables */} {t('Environment Variables')} - - {containerConfig.config.envVars.map((pair, idx) => ( - - { - const v = [...containerConfig.config.envVars]; - v[idx] = { ...v[idx], key: e.target.value }; - containerConfig.setConfig(c => ({ ...c, envVars: v })); - }} - sx={{ flex: 1 }} - /> - { - const v = [...containerConfig.config.envVars]; - v[idx] = { ...v[idx], value: e.target.value }; - containerConfig.setConfig(c => ({ ...c, envVars: v })); - }} - sx={{ flex: 1 }} - /> - - containerConfig.setConfig(c => ({ - ...c, - envVars: c.envVars.filter((_, i) => i !== idx), - })) - } - > - - - - ))} - - - - - - - - + - {/* 6. HPA */} {'HPA'} - - containerConfig.setConfig(c => ({ ...c, enableHpa: e.target.checked })) - } - /> - } - label={ - - } - /> - {containerConfig.config.enableHpa && ( - - - {t('HPA scales pods based on CPU utilization.')} - - - - } - type="number" - inputProps={{ min: 1 }} - value={containerConfig.config.hpaMinReplicas} - onChange={e => { - const v = Math.max(1, Number(e.target.value)); - containerConfig.setConfig(c => ({ - ...c, - hpaMinReplicas: v, - ...(v > c.hpaMaxReplicas ? { hpaMaxReplicas: v } : {}), - })); - }} - /> - - } - type="number" - inputProps={{ min: 1 }} - value={containerConfig.config.hpaMaxReplicas} - onChange={e => { - const v = Math.max(1, Number(e.target.value)); - containerConfig.setConfig(c => ({ - ...c, - hpaMaxReplicas: v, - ...(v < c.hpaMinReplicas ? { hpaMinReplicas: v } : {}), - })); - }} - /> - - - - - {t('Target CPU utilization')} - - - - - - - containerConfig.setConfig(c => ({ - ...c, - hpaTargetCpu: Math.max(10, Math.min(95, Number(e.target.value))), - })) - } - InputProps={{ - endAdornment: %, - }} - sx={{ width: 120 }} - /> + + + - {(containerConfig.config.hpaMinReplicas > containerConfig.config.hpaMaxReplicas || - containerConfig.config.hpaTargetCpu < 10 || - containerConfig.config.hpaTargetCpu > 95) && ( - - {t('Ensure min ≤ max replicas and target CPU between 10% and 95%.')} - - )} - - - )} - - - - + + {t('Workload Identity')} + + - {/* 7. Advanced */} {t('Advanced')} - - {t('Configure security context settings for the container.')} - - - - containerConfig.setConfig(c => ({ ...c, runAsNonRoot: e.target.checked })) - } - /> - } - label={ - - } - /> - - {t('Ensures the container runs as a non-root user for better security.')} - - - - containerConfig.setConfig(c => ({ - ...c, - readOnlyRootFilesystem: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t( - "Mounts the container's root filesystem as read-only to prevent write operations." - )} - - - - containerConfig.setConfig(c => ({ - ...c, - allowPrivilegeEscalation: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t('Controls whether a process can gain more privileges than its parent process.')} - - - - containerConfig.setConfig(c => ({ - ...c, - enablePodAntiAffinity: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t( - 'Prefer scheduling pods on different nodes to improve availability and fault tolerance.' - )} - - - - containerConfig.setConfig(c => ({ - ...c, - enableTopologySpreadConstraints: e.target.checked, - })) - } - /> - } - label={ - - } - /> - - {t('Distributes pods evenly across nodes to improve workload distribution.')} - - - - - + diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/DeployWizardPure.stories.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/DeployWizardPure.stories.tsx index 811f1cebb..e098140ef 100644 --- a/plugins/aks-desktop/src/components/DeployWizard/components/DeployWizardPure.stories.tsx +++ b/plugins/aks-desktop/src/components/DeployWizard/components/DeployWizardPure.stories.tsx @@ -25,7 +25,7 @@ const containerConfigStub = { cpuLimit: '500m', memoryRequest: '128Mi', memoryLimit: '512Mi', - envVars: [{ key: '', value: '' }], + envVars: [{ key: '', value: '', isSecret: false }], enableLivenessProbe: true, enableReadinessProbe: true, enableStartupProbe: true, @@ -55,6 +55,9 @@ const containerConfigStub = { runAsNonRoot: false, readOnlyRootFilesystem: false, allowPrivilegeEscalation: false, + enableWorkloadIdentity: false, + workloadIdentityClientId: '', + workloadIdentityServiceAccount: '', enablePodAntiAffinity: true, enableTopologySpreadConstraints: true, containerPreviewYaml: '', diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/EnvVarsStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/EnvVarsStep.tsx new file mode 100644 index 000000000..4a1cd1ac1 --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/EnvVarsStep.tsx @@ -0,0 +1,124 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { Icon } from '@iconify/react'; +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { Box, Button, IconButton, TextField, Tooltip } from '@mui/material'; +import React from 'react'; +import { CONTAINER_STEPS } from '../hooks/useContainerConfiguration'; +import { ContainerConfigProp, ENV_VAR_KEY_PATTERN } from './configureContainerUtils'; + +interface EnvVarsStepProps { + containerConfig: ContainerConfigProp; +} + +export default function EnvVarsStep({ containerConfig }: EnvVarsStepProps) { + const { t } = useTranslation(); + const hasInvalidKeys = containerConfig.config.envVars.some( + e => e.key.trim().length > 0 && !ENV_VAR_KEY_PATTERN.test(e.key) + ); + + return ( + <> + + {containerConfig.config.envVars.map((pair, idx) => ( + + { + const v = [...containerConfig.config.envVars]; + v[idx] = { ...v[idx], key: e.target.value }; + containerConfig.setConfig(c => ({ ...c, envVars: v })); + }} + sx={{ flex: 1 }} + /> + { + const v = [...containerConfig.config.envVars]; + v[idx] = { ...v[idx], value: e.target.value }; + containerConfig.setConfig(c => ({ ...c, envVars: v })); + }} + sx={{ flex: 1 }} + /> + + { + const v = [...containerConfig.config.envVars]; + v[idx] = { ...v[idx], isSecret: !v[idx].isSecret }; + containerConfig.setConfig(c => ({ ...c, envVars: v })); + }} + > + + + + + containerConfig.setConfig(c => ({ + ...c, + envVars: c.envVars.filter((_, i) => i !== idx), + })) + } + > + + + + ))} + + + + + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/HealthchecksStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/HealthchecksStep.tsx new file mode 100644 index 000000000..316cb9556 --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/HealthchecksStep.tsx @@ -0,0 +1,536 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { + Box, + Button, + Checkbox, + FormControlLabel, + Switch, + TextField, + Typography, +} from '@mui/material'; +import React from 'react'; +import { CONTAINER_STEPS } from '../hooks/useContainerConfiguration'; +import { ContainerConfigProp, LabelWithInfo } from './configureContainerUtils'; + +interface HealthchecksStepProps { + containerConfig: ContainerConfigProp; +} + +export default function HealthchecksStep({ containerConfig }: HealthchecksStepProps) { + const { t } = useTranslation(); + + return ( + <> + + {t('Configure container health probes.')} + + + + containerConfig.setConfig(c => ({ ...c, showProbeConfigs: e.target.checked })) + } + /> + } + label={ + + } + /> + + {t( + 'By default, probes use HTTP GET on the root path with sensible defaults. Enable this to customize probe settings.' + )} + + + + + + containerConfig.setConfig(c => ({ + ...c, + enableLivenessProbe: e.target.checked, + })) + } + /> + } + label={ + + } + /> + + {t('Kubernetes restarts the container if this check fails repeatedly.')} + + {containerConfig.config.enableLivenessProbe && + containerConfig.config.showProbeConfigs && ( + <> + + + } + value={containerConfig.config.livenessPath} + onChange={e => + containerConfig.setConfig(c => ({ ...c, livenessPath: e.target.value })) + } + placeholder="/healthz" + /> + + + + } + value={containerConfig.config.livenessInitialDelay} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + livenessInitialDelay: Math.max(0, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.livenessPeriod} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + livenessPeriod: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.livenessTimeout} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + livenessTimeout: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.livenessFailure} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + livenessFailure: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.livenessSuccess} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + livenessSuccess: Math.max(1, Number(e.target.value)), + })) + } + /> + + + )} + + + + containerConfig.setConfig(c => ({ + ...c, + enableReadinessProbe: e.target.checked, + })) + } + /> + } + label={ + + } + /> + + {t("Kubernetes won't send traffic to the pod until this check passes.")} + + {containerConfig.config.enableReadinessProbe && + containerConfig.config.showProbeConfigs && ( + <> + + + } + value={containerConfig.config.readinessPath} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + readinessPath: e.target.value, + })) + } + placeholder="/ready" + /> + + + + } + value={containerConfig.config.readinessInitialDelay} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + readinessInitialDelay: Math.max(0, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.readinessPeriod} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + readinessPeriod: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.readinessTimeout} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + readinessTimeout: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.readinessFailure} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + readinessFailure: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.readinessSuccess} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + readinessSuccess: Math.max(1, Number(e.target.value)), + })) + } + /> + + + )} + + + + containerConfig.setConfig(c => ({ + ...c, + enableStartupProbe: e.target.checked, + })) + } + /> + } + label={ + + } + /> + + {t('Kubernetes temporarily disables liveness/readiness until startup succeeds.')} + + {containerConfig.config.enableStartupProbe && containerConfig.config.showProbeConfigs && ( + <> + + + } + value={containerConfig.config.startupPath} + onChange={e => + containerConfig.setConfig(c => ({ ...c, startupPath: e.target.value })) + } + placeholder="/startup" + /> + + + + } + value={containerConfig.config.startupInitialDelay} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + startupInitialDelay: Math.max(0, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.startupPeriod} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + startupPeriod: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.startupTimeout} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + startupTimeout: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.startupFailure} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + startupFailure: Math.max(1, Number(e.target.value)), + })) + } + /> + + } + value={containerConfig.config.startupSuccess} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + startupSuccess: Math.max(1, Number(e.target.value)), + })) + } + /> + + + )} + + + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/HpaStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/HpaStep.tsx new file mode 100644 index 000000000..b75ef195f --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/HpaStep.tsx @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { + Box, + Button, + FormControlLabel, + InputAdornment, + Switch, + TextField, + Typography, +} from '@mui/material'; +import React from 'react'; +import { CONTAINER_STEPS } from '../hooks/useContainerConfiguration'; +import { ContainerConfigProp, LabelWithInfo } from './configureContainerUtils'; + +interface HpaStepProps { + containerConfig: ContainerConfigProp; +} + +export default function HpaStep({ containerConfig }: HpaStepProps) { + const { t } = useTranslation(); + + return ( + <> + containerConfig.setConfig(c => ({ ...c, enableHpa: e.target.checked }))} + /> + } + label={ + + } + /> + {containerConfig.config.enableHpa && ( + + + {t('HPA scales pods based on CPU utilization.')} + + + + } + type="number" + inputProps={{ min: 1 }} + value={containerConfig.config.hpaMinReplicas} + onChange={e => { + const v = Math.max(1, Number(e.target.value)); + containerConfig.setConfig(c => ({ + ...c, + hpaMinReplicas: v, + ...(v > c.hpaMaxReplicas ? { hpaMaxReplicas: v } : {}), + })); + }} + /> + + } + type="number" + inputProps={{ min: 1 }} + value={containerConfig.config.hpaMaxReplicas} + onChange={e => { + const v = Math.max(1, Number(e.target.value)); + containerConfig.setConfig(c => ({ + ...c, + hpaMaxReplicas: v, + ...(v < c.hpaMinReplicas ? { hpaMinReplicas: v } : {}), + })); + }} + /> + + + + + } + type="number" + value={containerConfig.config.hpaTargetCpu} + inputProps={{ min: 10, max: 95, step: 5 }} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + hpaTargetCpu: Math.max(10, Math.min(95, Number(e.target.value))), + })) + } + InputProps={{ + endAdornment: %, + }} + sx={{ width: 120 }} + /> + + {(containerConfig.config.hpaMinReplicas > containerConfig.config.hpaMaxReplicas || + containerConfig.config.hpaTargetCpu < 10 || + containerConfig.config.hpaTargetCpu > 95) && ( + + {t('Ensure min ≤ max replicas and target CPU between 10% and 95%.')} + + )} + + + )} + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/NetworkingStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/NetworkingStep.tsx new file mode 100644 index 000000000..dad282d13 --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/NetworkingStep.tsx @@ -0,0 +1,177 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { Box, Button, FormControlLabel, Switch, TextField, Typography } from '@mui/material'; +import React from 'react'; +import { CONTAINER_STEPS } from '../hooks/useContainerConfiguration'; +import { ContainerConfigProp, LabelWithInfo } from './configureContainerUtils'; + +interface NetworkingStepProps { + containerConfig: ContainerConfigProp; +} + +export default function NetworkingStep({ containerConfig }: NetworkingStepProps) { + const { t } = useTranslation(); + + return ( + <> + + + } + type="number" + inputProps={{ min: 1 }} + value={containerConfig.config.targetPort} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + targetPort: Math.max(1, Number(e.target.value)), + })) + } + /> + {containerConfig.config.useCustomServicePort && ( + + } + type="number" + inputProps={{ min: 1 }} + value={containerConfig.config.servicePort} + onChange={e => + containerConfig.setConfig(c => ({ + ...c, + servicePort: Math.max(1, Number(e.target.value)), + })) + } + /> + )} + + + + containerConfig.setConfig(c => ({ + ...c, + useCustomServicePort: e.target.checked, + })) + } + /> + } + label={ + + } + /> + + {t( + 'By default, the service port matches the target port. Enable this to use a different port for the service.' + )} + + + + containerConfig.setConfig(c => ({ ...c, serviceType: 'ClusterIP' }))} + onKeyDown={e => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + containerConfig.setConfig(c => ({ ...c, serviceType: 'ClusterIP' })); + } + }} + sx={{ + flex: 1, + p: 2, + border: '2px solid', + borderColor: + containerConfig.config.serviceType === 'ClusterIP' ? 'primary.main' : 'divider', + borderRadius: 2, + cursor: 'pointer', + backgroundColor: 'background.paper', + }} + > + + {t('Internal only')} + + + {t('Use ClusterIP. Best for services that are only reachable within the cluster.')} + + + containerConfig.setConfig(c => ({ ...c, serviceType: 'LoadBalancer' }))} + onKeyDown={e => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + containerConfig.setConfig(c => ({ ...c, serviceType: 'LoadBalancer' })); + } + }} + sx={{ + flex: 1, + p: 2, + border: '2px solid', + borderColor: + containerConfig.config.serviceType === 'LoadBalancer' ? 'primary.main' : 'divider', + borderRadius: 2, + cursor: 'pointer', + backgroundColor: 'background.paper', + }} + > + + {t('Enable public access')} + + + {t('Creates a LoadBalancer to expose the application to the internet.')} + + + + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/ResourcesStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/ResourcesStep.tsx new file mode 100644 index 000000000..cd27df8fc --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/ResourcesStep.tsx @@ -0,0 +1,168 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { Box, Button, FormControlLabel, InputAdornment, Switch, TextField } from '@mui/material'; +import React from 'react'; +import { CONTAINER_STEPS } from '../hooks/useContainerConfiguration'; +import { ContainerConfigProp, LabelWithInfo } from './configureContainerUtils'; +import { setFromInput } from './types'; + +interface ResourcesStepProps { + containerConfig: ContainerConfigProp; +} + +export default function ResourcesStep({ containerConfig }: ResourcesStepProps) { + const { t } = useTranslation(); + + return ( + <> + + containerConfig.setConfig(c => ({ ...c, enableResources: e.target.checked })) + } + /> + } + label={ + + } + /> + + + + } + type="number" + inputProps={{ step: 50, min: 1 }} + value={containerConfig.config.cpuRequest?.replace(/m$/, '')} + onChange={e => + setFromInput(e.target.value, 'm', val => + containerConfig.setConfig(c => ({ ...c, cpuRequest: val })) + ) + } + InputProps={{ + endAdornment: {t('millicores')}, + }} + disabled={!containerConfig.config.enableResources} + fullWidth + /> + + + + + } + type="number" + inputProps={{ step: 50, min: 1 }} + value={containerConfig.config.cpuLimit?.replace(/m$/, '')} + onChange={e => + setFromInput(e.target.value, 'm', val => + containerConfig.setConfig(c => ({ ...c, cpuLimit: val })) + ) + } + InputProps={{ + endAdornment: {t('millicores')}, + }} + disabled={!containerConfig.config.enableResources} + fullWidth + /> + + + + } + type="number" + inputProps={{ step: 64, min: 1 }} + value={containerConfig.config.memoryRequest?.replace(/Mi$/, '')} + onChange={e => + setFromInput(e.target.value, 'Mi', val => + containerConfig.setConfig(c => ({ ...c, memoryRequest: val })) + ) + } + InputProps={{ + endAdornment: {t('mebibytes')}, + }} + disabled={!containerConfig.config.enableResources} + fullWidth + /> + + + + + } + type="number" + inputProps={{ step: 64, min: 1 }} + value={containerConfig.config.memoryLimit?.replace(/Mi$/, '')} + onChange={e => + setFromInput(e.target.value, 'Mi', val => + containerConfig.setConfig(c => ({ ...c, memoryLimit: val })) + ) + } + InputProps={{ + endAdornment: {t('mebibytes')}, + }} + disabled={!containerConfig.config.enableResources} + fullWidth + /> + + + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/WorkloadIdentityStep.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/WorkloadIdentityStep.tsx new file mode 100644 index 000000000..2d711690e --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/WorkloadIdentityStep.tsx @@ -0,0 +1,369 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { + Alert, + Autocomplete, + Box, + Button, + CircularProgress, + FormControlLabel, + Radio, + RadioGroup, + Switch, + TextField, + Typography, +} from '@mui/material'; +import React, { useEffect, useRef, useState } from 'react'; +import { isValidAzResourceName } from '../../../utils/azure/az-cli'; +import { listManagedIdentities } from '../../../utils/azure/az-identity'; +import { K8S_DNS_LABEL_PATTERN } from '../../../utils/kubernetes/k8sNames'; +import { getServiceAccountName } from '../../../utils/kubernetes/serviceAccountNames'; +import { CONTAINER_STEPS } from '../hooks/useContainerConfiguration'; +import { + getDeployIdentityName, + useDeployWorkloadIdentity, +} from '../hooks/useDeployWorkloadIdentity'; +import { + type ContainerConfigProp, + type DeployAzureContext, + LabelWithInfo, +} from './configureContainerUtils'; + +interface WorkloadIdentityStepProps { + containerConfig: ContainerConfigProp; + azureContext?: DeployAzureContext; + namespace?: string; +} + +export default function WorkloadIdentityStep({ + containerConfig, + azureContext, + namespace, +}: WorkloadIdentityStepProps) { + const { t } = useTranslation(); + const workloadIdentity = useDeployWorkloadIdentity(); + const [identityMode, setIdentityMode] = useState<'create' | 'existing'>('create'); + const derivedIdentityRg = `rg-${containerConfig.config.appName || 'app'}`; + const [identityRg, setIdentityRg] = useState(derivedIdentityRg); + const [identityRgTouched, setIdentityRgTouched] = useState(false); + useEffect(() => { + if (!identityRgTouched) { + setIdentityRg(derivedIdentityRg); + } + }, [derivedIdentityRg, identityRgTouched]); + const [existingIdentities, setExistingIdentities] = useState< + Array<{ name: string; clientId: string; principalId: string; resourceGroup: string }> + >([]); + const [existingIdentityRg, setExistingIdentityRg] = useState(azureContext?.resourceGroup ?? ''); + const [loadingIdentities, setLoadingIdentities] = useState(false); + const [identityLoadError, setIdentityLoadError] = useState(null); + const [identityValidationError, setIdentityValidationError] = useState(null); + const loadRequestRef = useRef(0); + + const handleLoadExistingIdentities = async (rg?: string) => { + if (!azureContext) return; + const requestId = ++loadRequestRef.current; + setLoadingIdentities(true); + setIdentityLoadError(null); + try { + const result = await listManagedIdentities({ + resourceGroup: rg || azureContext.resourceGroup, + subscriptionId: azureContext.subscriptionId, + }); + if (requestId !== loadRequestRef.current) return; + if (result.success && result.identities) { + setExistingIdentities(result.identities); + } else { + setIdentityLoadError(result.error ?? 'Failed to load managed identities'); + } + } catch (err) { + if (requestId !== loadRequestRef.current) return; + setIdentityLoadError( + err instanceof Error ? err.message : 'Failed to load managed identities' + ); + } finally { + if (requestId === loadRequestRef.current) { + setLoadingIdentities(false); + } + } + }; + + return ( + <> + + containerConfig.setConfig(c => ({ + ...c, + enableWorkloadIdentity: e.target.checked, + })) + } + /> + } + label={ + + } + /> + {!azureContext && ( + + {t('Azure sign-in is required to configure workload identity.')} + + )} + {containerConfig.config.enableWorkloadIdentity && azureContext && ( + + { + const mode = e.target.value as 'create' | 'existing'; + setIdentityMode(mode); + workloadIdentity.reset(); + if (mode === 'existing' && existingIdentities.length === 0) { + handleLoadExistingIdentities(existingIdentityRg); + } + }} + row + > + } label={t('Create new identity')} /> + } + label={t('Use existing identity')} + /> + + + {identityMode === 'create' && ( + + { + setIdentityRg(e.target.value); + setIdentityRgTouched(true); + setIdentityValidationError(null); + }} + helperText={t( + 'Resource group for the managed identity. Will be created if it does not exist.' + )} + /> + + {workloadIdentity.status !== 'idle' && + workloadIdentity.status !== 'done' && + workloadIdentity.status !== 'error' && ( + + + + {workloadIdentity.status === 'creating-rg' && t('Creating resource group...')} + {workloadIdentity.status === 'checking' && + t('Checking for existing identity...')} + {workloadIdentity.status === 'creating-identity' && + t('Creating managed identity...')} + {workloadIdentity.status === 'assigning-roles' && + t('Assigning required roles...')} + {workloadIdentity.status === 'fetching-issuer' && + t('Fetching OIDC issuer URL...')} + {workloadIdentity.status === 'creating-credential' && + t('Creating federated credential...')} + + + )} + + )} + + {identityMode === 'existing' && ( + + + { + setExistingIdentityRg(e.target.value); + setExistingIdentities([]); + setIdentityLoadError(null); + }} + helperText={t('Resource group to search for managed identities.')} + sx={{ flex: 1 }} + /> + + + {loadingIdentities ? ( + + + {t('Loading identities...')} + + ) : ( + `${option.name} (${option.clientId})`} + onChange={(_e, value) => { + if (value) { + containerConfig.setConfig(c => ({ + ...c, + workloadIdentityClientId: value.clientId, + workloadIdentityServiceAccount: getServiceAccountName( + containerConfig.config.appName || 'app' + ), + })); + } + }} + renderInput={params => ( + + )} + /> + )} + {containerConfig.config.workloadIdentityClientId && identityMode === 'existing' && ( + + {t( + "When using an existing identity, ensure it has the required Azure RBAC roles and a federated credential for this cluster's OIDC issuer and service account." + )} + + )} + {identityLoadError && ( + + {identityLoadError} + + )} + + )} + + {(workloadIdentity.error || identityValidationError) && ( + + {identityValidationError || workloadIdentity.error} + + )} + + {(workloadIdentity.status === 'done' || + containerConfig.config.workloadIdentityClientId) && ( + + + {t('Client ID')}:{' '} + {workloadIdentity.result?.clientId || + containerConfig.config.workloadIdentityClientId} + + + {t('Service Account')}:{' '} + {workloadIdentity.result?.serviceAccountName || + containerConfig.config.workloadIdentityServiceAccount} + + + )} + + )} + + + + + + ); +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/components/configureContainerUtils.tsx b/plugins/aks-desktop/src/components/DeployWizard/components/configureContainerUtils.tsx new file mode 100644 index 000000000..4b8a213f1 --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/components/configureContainerUtils.tsx @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { Icon } from '@iconify/react'; +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { Box, IconButton, Tooltip } from '@mui/material'; +import React from 'react'; +import { ContainerConfig } from '../hooks/useContainerConfiguration'; + +/** POSIX environment variable name: letter or underscore, then alphanumerics/underscores. */ +export const ENV_VAR_KEY_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*$/; + +export function LabelWithInfo({ label, infoText }: { label: string; infoText: string }) { + const { t } = useTranslation(); + + return ( + + {label} + + + + + + + ); +} + +export interface ContainerConfigProp { + config: ContainerConfig; + setConfig: React.Dispatch>; +} + +/** Azure context needed for workload identity setup in the Deploy Wizard. */ +export interface DeployAzureContext { + subscriptionId: string; + resourceGroup: string; + clusterName: string; + isManagedNamespace?: boolean; + azureRbacEnabled?: boolean; +} diff --git a/plugins/aks-desktop/src/components/DeployWizard/hooks/useContainerConfiguration.ts b/plugins/aks-desktop/src/components/DeployWizard/hooks/useContainerConfiguration.ts index 93c5a3986..c1ad4f6ef 100644 --- a/plugins/aks-desktop/src/components/DeployWizard/hooks/useContainerConfiguration.ts +++ b/plugins/aks-desktop/src/components/DeployWizard/hooks/useContainerConfiguration.ts @@ -3,25 +3,43 @@ import { useEffect, useState } from 'react'; +/** + * Flat configuration state for the container deployment wizard. + * Organized by section: UI state, Basic, Networking, Resources, + * Environment variables, Health probes, HPA, Security, + * Workload Identity, and Scheduling. + */ export interface ContainerConfig { + // -- UI state -- containerStep: number; + showProbeConfigs: boolean; + containerPreviewYaml: string; + + // -- Basic -- appName: string; containerImage: string; replicas: number; + + // -- Networking -- targetPort: number; servicePort: number; useCustomServicePort: boolean; serviceType: 'ClusterIP' | 'LoadBalancer'; + + // -- Resources -- enableResources: boolean; cpuRequest: string; cpuLimit: string; memoryRequest: string; memoryLimit: string; - envVars: Array<{ key: string; value: string }>; + + // -- Environment variables -- + envVars: Array<{ key: string; value: string; isSecret: boolean }>; + + // -- Health probes -- enableLivenessProbe: boolean; enableReadinessProbe: boolean; enableStartupProbe: boolean; - showProbeConfigs: boolean; livenessPath: string; readinessPath: string; startupPath: string; @@ -40,18 +58,43 @@ export interface ContainerConfig { startupTimeout: number; startupFailure: number; startupSuccess: number; + + // -- HPA -- enableHpa: boolean; hpaMinReplicas: number; hpaMaxReplicas: number; hpaTargetCpu: number; + + // -- Security -- runAsNonRoot: boolean; readOnlyRootFilesystem: boolean; allowPrivilegeEscalation: boolean; + + // -- Workload Identity -- + /** Whether to enable Azure Workload Identity for this deployment. */ + enableWorkloadIdentity: boolean; + /** The Azure AD client ID of the managed identity. */ + workloadIdentityClientId: string; + /** The Kubernetes ServiceAccount name for workload identity binding. */ + workloadIdentityServiceAccount: string; + + // -- Scheduling -- enablePodAntiAffinity: boolean; enableTopologySpreadConstraints: boolean; - containerPreviewYaml: string; } +/** Named indices for the container configuration stepper. */ +export const CONTAINER_STEPS = { + BASICS: 0, + NETWORKING: 1, + HEALTHCHECKS: 2, + RESOURCES: 3, + ENV_VARS: 4, + HPA: 5, + WORKLOAD_IDENTITY: 6, + ADVANCED: 7, +} as const; + export function useContainerConfiguration( initialApplicationName?: string, initialConfig?: Partial @@ -71,7 +114,7 @@ export function useContainerConfiguration( cpuLimit: '500m', memoryRequest: '128Mi', memoryLimit: '512Mi', - envVars: [{ key: '', value: '' }], + envVars: [{ key: '', value: '', isSecret: false }], enableLivenessProbe: true, enableReadinessProbe: true, enableStartupProbe: true, @@ -101,6 +144,9 @@ export function useContainerConfiguration( runAsNonRoot: false, readOnlyRootFilesystem: false, allowPrivilegeEscalation: false, + enableWorkloadIdentity: false, + workloadIdentityClientId: '', + workloadIdentityServiceAccount: '', enablePodAntiAffinity: true, enableTopologySpreadConstraints: true, containerPreviewYaml: '', diff --git a/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWizard.ts b/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWizard.ts index fdc47aef4..495da89cd 100644 --- a/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWizard.ts +++ b/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWizard.ts @@ -7,7 +7,7 @@ import React, { useEffect, useState } from 'react'; import YAML from 'yaml'; import { dryRunApply } from '../utils/dryRunApply'; import { applyNamespaceOverride } from '../utils/namespaceOverride'; -import { type ContainerConfigForYaml, generateYamlForContainer } from '../utils/yamlGenerator'; +import { type ContainerDeploymentConfig, generateYamlForContainer } from '../utils/yamlGenerator'; import type { ContainerConfig } from './useContainerConfiguration'; import { useContainerConfiguration } from './useContainerConfiguration'; @@ -24,7 +24,7 @@ function parseAndOverride(yaml: string, namespace?: string) { } /** Strips UI-only fields from a full ContainerConfig, returning only YAML-generation fields. */ -function toYamlConfig(config: ContainerConfig, namespace?: string): ContainerConfigForYaml { +function toYamlConfig(config: ContainerConfig, namespace?: string): ContainerDeploymentConfig { // Destructure to exclude UI-only fields that generateYamlForContainer does not accept. /* eslint-disable no-unused-vars */ const { containerStep, showProbeConfigs, containerPreviewYaml, useCustomServicePort, ...rest } = diff --git a/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWorkloadIdentity.test.ts b/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWorkloadIdentity.test.ts new file mode 100644 index 000000000..6cf49e236 --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWorkloadIdentity.test.ts @@ -0,0 +1,255 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +// @vitest-environment jsdom + +import { act, renderHook } from '@testing-library/react'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +const mockResourceGroupExists = vi.fn(); +const mockGetResourceGroupLocation = vi.fn(); +const mockCreateResourceGroup = vi.fn(); +const mockGetManagedIdentity = vi.fn(); +const mockCreateManagedIdentity = vi.fn(); +const mockAssignRolesToIdentity = vi.fn(); +const mockGetAksOidcIssuerUrl = vi.fn(); +const mockCreateK8sFederatedCredential = vi.fn(); + +vi.mock('../../../utils/azure/az-cli', () => ({ + resourceGroupExists: (...args: any[]) => mockResourceGroupExists(...args), + getResourceGroupLocation: (...args: any[]) => mockGetResourceGroupLocation(...args), + createResourceGroup: (...args: any[]) => mockCreateResourceGroup(...args), +})); + +vi.mock('../../../utils/azure/az-identity', () => ({ + getManagedIdentity: (...args: any[]) => mockGetManagedIdentity(...args), + createManagedIdentity: (...args: any[]) => mockCreateManagedIdentity(...args), + assignRolesToIdentity: (...args: any[]) => mockAssignRolesToIdentity(...args), + getManagedNamespaceResourceId: vi.fn(), + buildClusterScope: (sub: string, rg: string, cluster: string) => + `/subscriptions/${sub}/resourceGroups/${rg}/providers/Microsoft.ContainerService/managedClusters/${cluster}`, +})); + +vi.mock('../../../utils/azure/az-federation', () => ({ + getAksOidcIssuerUrl: (...args: any[]) => mockGetAksOidcIssuerUrl(...args), + createK8sFederatedCredential: (...args: any[]) => mockCreateK8sFederatedCredential(...args), +})); + +vi.mock('../../../utils/azure/identitySetup', async () => { + const actual = await vi.importActual('../../../utils/azure/identitySetup'); + return actual; +}); + +vi.mock('../../../utils/azure/identityRoles', async () => { + const actual = await vi.importActual('../../../utils/azure/identityRoles'); + return actual; +}); + +vi.mock('../../../utils/azure/identityWithRoles', async () => { + const actual = await vi.importActual('../../../utils/azure/identityWithRoles'); + return actual; +}); + +import { getServiceAccountName } from '../../../utils/kubernetes/serviceAccountNames'; +import type { DeployWorkloadIdentityConfig } from './useDeployWorkloadIdentity'; +import { getDeployIdentityName, useDeployWorkloadIdentity } from './useDeployWorkloadIdentity'; + +const baseConfig: DeployWorkloadIdentityConfig = { + subscriptionId: '12345678-1234-1234-1234-123456789abc', + resourceGroup: 'cluster-rg', + identityResourceGroup: 'rg-my-app', + clusterName: 'my-cluster', + namespace: 'my-namespace', + appName: 'my-app', + isManagedNamespace: false, +}; + +describe('getDeployIdentityName', () => { + it('derives identity name from app name', () => { + expect(getDeployIdentityName('my-app')).toBe('id-my-app-workload'); + }); +}); + +describe('getServiceAccountName', () => { + it('sanitizes: lowercase, strips invalid chars, truncates to 63, fallback to app-sa', () => { + expect(getServiceAccountName('my-app')).toBe('my-app-sa'); + }); + + it('converts uppercase to lowercase', () => { + expect(getServiceAccountName('MyApp')).toBe('myapp-sa'); + }); + + it('replaces underscores with hyphens', () => { + expect(getServiceAccountName('my_app')).toBe('my-app-sa'); + }); + + it('falls back for empty string', () => { + // '' → '-sa' → strip leading hyphen → 'sa' + expect(getServiceAccountName('')).toBe('sa'); + }); + + it('strips trailing hyphens after truncation to 63 chars', () => { + const longName = 'a'.repeat(60) + '_b'; // underscore becomes hyphen + const result = getServiceAccountName(longName); + expect(result.length).toBeLessThanOrEqual(63); + expect(result).not.toMatch(/-$/); + }); + + it('handles input producing only special characters', () => { + expect(getServiceAccountName('!!!@@@###')).toBe('sa'); + }); +}); + +describe('useDeployWorkloadIdentity', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('initializes with idle status', () => { + const { result } = renderHook(() => useDeployWorkloadIdentity()); + + expect(result.current.status).toBe('idle'); + expect(result.current.error).toBeNull(); + expect(result.current.result).toBeNull(); + }); + + it('happy path: full setup flow returns clientId and serviceAccountName', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); + mockGetAksOidcIssuerUrl.mockResolvedValue({ + success: true, + issuerUrl: 'https://oidc.example.com', + }); + mockCreateK8sFederatedCredential.mockResolvedValue({ success: true }); + + const { result } = renderHook(() => useDeployWorkloadIdentity()); + + await act(async () => { + await result.current.setupWorkloadIdentity(baseConfig); + }); + + expect(result.current.status).toBe('done'); + expect(result.current.error).toBeNull(); + expect(result.current.result).toEqual({ + clientId: 'cid', + serviceAccountName: 'my-app-sa', + }); + }); + + it('sets error when OIDC issuer fetch fails', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); + mockGetAksOidcIssuerUrl.mockResolvedValue({ + success: false, + error: 'Failed to get OIDC issuer URL', + }); + + const { result } = renderHook(() => useDeployWorkloadIdentity()); + + await act(async () => { + await result.current.setupWorkloadIdentity(baseConfig); + }); + + expect(result.current.status).toBe('error'); + expect(result.current.error).toContain('OIDC issuer'); + }); + + it('sets error when federated credential creation fails', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); + mockGetAksOidcIssuerUrl.mockResolvedValue({ + success: true, + issuerUrl: 'https://oidc.example.com', + }); + mockCreateK8sFederatedCredential.mockResolvedValue({ + success: false, + error: 'Credential already exists', + }); + + const { result } = renderHook(() => useDeployWorkloadIdentity()); + + await act(async () => { + await result.current.setupWorkloadIdentity(baseConfig); + }); + + expect(result.current.status).toBe('error'); + expect(result.current.error).toContain('Credential already exists'); + }); + + it('calls OIDC issuer fetch before federated credential creation', async () => { + const callOrder: string[] = []; + + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); + mockGetAksOidcIssuerUrl.mockImplementation(async () => { + callOrder.push('fetching-issuer'); + return { success: true, issuerUrl: 'https://oidc.example.com' }; + }); + mockCreateK8sFederatedCredential.mockImplementation(async () => { + callOrder.push('creating-credential'); + return { success: true }; + }); + + const { result } = renderHook(() => useDeployWorkloadIdentity()); + + await act(async () => { + await result.current.setupWorkloadIdentity(baseConfig); + }); + + expect(callOrder).toEqual(['fetching-issuer', 'creating-credential']); + expect(result.current.status).toBe('done'); + }); + + it('reuses existing identity when getManagedIdentity returns success', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'existing-cid', + principalId: 'existing-pid', + tenantId: 'existing-tid', + }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); + mockGetAksOidcIssuerUrl.mockResolvedValue({ + success: true, + issuerUrl: 'https://oidc.example.com', + }); + mockCreateK8sFederatedCredential.mockResolvedValue({ success: true }); + + const { result } = renderHook(() => useDeployWorkloadIdentity()); + + await act(async () => { + await result.current.setupWorkloadIdentity(baseConfig); + }); + + expect(mockCreateManagedIdentity).not.toHaveBeenCalled(); + expect(result.current.status).toBe('done'); + expect(result.current.result).toEqual({ + clientId: 'existing-cid', + serviceAccountName: 'my-app-sa', + }); + }); +}); diff --git a/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWorkloadIdentity.ts b/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWorkloadIdentity.ts new file mode 100644 index 000000000..582279ca0 --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/hooks/useDeployWorkloadIdentity.ts @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useCallback, useState } from 'react'; +import { + createK8sFederatedCredential, + getAksOidcIssuerUrl, +} from '../../../utils/azure/az-federation'; +import { ensureIdentityWithRoles } from '../../../utils/azure/identityWithRoles'; +import { sanitizeDnsName } from '../../../utils/kubernetes/k8sNames'; +import { getServiceAccountName } from '../../../utils/kubernetes/serviceAccountNames'; + +type DeployWorkloadIdentityStatus = + | 'idle' + | 'creating-rg' + | 'checking' + | 'creating-identity' + | 'assigning-roles' + | 'fetching-issuer' + | 'creating-credential' + | 'done' + | 'error'; + +interface DeployWorkloadIdentityResult { + clientId: string; + serviceAccountName: string; +} + +interface UseDeployWorkloadIdentityReturn { + status: DeployWorkloadIdentityStatus; + error: string | null; + result: DeployWorkloadIdentityResult | null; + setupWorkloadIdentity: (config: DeployWorkloadIdentityConfig) => Promise; + reset: () => void; +} + +export interface DeployWorkloadIdentityConfig { + subscriptionId: string; + resourceGroup: string; + identityResourceGroup: string; + clusterName: string; + namespace: string; + appName: string; + /** Full Azure resource ID of the ACR. Omit to skip ACR roles. */ + acrResourceId?: string; + /** Whether the target namespace is a managed namespace. Must be resolved before calling. */ + isManagedNamespace: boolean; + /** Whether Azure RBAC for Kubernetes is enabled on the cluster. */ + azureRbacEnabled?: boolean; +} + +/** Derives a valid Azure managed identity name from the app name (max 128 chars). */ +export function getDeployIdentityName(appName: string): string { + return sanitizeDnsName(`id-${appName}-workload`, 128, 'id-app-workload'); +} + +export const useDeployWorkloadIdentity = (): UseDeployWorkloadIdentityReturn => { + const [status, setStatus] = useState('idle'); + const [error, setError] = useState(null); + const [result, setResult] = useState(null); + + const setupWorkloadIdentity = useCallback(async (config: DeployWorkloadIdentityConfig) => { + const { + subscriptionId, + resourceGroup, + identityResourceGroup, + clusterName, + namespace, + appName, + acrResourceId, + isManagedNamespace, + azureRbacEnabled, + } = config; + const identityName = getDeployIdentityName(appName); + const serviceAccountName = getServiceAccountName(appName); + + setError(null); + setResult(null); + + try { + // Steps 1-4: Ensure RG + identity + roles via shared utility + const identity = await ensureIdentityWithRoles({ + subscriptionId, + resourceGroup, + identityResourceGroup, + identityName, + clusterName, + acrResourceId, + isManagedNamespace, + namespaceName: namespace, + azureRbacEnabled, + onStatusChange: setStatus, + }); + + // Step 5: Get OIDC issuer URL + setStatus('fetching-issuer'); + const issuerResult = await getAksOidcIssuerUrl({ + clusterName, + resourceGroup, + subscriptionId, + }); + if (!issuerResult.success || !issuerResult.issuerUrl) { + throw new Error( + issuerResult.error ?? + 'Failed to get OIDC issuer URL. Ensure both OIDC issuer and workload identity are enabled on the cluster with: az aks update --enable-oidc-issuer --enable-workload-identity' + ); + } + + // Step 6: Create federated credential for the K8s service account + setStatus('creating-credential'); + const credResult = await createK8sFederatedCredential({ + identityName, + resourceGroup: identityResourceGroup, + subscriptionId, + issuerUrl: issuerResult.issuerUrl, + namespace, + serviceAccountName, + }); + if (!credResult.success) { + throw new Error(credResult.error ?? 'Failed to create federated credential'); + } + + setResult({ clientId: identity.clientId, serviceAccountName }); + setStatus('done'); + } catch (err) { + console.error('[DeployWorkloadIdentity] Setup failed:', err); + setError(err instanceof Error ? err.message : 'Unknown error during workload identity setup'); + setStatus('error'); + } + }, []); + + const reset = useCallback(() => { + setStatus('idle'); + setError(null); + setResult(null); + }, []); + + return { status, error, result, setupWorkloadIdentity, reset }; +}; diff --git a/plugins/aks-desktop/src/components/DeployWizard/utils/yamlGenerator.test.ts b/plugins/aks-desktop/src/components/DeployWizard/utils/yamlGenerator.test.ts new file mode 100644 index 000000000..e4579b6eb --- /dev/null +++ b/plugins/aks-desktop/src/components/DeployWizard/utils/yamlGenerator.test.ts @@ -0,0 +1,216 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { describe, expect, it } from 'vitest'; +import { ContainerDeploymentConfig, generateYamlForContainer } from './yamlGenerator'; + +function makeConfig(overrides?: Partial): ContainerDeploymentConfig { + return { + appName: 'test-app', + containerImage: 'nginx:latest', + replicas: 1, + targetPort: 80, + servicePort: 80, + serviceType: 'ClusterIP', + enableResources: false, + cpuRequest: '100m', + cpuLimit: '500m', + memoryRequest: '128Mi', + memoryLimit: '512Mi', + envVars: [], + enableLivenessProbe: false, + enableReadinessProbe: false, + enableStartupProbe: false, + livenessPath: '/', + livenessInitialDelay: 10, + livenessPeriod: 10, + livenessTimeout: 1, + livenessFailure: 3, + livenessSuccess: 1, + readinessPath: '/', + readinessInitialDelay: 5, + readinessPeriod: 10, + readinessTimeout: 1, + readinessFailure: 3, + readinessSuccess: 1, + startupPath: '/', + startupInitialDelay: 0, + startupPeriod: 10, + startupTimeout: 1, + startupFailure: 30, + startupSuccess: 1, + enableHpa: false, + hpaMinReplicas: 1, + hpaMaxReplicas: 5, + hpaTargetCpu: 70, + runAsNonRoot: false, + readOnlyRootFilesystem: false, + allowPrivilegeEscalation: false, + enableWorkloadIdentity: false, + workloadIdentityClientId: '', + workloadIdentityServiceAccount: '', + enablePodAntiAffinity: false, + enableTopologySpreadConstraints: false, + namespace: 'test-ns', + ...overrides, + }; +} + +describe('generateYamlForContainer', () => { + it('generates a basic Deployment and Service with correct name, namespace, image, and ports', () => { + const yaml = generateYamlForContainer(makeConfig()); + + expect(yaml).toContain('kind: Deployment'); + expect(yaml).toContain('kind: Service'); + expect(yaml).toContain('name: test-app'); + expect(yaml).toContain('namespace: test-ns'); + expect(yaml).toContain('image: nginx:latest'); + expect(yaml).toContain('containerPort: 80'); + expect(yaml).toContain('port: 80'); + expect(yaml).toContain('targetPort: 80'); + expect(yaml).toContain('type: ClusterIP'); + }); + + it('generates secretKeyRef and a Secret manifest for secret env vars with values', () => { + const yaml = generateYamlForContainer( + makeConfig({ + envVars: [{ key: 'DB_PASS', value: 'secret123', isSecret: true }], + }) + ); + + expect(yaml).toContain('secretKeyRef'); + expect(yaml).toContain('name: test-app-env-secrets'); + expect(yaml).toContain('key: "DB_PASS"'); + expect(yaml).toContain('kind: Secret'); + expect(yaml).toContain('stringData'); + expect(yaml).toContain('"DB_PASS": "secret123"'); + }); + + it('generates secretKeyRef and Secret manifest with empty value when secret env var has blank value (edit flow)', () => { + const yaml = generateYamlForContainer( + makeConfig({ + envVars: [{ key: 'DB_PASS', value: '', isSecret: true }], + }) + ); + + expect(yaml).toContain('secretKeyRef'); + expect(yaml).toContain('name: test-app-env-secrets'); + expect(yaml).toContain('kind: Secret'); + expect(yaml).toContain('stringData'); + // Empty value is preserved so the Secret key exists (avoids broken secretKeyRef) + expect(yaml).toContain('"DB_PASS": ""'); + }); + + it('generates both plain value and secretKeyRef entries for mixed env vars', () => { + const yaml = generateYamlForContainer( + makeConfig({ + envVars: [ + { key: 'APP_ENV', value: 'production', isSecret: false }, + { key: 'DB_PASS', value: 'secret123', isSecret: true }, + ], + }) + ); + + expect(yaml).toContain('name: APP_ENV'); + expect(yaml).toContain('value: "production"'); + expect(yaml).toContain('name: DB_PASS'); + expect(yaml).toContain('secretKeyRef'); + }); + + it('generates workload identity config with ServiceAccount manifest when clientId is provided', () => { + const yaml = generateYamlForContainer( + makeConfig({ + enableWorkloadIdentity: true, + workloadIdentityClientId: 'test-client-id', + workloadIdentityServiceAccount: 'my-sa', + }) + ); + + expect(yaml).toContain('azure.workload.identity/use: "true"'); + expect(yaml).toContain('serviceAccountName: my-sa'); + expect(yaml).toContain('kind: ServiceAccount'); + expect(yaml).toContain('name: my-sa'); + expect(yaml).toContain('azure.workload.identity/client-id: "test-client-id"'); + }); + + it('generates workload identity pod config but no ServiceAccount manifest when clientId is empty (edit flow)', () => { + const yaml = generateYamlForContainer( + makeConfig({ + enableWorkloadIdentity: true, + workloadIdentityClientId: '', + workloadIdentityServiceAccount: 'my-sa', + }) + ); + + expect(yaml).toContain('azure.workload.identity/use: "true"'); + expect(yaml).toContain('serviceAccountName: my-sa'); + expect(yaml).not.toContain('kind: ServiceAccount'); + }); + + it('generates an HPA manifest when enableHpa is true', () => { + const yaml = generateYamlForContainer( + makeConfig({ + enableHpa: true, + hpaMinReplicas: 2, + hpaMaxReplicas: 10, + hpaTargetCpu: 80, + }) + ); + + expect(yaml).toContain('kind: HorizontalPodAutoscaler'); + expect(yaml).toContain('minReplicas: 2'); + expect(yaml).toContain('maxReplicas: 10'); + expect(yaml).toContain('averageUtilization: 80'); + expect(yaml).toContain('name: test-app'); + expect(yaml).toContain('namespace: test-ns'); + }); + + it('outputs documents in correct order: Secret, ServiceAccount, Deployment, Service, HPA', () => { + const yaml = generateYamlForContainer( + makeConfig({ + envVars: [{ key: 'DB_PASS', value: 'secret123', isSecret: true }], + enableWorkloadIdentity: true, + workloadIdentityClientId: 'test-client-id', + workloadIdentityServiceAccount: 'my-sa', + enableHpa: true, + }) + ); + + const secretIndex = yaml.indexOf('# Secret\n'); + const saIndex = yaml.indexOf('# ServiceAccount\n'); + const deploymentIndex = yaml.indexOf('# Deployment\n'); + const serviceIndex = yaml.indexOf('# Service\n'); + const hpaIndex = yaml.indexOf('# HPA\n'); + + expect(secretIndex).toBeGreaterThanOrEqual(0); + expect(saIndex).toBeGreaterThanOrEqual(0); + expect(deploymentIndex).toBeGreaterThanOrEqual(0); + expect(serviceIndex).toBeGreaterThanOrEqual(0); + expect(hpaIndex).toBeGreaterThanOrEqual(0); + + expect(secretIndex).toBeLessThan(saIndex); + expect(saIndex).toBeLessThan(deploymentIndex); + expect(deploymentIndex).toBeLessThan(serviceIndex); + expect(serviceIndex).toBeLessThan(hpaIndex); + }); + + it('normalizes secretName to DNS-1123 when appName is long', () => { + const longName = 'a'.repeat(60); + const yaml = generateYamlForContainer( + makeConfig({ + appName: longName, + envVars: [{ key: 'SECRET_KEY', value: 'val', isSecret: true }], + }) + ); + + // `aaa...aaa-env-secrets` (72 chars) should be truncated to 63 chars + expect(yaml).toContain('kind: Secret'); + // The Secret metadata name should be at most 63 chars (truncated) + const secretSection = yaml.slice(yaml.indexOf('kind: Secret')); + const nameMatch = secretSection.match(/^\s+name:\s+(.+)$/m); + expect(nameMatch).not.toBeNull(); + const secretName = nameMatch![1]; + expect(secretName.length).toBeLessThanOrEqual(63); + expect(secretName).toMatch(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/); + }); +}); diff --git a/plugins/aks-desktop/src/components/DeployWizard/utils/yamlGenerator.ts b/plugins/aks-desktop/src/components/DeployWizard/utils/yamlGenerator.ts index 07e6ce09f..23228e377 100644 --- a/plugins/aks-desktop/src/components/DeployWizard/utils/yamlGenerator.ts +++ b/plugins/aks-desktop/src/components/DeployWizard/utils/yamlGenerator.ts @@ -1,6 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the Apache 2.0. +import YAML from 'yaml'; +import { normalizeK8sName } from '../../../utils/kubernetes/k8sNames'; +import { getServiceAccountName } from '../../../utils/kubernetes/serviceAccountNames'; import { ContainerConfig } from '../hooks/useContainerConfiguration'; /** @@ -14,62 +17,58 @@ export type ContainerDeploymentConfig = Omit< namespace?: string; }; -/** - * Type with only the fields needed for YAML generation from ContainerConfigurationState - */ -export type ContainerConfigForYaml = Omit & { - namespace?: string; -}; - -/** - * Escapes a string for inclusion inside a YAML double-quoted scalar. - * Handles backslashes first, then quotes and basic control characters. - */ -function escapeYamlDoubleQuoted(input: string): string { - return input - .replace(/\\/g, '\\\\') - .replace(/"/g, '\\"') - .replace(/\n/g, '\\n') - .replace(/\r/g, '\\r') - .replace(/\t/g, '\\t'); +/** Helper to create a YAML Scalar with explicit double-quoting. */ +function quoted(value: string): YAML.Scalar { + const s = new YAML.Scalar(value); + s.type = YAML.Scalar.QUOTE_DOUBLE; + return s; } /** * Generates Kubernetes YAML for a container deployment * @param config - Configuration object containing all deployment settings - * @returns Multi-document YAML string containing Deployment, Service, and optionally HPA + * @returns Multi-document YAML string containing optional Secret, optional ServiceAccount, + * Deployment, Service, and optionally HPA */ -export function generateYamlForContainer(config: ContainerConfigForYaml): string { +export function generateYamlForContainer(config: ContainerDeploymentConfig): string { const ns = config.namespace || 'default'; const name = config.appName || 'app'; const image = config.containerImage || 'nginx:latest'; - const envSection = config.envVars - .filter(e => e.key.trim().length > 0) - .map( - e => - ` - name: ${e.key} - value: "${escapeYamlDoubleQuoted(e.value)}"` - ) - .join('\n'); - - const resources = config.enableResources - ? `\n resources:\n requests:\n cpu: ${ - config.cpuRequest || '100m' - }\n memory: ${ - config.memoryRequest || '128Mi' - }\n limits:\n cpu: ${ - config.cpuLimit || '500m' - }\n memory: ${config.memoryLimit || '512Mi'}` - : ''; - - const envYaml = envSection ? `\n env:\n${envSection}` : ''; - - const probeBlock = ( + const activeEnvVars = config.envVars.filter(e => e.key.trim().length > 0); + const plainEnvVars = activeEnvVars.filter(e => !e.isSecret); + const secretEnvVars = activeEnvVars.filter(e => e.isSecret); + const secretName = normalizeK8sName(`${name}-env-secrets`); + + // Pod-level WI config (label + serviceAccountName) should be preserved even without + // client ID — edit flows may not have it since it lives on the ServiceAccount annotation. + // The ServiceAccount manifest (below) is only emitted when client ID is available. + const wiPodConfigEnabled = !!config.enableWorkloadIdentity; + const wiFullEnabled = config.enableWorkloadIdentity && config.workloadIdentityClientId; + const saName = config.workloadIdentityServiceAccount || getServiceAccountName(name); + + // --- Build env entries --- + const envEntries: object[] = [ + ...plainEnvVars.map(e => ({ + name: e.key, + value: quoted(e.value), + })), + ...secretEnvVars.map(e => ({ + name: e.key, + valueFrom: { + secretKeyRef: { + name: secretName, + key: quoted(e.key), + }, + }, + })), + ]; + + // --- Build probe objects --- + function buildProbe( type: 'liveness' | 'readiness' | 'startup', - path: string | undefined, - targetPort: number - ) => { + path: string | undefined + ): object { const initialDelay = type === 'liveness' ? config.livenessInitialDelay ?? 10 @@ -101,118 +100,229 @@ export function generateYamlForContainer(config: ContainerConfigForYaml): string ? config.readinessSuccess ?? 1 : config.startupSuccess ?? 1; - return ` ${type}Probe: - httpGet: - path: ${path || '/'} - port: ${targetPort} - initialDelaySeconds: ${initialDelay} - periodSeconds: ${period} - timeoutSeconds: ${timeout} - failureThreshold: ${failure} - successThreshold: ${success}`; + return { + httpGet: { + path: path || '/', + port: config.targetPort, + }, + initialDelaySeconds: initialDelay, + periodSeconds: period, + timeoutSeconds: timeout, + failureThreshold: failure, + successThreshold: success, + }; + } + + // --- Build container object --- + const container: Record = { + name, + image, + ports: [{ containerPort: config.targetPort }], }; - const probeParts = []; - if (config.enableLivenessProbe) - probeParts.push(probeBlock('liveness', config.livenessPath, config.targetPort)); - if (config.enableReadinessProbe) - probeParts.push(probeBlock('readiness', config.readinessPath, config.targetPort)); - if (config.enableStartupProbe) - probeParts.push(probeBlock('startup', config.startupPath, config.targetPort)); - const probesSection = probeParts.length ? `\n${probeParts.join('\n')}` : ''; - - const securityContextParts = []; - if (config.runAsNonRoot) securityContextParts.push(' runAsNonRoot: true'); - if (config.readOnlyRootFilesystem) - securityContextParts.push(' readOnlyRootFilesystem: true'); - // Always include allowPrivilegeEscalation (defaults to true in Kubernetes, so we set it explicitly) - securityContextParts.push( - ` allowPrivilegeEscalation: ${config.allowPrivilegeEscalation}` - ); + if (config.enableLivenessProbe) { + container.livenessProbe = buildProbe('liveness', config.livenessPath); + } + if (config.enableReadinessProbe) { + container.readinessProbe = buildProbe('readiness', config.readinessPath); + } + if (config.enableStartupProbe) { + container.startupProbe = buildProbe('startup', config.startupPath); + } + + if (config.enableResources) { + container.resources = { + requests: { + cpu: config.cpuRequest || '100m', + memory: config.memoryRequest || '128Mi', + }, + limits: { + cpu: config.cpuLimit || '500m', + memory: config.memoryLimit || '512Mi', + }, + }; + } + + if (envEntries.length > 0) { + container.env = envEntries; + } + // Always include securityContext since we're setting allowPrivilegeEscalation explicitly - const securityContextYaml = `\n securityContext:\n${securityContextParts.join('\n')}`; - - const affinityYaml = config.enablePodAntiAffinity - ? `\n affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - topologyKey: kubernetes.io/hostname - labelSelector: - matchLabels: - app: ${name}` - : ''; - - const topologySpreadConstraintsYaml = config.enableTopologySpreadConstraints - ? `\n topologySpreadConstraints: - - maxSkew: 1 - topologyKey: kubernetes.io/hostname - whenUnsatisfiable: ScheduleAnyway - labelSelector: - matchLabels: - app: ${name}` - : ''; - - const deployment = `apiVersion: apps/v1 -kind: Deployment -metadata: - name: ${name} - namespace: ${ns} - annotations: - aks-project/deployed-by: manual -spec: - replicas: ${config.replicas} - selector: - matchLabels: - app: ${name} - template: - metadata: - labels: - app: ${name} - spec:${affinityYaml}${topologySpreadConstraintsYaml} - containers: - - name: ${name} - image: ${image} - ports: - - containerPort: ${config.targetPort}${probesSection}${resources}${envYaml}${securityContextYaml}`; - - const service = `apiVersion: v1 -kind: Service -metadata: - name: ${name} - namespace: ${ns} -spec: - type: ${config.serviceType} - selector: - app: ${name} - ports: - - port: ${config.servicePort} - targetPort: ${config.targetPort}`; + const securityContext: Record = {}; + if (config.runAsNonRoot) securityContext.runAsNonRoot = true; + if (config.readOnlyRootFilesystem) securityContext.readOnlyRootFilesystem = true; + securityContext.allowPrivilegeEscalation = config.allowPrivilegeEscalation; + container.securityContext = securityContext; + // --- Build pod template labels --- + const podLabels: Record = { app: name }; + if (wiPodConfigEnabled) { + podLabels['azure.workload.identity/use'] = quoted('true'); + } + + // --- Build pod spec --- + const podSpec: Record = {}; + + if (config.enablePodAntiAffinity) { + podSpec.affinity = { + podAntiAffinity: { + preferredDuringSchedulingIgnoredDuringExecution: [ + { + weight: 100, + podAffinityTerm: { + topologyKey: 'kubernetes.io/hostname', + labelSelector: { + matchLabels: { app: name }, + }, + }, + }, + ], + }, + }; + } + + if (config.enableTopologySpreadConstraints) { + podSpec.topologySpreadConstraints = [ + { + maxSkew: 1, + topologyKey: 'kubernetes.io/hostname', + whenUnsatisfiable: 'ScheduleAnyway', + labelSelector: { + matchLabels: { app: name }, + }, + }, + ]; + } + + if (wiPodConfigEnabled) { + podSpec.serviceAccountName = saName; + } + + podSpec.containers = [container]; + + // --- Build Deployment --- + const deployment = { + apiVersion: 'apps/v1', + kind: 'Deployment', + metadata: { + name, + namespace: ns, + annotations: { + 'aks-project/deployed-by': 'manual', + }, + }, + spec: { + replicas: config.replicas, + selector: { + matchLabels: { app: name }, + }, + template: { + metadata: { + labels: podLabels, + }, + spec: podSpec, + }, + }, + }; + + // --- Build Service --- + const service = { + apiVersion: 'v1', + kind: 'Service', + metadata: { + name, + namespace: ns, + }, + spec: { + type: config.serviceType, + selector: { app: name }, + ports: [ + { + port: config.servicePort, + targetPort: config.targetPort, + }, + ], + }, + }; + + // --- Build HPA --- const hpa = config.enableHpa - ? `apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: ${name} - namespace: ${ns} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: ${name} - minReplicas: ${config.hpaMinReplicas ?? 1} - maxReplicas: ${config.hpaMaxReplicas ?? 5} - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: ${config.hpaTargetCpu ?? 70}` - : ''; - - const sections = [`# Deployment\n${deployment}`, `# Service\n${service}`]; - if (hpa) sections.push(`# HPA\n${hpa}`); + ? { + apiVersion: 'autoscaling/v2', + kind: 'HorizontalPodAutoscaler', + metadata: { + name, + namespace: ns, + }, + spec: { + scaleTargetRef: { + apiVersion: 'apps/v1', + kind: 'Deployment', + name, + }, + minReplicas: config.hpaMinReplicas ?? 1, + maxReplicas: config.hpaMaxReplicas ?? 5, + metrics: [ + { + type: 'Resource', + resource: { + name: 'cpu', + target: { + type: 'Utilization', + averageUtilization: config.hpaTargetCpu ?? 70, + }, + }, + }, + ], + }, + } + : null; + + // --- Assemble sections --- + const stringify = (obj: object) => YAML.stringify(obj).trim(); + const sections: string[] = []; + + // Emit a Secret manifest whenever there are any secret env vars, ensuring every + // secretKeyRef in the Deployment has a matching key in the Secret. For edit flows + // where values can't be read back, blank values are emitted as empty strings so the + // Secret still contains the key (avoiding broken references). + if (secretEnvVars.length > 0) { + const secret = { + apiVersion: 'v1', + kind: 'Secret', + metadata: { + name: secretName, + namespace: ns, + }, + type: 'Opaque', + stringData: {} as Record, + }; + const doc = new YAML.Document(secret); + // Replace the stringData node with a YAMLMap that has double-quoted keys and values + const sdMap = new YAML.YAMLMap(); + for (const e of secretEnvVars) { + sdMap.add(new YAML.Pair(quoted(e.key), quoted(e.value))); + } + doc.setIn(['stringData'], sdMap); + sections.push(`# Secret\n${doc.toString().trim()}`); + } + + if (wiFullEnabled) { + const serviceAccount = { + apiVersion: 'v1', + kind: 'ServiceAccount', + metadata: { + name: saName, + namespace: ns, + annotations: { + 'azure.workload.identity/client-id': quoted(config.workloadIdentityClientId), + }, + }, + }; + sections.push(`# ServiceAccount\n${stringify(serviceAccount)}`); + } + + sections.push(`# Deployment\n${stringify(deployment)}`, `# Service\n${stringify(service)}`); + if (hpa) sections.push(`# HPA\n${stringify(hpa)}`); return sections.join('\n---\n'); } diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/GitHubPipelineWizard.tsx b/plugins/aks-desktop/src/components/GitHubPipeline/GitHubPipelineWizard.tsx index e5147ba39..864ec42de 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/GitHubPipelineWizard.tsx +++ b/plugins/aks-desktop/src/components/GitHubPipeline/GitHubPipelineWizard.tsx @@ -5,10 +5,12 @@ import { Icon } from '@iconify/react'; import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; import { Alert, Box, Button, CircularProgress, Typography } from '@mui/material'; import React, { useEffect, useRef } from 'react'; +import { useNamespaceCapabilities } from '../../hooks/useNamespaceCapabilities'; import type { GitHubRepo } from '../../types/github'; import { openExternalUrl } from '../../utils/shared/openExternalUrl'; import type { ContainerConfig } from '../DeployWizard/hooks/useContainerConfiguration'; import { useContainerConfiguration } from '../DeployWizard/hooks/useContainerConfiguration'; +import { type AcrSelection, AcrSelector } from './components/AcrSelector'; import { AgentSetupReview } from './components/AgentSetupReview'; import { ConnectSourceStep } from './components/ConnectSourceStep'; import { ReviewAndMergeStep } from './components/ReviewAndMergeStep'; @@ -125,6 +127,12 @@ export function GitHubPipelineWizard({ }: GitHubPipelineWizardProps) { const { t } = useTranslation(); const localContainerConfig = useContainerConfiguration(appName); + const { isManagedNamespace, azureRbacEnabled } = useNamespaceCapabilities({ + subscriptionId, + resourceGroup, + clusterName, + namespace, + }); useEffect(() => { if (containerConfig) { @@ -231,15 +239,51 @@ export function GitHubPipelineWizard({ case 'CheckingRepo': return ; + case 'AcrSelection': + return ( + { + pipeline.updateConfig({ + acrResourceId: selection?.acrResourceId, + acrLoginServer: selection?.acrLoginServer, + }); + }} + value={ + pipeline.state.config?.acrResourceId && pipeline.state.config?.acrLoginServer + ? { + acrResourceId: pipeline.state.config.acrResourceId, + acrLoginServer: pipeline.state.config.acrLoginServer, + } + : null + } + /> + ); + case 'WorkloadIdentitySetup': { - if (!selectedRepo) return ; + if (!selectedRepo || isManagedNamespace === undefined) + return ( + + ); return ( ); } @@ -343,6 +387,16 @@ export function GitHubPipelineWizard({ ); } + case 'AcrSelection': + return ( + + ); case 'ReadyForSetup': { const needsApp = !pipeline.state.config?.appName.trim() && !localAppName.trim(); const readiness = pipeline.state.repoReadiness; diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/__fixtures__/pipelineConfig.ts b/plugins/aks-desktop/src/components/GitHubPipeline/__fixtures__/pipelineConfig.ts index 28727c920..e31dbaa6e 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/__fixtures__/pipelineConfig.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/__fixtures__/pipelineConfig.ts @@ -34,7 +34,7 @@ export function createContainerConfig(overrides?: Partial): Con cpuLimit: '1', memoryRequest: '256Mi', memoryLimit: '1Gi', - envVars: [{ key: 'NODE_ENV', value: 'production' }], + envVars: [{ key: 'NODE_ENV', value: 'production', isSecret: false }], enableLivenessProbe: true, enableReadinessProbe: true, enableStartupProbe: true, @@ -64,6 +64,9 @@ export function createContainerConfig(overrides?: Partial): Con runAsNonRoot: true, readOnlyRootFilesystem: false, allowPrivilegeEscalation: false, + enableWorkloadIdentity: false, + workloadIdentityClientId: '', + workloadIdentityServiceAccount: '', enablePodAntiAffinity: true, enableTopologySpreadConstraints: true, containerPreviewYaml: '', diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/components/AcrSelector.tsx b/plugins/aks-desktop/src/components/GitHubPipeline/components/AcrSelector.tsx new file mode 100644 index 000000000..fb284a4f9 --- /dev/null +++ b/plugins/aks-desktop/src/components/GitHubPipeline/components/AcrSelector.tsx @@ -0,0 +1,279 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { Icon } from '@iconify/react'; +import { useTranslation } from '@kinvolk/headlamp-plugin/lib'; +import { + Alert, + Box, + Button, + CircularProgress, + FormControl, + InputLabel, + MenuItem, + Select, + TextField, + Typography, +} from '@mui/material'; +import React, { useEffect, useState } from 'react'; +import { + ACR_NAME_ERROR, + ACR_NAME_PATTERN, + createContainerRegistry, +} from '../../../utils/azure/az-acr'; +import { + type AcrInfo, + type AcrSku, + getContainerRegistries, + getResourceGroupLocation, +} from '../../../utils/azure/az-cli'; + +export interface AcrSelection { + acrResourceId: string; + acrLoginServer: string; +} + +interface AcrSelectorProps { + subscriptionId: string; + resourceGroup: string; + onSelect: (selection: AcrSelection | null) => void; + /** Current selection, if any. */ + value: AcrSelection | null; +} + +const CREATE_NEW_VALUE = '__create_new__'; +const SKIP_VALUE = '__skip__'; + +export function AcrSelector({ subscriptionId, resourceGroup, onSelect, value }: AcrSelectorProps) { + const { t } = useTranslation(); + const [registries, setRegistries] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const [selectedValue, setSelectedValue] = useState(value ? value.acrResourceId : ''); + const [mode, setMode] = useState<'selecting' | 'creating' | 'skipped'>('selecting'); + + // Sync selectedValue from props when an actual ACR is selected externally. + // Don't reset to '' when value is null — the user may be in creating/skipped mode. + useEffect(() => { + if (value) { + setSelectedValue(value.acrResourceId); + setMode('selecting'); + } + }, [value]); + + // Create form state + const [newRegistryName, setNewRegistryName] = useState(''); + const [newRegistrySku, setNewRegistrySku] = useState('Basic'); + const [creating, setCreating] = useState(false); + const [createError, setCreateError] = useState(null); + + useEffect(() => { + let cancelled = false; + const load = async () => { + setLoading(true); + setError(null); + try { + const result = await getContainerRegistries(subscriptionId); + if (!cancelled) setRegistries(result); + } catch (err) { + console.error('Failed to load container registries:', err); + if (!cancelled) + setError(err instanceof Error ? err.message : 'Failed to load container registries'); + } finally { + if (!cancelled) setLoading(false); + } + }; + load(); + return () => { + cancelled = true; + }; + }, [subscriptionId]); + + const handleSelectChange = (newValue: string) => { + setSelectedValue(newValue); + + if (newValue === CREATE_NEW_VALUE) { + setMode('creating'); + onSelect(null); + } else if (newValue === SKIP_VALUE) { + setMode('skipped'); + onSelect(null); + } else { + setMode('selecting'); + const registry = registries.find(r => r.id === newValue); + if (registry) { + onSelect({ acrResourceId: registry.id, acrLoginServer: registry.loginServer }); + } else { + console.warn(`Selected registry ${newValue} not found in loaded registries`); + onSelect(null); + } + } + }; + + const handleCreateRegistry = async () => { + const trimmed = newRegistryName.trim(); + if (!trimmed) return; + + if (!ACR_NAME_PATTERN.test(trimmed)) { + setCreateError(t(ACR_NAME_ERROR)); + return; + } + + setCreating(true); + setCreateError(null); + + try { + const location = await getResourceGroupLocation({ + resourceGroupName: resourceGroup, + subscriptionId, + }); + + const result = await createContainerRegistry({ + registryName: trimmed, + resourceGroup, + subscriptionId, + location, + sku: newRegistrySku, + }); + + if (!result.success || !result.id || !result.loginServer) { + throw new Error(result.error ?? t('Failed to create container registry')); + } + + const newAcr: AcrInfo = { + id: result.id, + name: trimmed, + resourceGroup, + loginServer: result.loginServer, + location, + sku: newRegistrySku, + }; + + setRegistries(prev => [...prev, newAcr]); + setSelectedValue(result.id); + setMode('selecting'); + onSelect({ acrResourceId: result.id, acrLoginServer: result.loginServer }); + } catch (err) { + console.error('Failed to create container registry:', err); + setCreateError(err instanceof Error ? err.message : t('Failed to create container registry')); + } finally { + setCreating(false); + } + }; + + return ( + + + + + {t('Container Registry')} + + + + + {t( + 'Select an Azure Container Registry for building and pushing container images, or create a new one.' + )} + + + {loading ? ( + + + + {t('Loading container registries...')} + + + ) : error ? ( + + {error} + + ) : ( + <> + + {t('Container Registry')} + + + + {mode === 'skipped' && ( + + {t( + 'Without a container registry, the pipeline cannot build and push container images. You will need to configure a registry manually.' + )} + + )} + + {mode === 'creating' && ( + + setNewRegistryName(e.target.value)} + fullWidth + helperText={t('Globally unique name. 5-50 alphanumeric characters.')} + sx={{ mb: 2 }} + /> + + + {t('SKU')} + + + + {createError && ( + + {createError} + + )} + + + + )} + + )} + + ); +} diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.test.tsx b/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.test.tsx index 3caff1471..771d0c0c0 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.test.tsx +++ b/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.test.tsx @@ -36,6 +36,7 @@ function makeIdentitySetup( const defaultProps = { subscriptionId: '12345678-1234-1234-1234-123456789abc', resourceGroup: 'cluster-rg', + clusterName: 'my-cluster', repo: mockRepo, projectName: 'my-project', }; diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.tsx b/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.tsx index d66734388..691194b2c 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.tsx +++ b/plugins/aks-desktop/src/components/GitHubPipeline/components/WorkloadIdentitySetup.tsx @@ -17,16 +17,25 @@ import { StepStatusIcon } from './StepStatusIcon'; interface WorkloadIdentitySetupProps { subscriptionId: string; resourceGroup: string; + clusterName: string; repo: GitHubRepo; identitySetup: UseWorkloadIdentitySetupReturn; projectName: string; + /** Full Azure resource ID of the ACR. Omit to skip ACR roles. */ + acrResourceId?: string; + /** Whether the target namespace is a managed namespace. */ + isManagedNamespace?: boolean; + /** Name of the managed namespace (required if isManagedNamespace is true). */ + namespaceName?: string; + /** Whether Azure RBAC for Kubernetes is enabled on the cluster. */ + azureRbacEnabled?: boolean; } const STATUS_ORDER = [ 'creating-rg', 'checking', 'creating-identity', - 'assigning-role', + 'assigning-roles', 'creating-credential', 'done', ] as const; @@ -36,7 +45,7 @@ function getStatusSteps(t: (key: string) => string) { { key: 'creating-rg', label: t('Ensuring resource group exists...') }, { key: 'checking', label: t('Checking for existing identity...') }, { key: 'creating-identity', label: t('Creating managed identity...') }, - { key: 'assigning-role', label: t('Assigning AKS Cluster User Role...') }, + { key: 'assigning-roles', label: t('Assigning required Azure RBAC roles...') }, { key: 'creating-credential', label: t('Configuring federated credential...') }, { key: 'done', label: t('Workload identity configured') }, ] as const; @@ -56,9 +65,14 @@ function getStepStatus(step: string, currentStatus: string, lastActiveStatus: st export function WorkloadIdentitySetup({ subscriptionId, resourceGroup, + clusterName, repo, identitySetup, projectName, + acrResourceId, + isManagedNamespace, + namespaceName, + azureRbacEnabled, }: WorkloadIdentitySetupProps) { const { status, error, setupWorkloadIdentity } = identitySetup; const { t } = useTranslation(); @@ -84,7 +98,12 @@ export function WorkloadIdentitySetup({ resourceGroup, identityResourceGroup: identityRG.trim(), projectName, + clusterName, repo, + acrResourceId, + isManagedNamespace, + namespaceName, + azureRbacEnabled, }; setupWorkloadIdentity(config); }; @@ -128,10 +147,12 @@ export function WorkloadIdentitySetup({ /> - {t('Role Assignment')} + {t('Role Assignments')} - {t('"AKS Cluster User Role" scoped to the resource group')} + {t( + 'Required Azure RBAC roles for cluster access, deployment, and container registry' + )} diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useDeploymentHealth.ts b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useDeploymentHealth.ts index 617f098d4..1036ff889 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useDeploymentHealth.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useDeploymentHealth.ts @@ -3,11 +3,7 @@ import { K8s, useTranslation } from '@kinvolk/headlamp-plugin/lib'; import { useEffect, useState } from 'react'; - -/** Sanitizes a value for use in a Kubernetes label selector. */ -function sanitizeLabelValue(value: string): string { - return value.replace(/[^a-zA-Z0-9._-]/g, '').slice(0, 63); -} +import { sanitizeLabelValue } from '../../../utils/kubernetes/k8sNames'; /** Minimal shape of a K8s Pod resource as accessed by this hook. */ interface PodResource { diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.test.ts b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.test.ts index a4e76974f..8bab40e5e 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.test.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.test.ts @@ -47,22 +47,7 @@ function transitionTo( return; } - if (target === 'WorkloadIdentitySetup') { - // Need config without identity to trigger WorkloadIdentitySetup - act(() => result.current.setAppInstallNeeded()); - act(() => result.current.updateConfig({ identityId: '' })); - act(() => result.current.setCheckingRepo()); - act(() => - result.current.setRepoReadiness({ - hasSetupWorkflow: false, - hasAgentConfig: false, - hasDeployWorkflow: false, - }) - ); - return; - } - - // ReadyForSetup (files missing, config has identity) + // setRepoReadiness now always routes to AcrSelection first act(() => result.current.setRepoReadiness({ hasSetupWorkflow: false, @@ -70,6 +55,17 @@ function transitionTo( hasDeployWorkflow: false, }) ); + if (target === 'AcrSelection') return; + + if (target === 'WorkloadIdentitySetup') { + // Need config without identity to trigger WorkloadIdentitySetup + act(() => result.current.updateConfig({ identityId: '' })); + act(() => result.current.setAcrCompleted()); + return; + } + + // ReadyForSetup (config has identity, ACR step completed) + act(() => result.current.setAcrCompleted()); if (target === 'ReadyForSetup') return; act(() => result.current.setCreatingSetupPR()); @@ -204,7 +200,7 @@ describe('useGitHubPipelineState', () => { }); describe('setRepoReadiness', () => { - it('should transition to WorkloadIdentitySetup when files are missing and no identity', () => { + it('should transition to AcrSelection when files are missing and no identity', () => { const { result } = renderHook(() => useGitHubPipelineState(null)); // Set config without identity @@ -219,10 +215,27 @@ describe('useGitHubPipelineState', () => { }); }); + expect(result.current.state.deploymentState).toBe('AcrSelection'); + }); + + it('should transition from AcrSelection to WorkloadIdentitySetup when no identity', () => { + const { result } = renderHook(() => useGitHubPipelineState(null)); + + act(() => result.current.setConfig({ ...validConfig, identityId: '' })); + act(() => result.current.setCheckingRepo()); + act(() => { + result.current.setRepoReadiness({ + hasSetupWorkflow: false, + hasAgentConfig: false, + hasDeployWorkflow: false, + }); + }); + act(() => result.current.setAcrCompleted()); + expect(result.current.state.deploymentState).toBe('WorkloadIdentitySetup'); }); - it('should transition to ReadyForSetup when files are missing and identity exists', () => { + it('should transition to AcrSelection when files are missing and identity exists', () => { const { result } = renderHook(() => useGitHubPipelineState(null)); act(() => result.current.setConfig(validConfig)); @@ -236,6 +249,23 @@ describe('useGitHubPipelineState', () => { }); }); + expect(result.current.state.deploymentState).toBe('AcrSelection'); + }); + + it('should transition from AcrSelection to ReadyForSetup when identity exists', () => { + const { result } = renderHook(() => useGitHubPipelineState(null)); + + act(() => result.current.setConfig(validConfig)); + act(() => result.current.setCheckingRepo()); + act(() => { + result.current.setRepoReadiness({ + hasSetupWorkflow: false, + hasAgentConfig: false, + hasDeployWorkflow: false, + }); + }); + act(() => result.current.setAcrCompleted()); + expect(result.current.state.deploymentState).toBe('ReadyForSetup'); }); @@ -259,7 +289,7 @@ describe('useGitHubPipelineState', () => { expect(result.current.state.deploymentState).toBe('AgentTaskCreating'); }); - it('should transition to WorkloadIdentitySetup when repo is set up but identity is missing', () => { + it('should transition to AcrSelection when repo is set up but identity is missing', () => { const { result } = renderHook(() => useGitHubPipelineState(null)); act(() => { result.current.setConfig({ ...validConfig, identityId: '', appName: '' }); @@ -275,10 +305,10 @@ describe('useGitHubPipelineState', () => { }); }); - expect(result.current.state.deploymentState).toBe('WorkloadIdentitySetup'); + expect(result.current.state.deploymentState).toBe('AcrSelection'); }); - it('should transition to ReadyForSetup when repo is set up but appName is missing', () => { + it('should transition to AcrSelection when repo is set up but appName is missing', () => { const { result } = renderHook(() => useGitHubPipelineState(null)); act(() => { @@ -295,7 +325,7 @@ describe('useGitHubPipelineState', () => { }); }); - expect(result.current.state.deploymentState).toBe('ReadyForSetup'); + expect(result.current.state.deploymentState).toBe('AcrSelection'); }); }); @@ -427,10 +457,9 @@ describe('useGitHubPipelineState', () => { expect(result.current.state.deploymentState).toBe('AgentTaskCreating'); }); - it('should retry to WorkloadIdentitySetup when failed during identity setup', () => { + it('should retry to AcrSelection when failed during ACR selection', () => { const { result } = renderHook(() => useGitHubPipelineState(null)); - // Config without identity to trigger WorkloadIdentitySetup act(() => result.current.setConfig({ ...validConfig, identityId: '' })); act(() => result.current.setCheckingRepo()); act(() => @@ -440,22 +469,20 @@ describe('useGitHubPipelineState', () => { hasDeployWorkflow: false, }) ); - // Without identity, this lands on WorkloadIdentitySetup (transient). - // Retry maps transient states to their parent (Configured). - expect(result.current.state.deploymentState).toBe('WorkloadIdentitySetup'); + expect(result.current.state.deploymentState).toBe('AcrSelection'); act(() => { result.current.setFailed('Error'); }); act(() => { result.current.retry(); }); - expect(result.current.state.deploymentState).toBe('Configured'); + expect(result.current.state.deploymentState).toBe('AcrSelection'); }); it('should retry to ReadyForSetup when repo is already configured but appName missing', () => { const { result } = renderHook(() => useGitHubPipelineState(null)); - // Config with identity but no appName + // Config with identity but no appName — go through ACR step act(() => result.current.setConfig({ ...validConfig, appName: '' })); act(() => result.current.setCheckingRepo()); act(() => @@ -465,6 +492,7 @@ describe('useGitHubPipelineState', () => { hasDeployWorkflow: false, }) ); + act(() => result.current.setAcrCompleted()); // With identity but no appName, this lands on ReadyForSetup. expect(result.current.state.deploymentState).toBe('ReadyForSetup'); act(() => { diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.ts b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.ts index 58ed87450..1159391c7 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useGitHubPipelineState.ts @@ -126,6 +126,7 @@ type PipelineAction = | { type: 'SET_APP_INSTALL_NEEDED' } | { type: 'SET_CHECKING_REPO' } | { type: 'SET_REPO_READINESS'; readiness: RepoReadiness } + | { type: 'SET_ACR_COMPLETED' } | { type: 'SET_IDENTITY_SETUP' } | { type: 'SET_IDENTITY_READY' } | { type: 'SET_CREATING_SETUP_PR' } @@ -151,6 +152,7 @@ const VALID_TRANSITIONS: Record< SET_APP_INSTALL_NEEDED: new Set(['CheckingRepo', 'AppInstallationNeeded']), SET_CHECKING_REPO: new Set(['Configured', 'AppInstallationNeeded']), SET_REPO_READINESS: new Set(['CheckingRepo', 'AppInstallationNeeded']), + SET_ACR_COMPLETED: new Set(['AcrSelection']), SET_IDENTITY_SETUP: new Set(['CheckingRepo', 'ReadyForSetup']), SET_IDENTITY_READY: new Set(['WorkloadIdentitySetup']), SET_CREATING_SETUP_PR: new Set(['ReadyForSetup']), @@ -250,11 +252,22 @@ function pipelineReducer(state: PipelineState, action: PipelineAction): Pipeline }; break; } + // Route to ACR selection before identity setup + next = { + ...state, + deploymentState: 'AcrSelection', + repoReadiness: readiness, + updatedAt: now(), + }; + break; + } + + case 'SET_ACR_COMPLETED': { + const hasIdentity = Boolean(state.config?.identityId?.trim()); if (!hasIdentity) { next = { ...state, deploymentState: 'WorkloadIdentitySetup', - repoReadiness: readiness, updatedAt: now(), }; break; @@ -262,7 +275,6 @@ function pipelineReducer(state: PipelineState, action: PipelineAction): Pipeline next = { ...state, deploymentState: 'ReadyForSetup', - repoReadiness: readiness, updatedAt: now(), }; break; @@ -377,6 +389,7 @@ export interface UseGitHubPipelineStateResult { setAppInstallNeeded: () => void; setCheckingRepo: () => void; setRepoReadiness: (readiness: RepoReadiness) => void; + setAcrCompleted: () => void; setIdentitySetup: () => void; setIdentityReady: () => void; setCreatingSetupPR: () => void; @@ -455,6 +468,7 @@ export const useGitHubPipelineState = (repoKey: string | null): UseGitHubPipelin setCheckingRepo: () => dispatch({ type: 'SET_CHECKING_REPO' }), setRepoReadiness: (readiness: RepoReadiness) => dispatch({ type: 'SET_REPO_READINESS', readiness }), + setAcrCompleted: () => dispatch({ type: 'SET_ACR_COMPLETED' }), setIdentitySetup: () => dispatch({ type: 'SET_IDENTITY_SETUP' }), setIdentityReady: () => dispatch({ type: 'SET_IDENTITY_READY' }), setCreatingSetupPR: () => dispatch({ type: 'SET_CREATING_SETUP_PR' }), diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.test.ts b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.test.ts index d7f524e00..f646a543f 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.test.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.test.ts @@ -11,19 +11,43 @@ const mockGetResourceGroupLocation = vi.fn(); const mockCreateResourceGroup = vi.fn(); const mockGetManagedIdentity = vi.fn(); const mockCreateManagedIdentity = vi.fn(); -const mockAssignRoleToIdentity = vi.fn(); +const mockAssignRolesToIdentity = vi.fn(); const mockCreateFederatedCredential = vi.fn(); vi.mock('../../../utils/azure/az-cli', () => ({ resourceGroupExists: (...args: any[]) => mockResourceGroupExists(...args), getResourceGroupLocation: (...args: any[]) => mockGetResourceGroupLocation(...args), createResourceGroup: (...args: any[]) => mockCreateResourceGroup(...args), +})); + +vi.mock('../../../utils/azure/az-identity', () => ({ getManagedIdentity: (...args: any[]) => mockGetManagedIdentity(...args), createManagedIdentity: (...args: any[]) => mockCreateManagedIdentity(...args), - assignRoleToIdentity: (...args: any[]) => mockAssignRoleToIdentity(...args), + assignRolesToIdentity: (...args: any[]) => mockAssignRolesToIdentity(...args), + getManagedNamespaceResourceId: vi.fn(), + buildClusterScope: (sub: string, rg: string, cluster: string) => + `/subscriptions/${sub}/resourceGroups/${rg}/providers/Microsoft.ContainerService/managedClusters/${cluster}`, +})); + +vi.mock('../../../utils/azure/az-federation', () => ({ createFederatedCredential: (...args: any[]) => mockCreateFederatedCredential(...args), })); +vi.mock('../../../utils/azure/identitySetup', async () => { + const actual = await vi.importActual('../../../utils/azure/identitySetup'); + return actual; +}); + +vi.mock('../../../utils/azure/identityRoles', async () => { + const actual = await vi.importActual('../../../utils/azure/identityRoles'); + return actual; +}); + +vi.mock('../../../utils/azure/identityWithRoles', async () => { + const actual = await vi.importActual('../../../utils/azure/identityWithRoles'); + return actual; +}); + import type { WorkloadIdentitySetupConfig } from './useWorkloadIdentitySetup'; import { getIdentityName, useWorkloadIdentitySetup } from './useWorkloadIdentitySetup'; @@ -32,7 +56,9 @@ const baseConfig: WorkloadIdentitySetupConfig = { resourceGroup: 'cluster-rg', identityResourceGroup: 'rg-my-project', projectName: 'my-project', + clusterName: 'my-cluster', repo: { owner: 'testuser', repo: 'my-repo', defaultBranch: 'main' }, + isManagedNamespace: false, }; describe('getIdentityName', () => { @@ -41,7 +67,7 @@ describe('getIdentityName', () => { }); it('handles empty string', () => { - expect(getIdentityName('')).toBe('id--github'); + expect(getIdentityName('')).toBe('id-github'); }); }); @@ -66,7 +92,7 @@ describe('useWorkloadIdentitySetup', () => { principalId: 'pid', tenantId: 'tid', }); - mockAssignRoleToIdentity.mockResolvedValue({ success: true }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); mockCreateFederatedCredential.mockResolvedValue({ success: true }); const { result } = renderHook(() => useWorkloadIdentitySetup()); @@ -94,7 +120,7 @@ describe('useWorkloadIdentitySetup', () => { principalId: 'pid', tenantId: 'tid', }); - mockAssignRoleToIdentity.mockResolvedValue({ success: true }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); mockCreateFederatedCredential.mockResolvedValue({ success: true }); const { result } = renderHook(() => useWorkloadIdentitySetup()); @@ -127,7 +153,7 @@ describe('useWorkloadIdentitySetup', () => { principalId: 'pid', tenantId: 'tid', }); - mockAssignRoleToIdentity.mockResolvedValue({ success: true }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); mockCreateFederatedCredential.mockResolvedValue({ success: true }); const { result } = renderHook(() => useWorkloadIdentitySetup()); @@ -144,9 +170,9 @@ describe('useWorkloadIdentitySetup', () => { expect(mockCreateManagedIdentity).toHaveBeenCalledWith( expect.objectContaining({ resourceGroup: 'rg-my-project' }) ); - // Role assignment uses the cluster resourceGroup - expect(mockAssignRoleToIdentity).toHaveBeenCalledWith( - expect.objectContaining({ resourceGroup: 'cluster-rg' }) + // Role assignment is called with the principalId + expect(mockAssignRolesToIdentity).toHaveBeenCalledWith( + expect.objectContaining({ principalId: 'pid' }) ); // Federated credential uses identityResourceGroup expect(mockCreateFederatedCredential).toHaveBeenCalledWith( @@ -196,7 +222,7 @@ describe('useWorkloadIdentitySetup', () => { principalId: 'existing-pid', tenantId: 'existing-tid', }); - mockAssignRoleToIdentity.mockResolvedValue({ success: true }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); mockCreateFederatedCredential.mockResolvedValue({ success: true }); const { result } = renderHook(() => useWorkloadIdentitySetup()); @@ -241,9 +267,9 @@ describe('useWorkloadIdentitySetup', () => { principalId: 'pid', tenantId: 'tid', }); - mockAssignRoleToIdentity.mockResolvedValue({ + mockAssignRolesToIdentity.mockResolvedValue({ success: false, - error: 'Forbidden', + results: [{ role: 'AKS Cluster User', scope: '/sub', success: false, error: 'Forbidden' }], }); const { result } = renderHook(() => useWorkloadIdentitySetup()); @@ -264,7 +290,7 @@ describe('useWorkloadIdentitySetup', () => { principalId: 'pid', tenantId: 'tid', }); - mockAssignRoleToIdentity.mockResolvedValue({ success: true }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); mockCreateFederatedCredential.mockResolvedValue({ success: false, error: 'Credential already exists', diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.ts b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.ts index a15fbf881..de3568c03 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/hooks/useWorkloadIdentitySetup.ts @@ -2,22 +2,16 @@ // Licensed under the Apache 2.0. import { useCallback, useState } from 'react'; -import { - assignRoleToIdentity, - createFederatedCredential, - createManagedIdentity, - createResourceGroup, - getManagedIdentity, - getResourceGroupLocation, - resourceGroupExists, -} from '../../../utils/azure/az-cli'; +import { createFederatedCredential } from '../../../utils/azure/az-federation'; +import { ensureIdentityWithRoles } from '../../../utils/azure/identityWithRoles'; +import { sanitizeDnsName } from '../../../utils/kubernetes/k8sNames'; export type WorkloadIdentitySetupStatus = | 'idle' | 'creating-rg' | 'checking' | 'creating-identity' - | 'assigning-role' + | 'assigning-roles' | 'creating-credential' | 'done' | 'error'; @@ -42,11 +36,20 @@ export interface WorkloadIdentitySetupConfig { resourceGroup: string; identityResourceGroup: string; projectName: string; + clusterName: string; repo: { owner: string; repo: string; defaultBranch: string }; + /** Full Azure resource ID of the ACR. Omit to skip ACR roles. */ + acrResourceId?: string; + /** Whether the target namespace is a managed namespace. Must be resolved before calling. */ + isManagedNamespace: boolean; + /** Name of the managed namespace (required if isManagedNamespace is true). */ + namespaceName?: string; + /** Whether Azure RBAC for Kubernetes is enabled on the cluster. */ + azureRbacEnabled?: boolean; } export function getIdentityName(projectName: string): string { - return `id-${projectName}-github`; + return sanitizeDnsName(`id-${projectName}-github`, 128, 'id-app-github'); } export const useWorkloadIdentitySetup = (): UseWorkloadIdentitySetupReturn => { @@ -55,86 +58,37 @@ export const useWorkloadIdentitySetup = (): UseWorkloadIdentitySetupReturn => { const [result, setResult] = useState(null); const setupWorkloadIdentity = useCallback(async (config: WorkloadIdentitySetupConfig) => { - const { subscriptionId, resourceGroup, identityResourceGroup, projectName, repo } = config; + const { + subscriptionId, + resourceGroup, + identityResourceGroup, + projectName, + clusterName, + repo, + acrResourceId, + isManagedNamespace, + namespaceName, + azureRbacEnabled, + } = config; const identityName = getIdentityName(projectName); setError(null); setResult(null); try { - // Step 1: Ensure identity resource group exists - setStatus('creating-rg'); - const rgCheck = await resourceGroupExists({ - resourceGroupName: identityResourceGroup, - subscriptionId, - }); - - if (rgCheck.error) { - throw new Error(rgCheck.error); - } - - if (!rgCheck.exists) { - const location = await getResourceGroupLocation({ - resourceGroupName: resourceGroup, - subscriptionId, - }); - const rgResult = await createResourceGroup({ - resourceGroupName: identityResourceGroup, - location, - subscriptionId, - }); - if (!rgResult.success) { - throw new Error(rgResult.error ?? 'Failed to create identity resource group'); - } - } - - // Step 2: Check if identity already exists - setStatus('checking'); - const existing = await getManagedIdentity({ - identityName, - resourceGroup: identityResourceGroup, - subscriptionId, - }); - - let clientId: string; - let principalId: string; - let tenantId: string; - let isExisting = false; - - if (existing.success && existing.clientId && existing.principalId && existing.tenantId) { - clientId = existing.clientId; - principalId = existing.principalId; - tenantId = existing.tenantId; - isExisting = true; - } else if (!existing.success && !existing.notFound) { - // Real error (network, permissions, etc.) — don't silently create a new identity - throw new Error(existing.error ?? 'Failed to check for existing managed identity'); - } else { - // Step 3: Create the identity - setStatus('creating-identity'); - const created = await createManagedIdentity({ - identityName, - resourceGroup: identityResourceGroup, - subscriptionId, - }); - if (!created.success || !created.clientId || !created.principalId || !created.tenantId) { - throw new Error(created.error ?? 'Failed to create managed identity'); - } - clientId = created.clientId; - principalId = created.principalId; - tenantId = created.tenantId; - } - - // Step 4: Assign AKS Cluster User Role - setStatus('assigning-role'); - const roleResult = await assignRoleToIdentity({ - principalId, + // Steps 1-4: Ensure RG + identity + roles via shared utility + const identity = await ensureIdentityWithRoles({ subscriptionId, resourceGroup, + identityResourceGroup, + identityName, + clusterName, + acrResourceId, + isManagedNamespace, + namespaceName, + azureRbacEnabled, + onStatusChange: setStatus, }); - if (!roleResult.success) { - throw new Error(roleResult.error ?? 'Failed to assign role'); - } // Step 5: Create federated credential setStatus('creating-credential'); @@ -151,15 +105,16 @@ export const useWorkloadIdentitySetup = (): UseWorkloadIdentitySetupReturn => { } const setupResult: WorkloadIdentitySetupResult = { - clientId, - tenantId, - principalId, + clientId: identity.clientId, + tenantId: identity.tenantId, + principalId: identity.principalId, identityName, - isExisting, + isExisting: identity.isExisting, }; setResult(setupResult); setStatus('done'); } catch (err) { + console.error('[WorkloadIdentitySetup] Setup failed:', err); setError(err instanceof Error ? err.message : 'Unknown error during identity setup'); setStatus('error'); } diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/types.ts b/plugins/aks-desktop/src/components/GitHubPipeline/types.ts index 6082087a4..e1717fe04 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/types.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/types.ts @@ -14,6 +14,7 @@ export const DEPLOYMENT_STATES = [ 'GitHubAuthorizationNeeded', 'AppInstallationNeeded', 'CheckingRepo', // (*) + 'AcrSelection', 'WorkloadIdentitySetup', // (*) 'ReadyForSetup', // (*) 'SetupPRCreating', @@ -62,6 +63,10 @@ export interface PipelineConfig { port?: number; containerConfig?: ContainerConfig; repo: GitHubRepo; + /** Full Azure resource ID of the selected ACR. */ + acrResourceId?: string; + /** Login server of the selected ACR (e.g., "myregistry.azurecr.io"). */ + acrLoginServer?: string; } export interface PRTracking { diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.test.ts b/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.test.ts index be1f99c60..6787d4383 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.test.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.test.ts @@ -112,8 +112,8 @@ describe('agentTemplates', () => { useCustomServicePort: true, enableStartupProbe: false, envVars: [ - { key: 'NODE_ENV', value: 'production' }, - { key: '', value: '' }, + { key: 'NODE_ENV', value: 'production', isSecret: false }, + { key: '', value: '', isSecret: false }, ], }); const config: PipelineConfig = { ...validConfig, containerConfig: cc }; diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.ts b/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.ts index c9c23fc9b..1b1cbc768 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/utils/agentTemplates.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the Apache 2.0. +import { getServiceAccountName } from '../../../utils/kubernetes/serviceAccountNames'; import { CONTAINERIZATION_MCP_VERSION, DEFAULT_IMAGE_TAG, @@ -60,6 +61,29 @@ jobs: * Generates workflow instructions for injecting user-defined environment * variables from GitHub secrets into Kubernetes. */ +const generateWorkloadIdentityWorkflowInstructions = (config: PipelineConfig): string => { + const cc = config.containerConfig; + if (!cc?.enableWorkloadIdentity || !cc.workloadIdentityClientId) return ''; + + const saName = cc.workloadIdentityServiceAccount || getServiceAccountName(config.appName); + + return ` +- Before applying manifests, create a Kubernetes ServiceAccount for workload identity: + \`\`\`bash + kubectl apply -f - < { const envVars = getActiveEnvVars(config); if (envVars.length === 0) return '\n'; @@ -141,6 +165,12 @@ export const generateAgentConfig = (config: PipelineConfig): string => { if (cc.enablePodAntiAffinity) optionalLines.push(`- Pod Anti-Affinity: enabled`); if (cc.enableTopologySpreadConstraints) optionalLines.push(`- Topology Spread Constraints: enabled`); + if (cc.enableWorkloadIdentity && cc.workloadIdentityClientId) { + const saName = cc.workloadIdentityServiceAccount || getServiceAccountName(config.appName); + optionalLines.push( + `- Workload Identity: enabled (service account: ${saName}, client ID: ${cc.workloadIdentityClientId})` + ); + } } const optionalSection = optionalLines.length > 0 ? '\n' + optionalLines.join('\n') : ''; @@ -245,7 +275,11 @@ All generated deployment files must be placed under \`/deploy/\`: - Resource Group: ${config.resourceGroup} - Namespace: ${config.namespace} - Service Type: ${config.serviceType} -- Azure credentials are stored as GitHub repository secrets: \`AZURE_CLIENT_ID\`, \`AZURE_TENANT_ID\`, \`AZURE_SUBSCRIPTION_ID\`${optionalSection} +- Azure credentials are stored as GitHub repository secrets: \`AZURE_CLIENT_ID\`, \`AZURE_TENANT_ID\`, \`AZURE_SUBSCRIPTION_ID\`${ + config.acrLoginServer + ? `\n- Container Registry: \`${config.acrLoginServer}\` (ACR name stored as secret \`AZURE_ACR_NAME\`)` + : '' + }${optionalSection} ## Deployment Annotations (mandatory) All generated Deployment manifests MUST include these annotations in \`metadata.annotations\`: @@ -272,7 +306,11 @@ Generate \`.github/workflows/${PIPELINE_WORKFLOW_FILENAME}\` with the following: - Use \`azure/login@v2\` with OIDC (\`secrets.AZURE_CLIENT_ID\`, \`secrets.AZURE_TENANT_ID\`, \`secrets.AZURE_SUBSCRIPTION_ID\`) - Use \`azure/aks-set-context@v4\` with cluster \`\${{ inputs.cluster-name }}\` and resource group \`\${{ inputs.resource-group }}\` - Install kubelogin (required for AAD-enabled AKS clusters): \`azure/use-kubelogin@v1\` with \`skip-cache: true\` -- Convert kubeconfig to use kubelogin: \`kubelogin convert-kubeconfig -l workloadidentity\`${generateEnvVarWorkflowInstructions( +- Convert kubeconfig to use kubelogin: \`kubelogin convert-kubeconfig -l workloadidentity\`${ + config.acrLoginServer + ? `\n- Build and push the container image using ACR Tasks: \`az acr build --registry \${{ secrets.AZURE_ACR_NAME }} --image ${config.appName}:\${{ github.sha }} .\`\n- Update the container image reference in manifests to use \`${config.acrLoginServer}/${config.appName}:\${{ github.sha }}\`` + : '' + }${generateEnvVarWorkflowInstructions(config)}${generateWorkloadIdentityWorkflowInstructions( config )}- Run: \`kubectl apply -f deploy/kubernetes/ -n \${{ inputs.namespace }}\` - After applying manifests, annotate each Deployment with the run URL and workflow name: diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/utils/getWizardStep.ts b/plugins/aks-desktop/src/components/GitHubPipeline/utils/getWizardStep.ts index de6260744..15b0dc51f 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/utils/getWizardStep.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/utils/getWizardStep.ts @@ -16,6 +16,7 @@ export function getWizardStep(state: PipelineDeploymentState): 0 | 1 | 2 { case 'AppInstallationNeeded': return 0; case 'CheckingRepo': + case 'AcrSelection': case 'WorkloadIdentitySetup': case 'ReadyForSetup': return 1; diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.test.ts b/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.test.ts index df0aa3759..f42e8bd16 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.test.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.test.ts @@ -349,8 +349,8 @@ describe('pipelineOrchestration', () => { const cc = createContainerConfig({ envVars: [ - { key: 'NODE_ENV', value: 'production' }, - { key: 'API_KEY', value: 'secret-key' }, + { key: 'NODE_ENV', value: 'production', isSecret: false }, + { key: 'API_KEY', value: 'secret-key', isSecret: false }, ], }); const config: PipelineConfig = { ...validConfig, containerConfig: cc }; @@ -367,9 +367,9 @@ describe('pipelineOrchestration', () => { const cc = createContainerConfig({ envVars: [ - { key: '', value: 'should-be-skipped' }, - { key: ' ', value: 'also-skipped' }, - { key: 'VALID', value: 'included' }, + { key: '', value: 'should-be-skipped', isSecret: false }, + { key: ' ', value: 'also-skipped', isSecret: false }, + { key: 'VALID', value: 'included', isSecret: false }, ], }); const config: PipelineConfig = { ...validConfig, containerConfig: cc }; @@ -386,5 +386,62 @@ describe('pipelineOrchestration', () => { await expect(createPipelineSecrets(mockOctokit, validConfig)).rejects.toThrow('API failure'); }); + + describe('ACR name derivation', () => { + it('should derive AZURE_ACR_NAME from acrLoginServer', async () => { + mockSetRepoSecrets.mockResolvedValue(undefined); + + const config: PipelineConfig = { ...validConfig, acrLoginServer: 'myregistry.azurecr.io' }; + await createPipelineSecrets(mockOctokit, config); + + const secrets = mockSetRepoSecrets.mock.calls[0][3] as Record; + expect(secrets.AZURE_ACR_NAME).toBe('myregistry'); + }); + + it('should derive AZURE_ACR_NAME from acrResourceId', async () => { + mockSetRepoSecrets.mockResolvedValue(undefined); + + const config: PipelineConfig = { + ...validConfig, + acrResourceId: + '/subscriptions/sub-123/resourceGroups/my-rg/providers/Microsoft.ContainerRegistry/registries/myacr', + }; + await createPipelineSecrets(mockOctokit, config); + + const secrets = mockSetRepoSecrets.mock.calls[0][3] as Record; + expect(secrets.AZURE_ACR_NAME).toBe('myacr'); + }); + + it('should throw when acrLoginServer produces empty first segment', async () => { + const config: PipelineConfig = { ...validConfig, acrLoginServer: '.azurecr.io' }; + + await expect(createPipelineSecrets(mockOctokit, config)).rejects.toThrow( + 'Could not derive ACR name from login server' + ); + expect(mockSetRepoSecrets).not.toHaveBeenCalled(); + }); + + it('should throw when acrResourceId has no registries segment', async () => { + const config: PipelineConfig = { + ...validConfig, + acrResourceId: + '/subscriptions/sub-123/resourceGroups/my-rg/providers/Microsoft.ContainerRegistry', + }; + + await expect(createPipelineSecrets(mockOctokit, config)).rejects.toThrow( + 'Could not derive ACR name from resource ID' + ); + expect(mockSetRepoSecrets).not.toHaveBeenCalled(); + }); + + it('should not set AZURE_ACR_NAME when neither ACR field is provided', async () => { + mockSetRepoSecrets.mockResolvedValue(undefined); + + await createPipelineSecrets(mockOctokit, validConfig); + + const secrets = mockSetRepoSecrets.mock.calls[0][3] as Record; + expect(Object.keys(secrets)).not.toContain('AZURE_ACR_NAME'); + }); + }); }); }); diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.ts b/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.ts index 755178dbc..9cc08d21f 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineOrchestration.ts @@ -143,6 +143,33 @@ export const createPipelineSecrets = async ( AZURE_SUBSCRIPTION_ID: config.subscriptionId, }; + if (config.acrLoginServer) { + // Prefer deriving from login server (e.g., "myregistry.azurecr.io" → "myregistry") + const acrName = config.acrLoginServer.split('.')[0]; + if (acrName) { + secrets.AZURE_ACR_NAME = acrName; + } else { + throw new Error( + `Could not derive ACR name from login server: "${config.acrLoginServer}". Expected format: .azurecr.io` + ); + } + } else if (config.acrResourceId) { + // Parse ACR name from resource ID by locating the segment after "registries" + const segments = config.acrResourceId.split('/'); + const registriesIdx = segments.findIndex(s => s.toLowerCase() === 'registries'); + if ( + registriesIdx !== -1 && + registriesIdx + 1 < segments.length && + segments[registriesIdx + 1] + ) { + secrets.AZURE_ACR_NAME = segments[registriesIdx + 1]; + } else { + throw new Error( + `Could not derive ACR name from resource ID: "${config.acrResourceId}". Expected "/registries/" segment.` + ); + } + } + const envVars = getActiveEnvVars(config); for (const { key, value } of envVars) { secrets[toEnvSecretName(key)] = value; diff --git a/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineStorage.ts b/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineStorage.ts index 3155006ca..63035d1f2 100644 --- a/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineStorage.ts +++ b/plugins/aks-desktop/src/components/GitHubPipeline/utils/pipelineStorage.ts @@ -16,6 +16,7 @@ export const RESUMABLE_STATES: ReadonlySet = new Set([ 'AppInstallationNeeded', 'CheckingRepo', + 'AcrSelection', 'WorkloadIdentitySetup', 'ReadyForSetup', 'SetupPRCreating', diff --git a/plugins/aks-desktop/src/hooks/useAzureAuth.tsx b/plugins/aks-desktop/src/hooks/useAzureAuth.tsx index 65e1c0f90..2ea9114b9 100644 --- a/plugins/aks-desktop/src/hooks/useAzureAuth.tsx +++ b/plugins/aks-desktop/src/hooks/useAzureAuth.tsx @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the Apache 2.0. -import { useEffect, useState } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { useHistory, useLocation } from 'react-router-dom'; import { getLoginStatus } from '../utils/azure/az-cli'; @@ -27,11 +27,13 @@ export function useAzureAuth(redirectToLogin = false): AzureAuthStatus { isChecking: true, }); - useEffect(() => { - checkAuth(); - }, []); + // Use refs so the event listener always reads current values + const locationRef = useRef(location); + locationRef.current = location; + const redirectToLoginRef = useRef(redirectToLogin); + redirectToLoginRef.current = redirectToLogin; - const checkAuth = async () => { + const checkAuth = useCallback(async () => { try { const status = await getLoginStatus(); @@ -49,12 +51,9 @@ export function useAzureAuth(redirectToLogin = false): AzureAuthStatus { // Expose auth status to window object for headlamp components (window as any).__azureAuthStatus = newAuthStatus; - // Redirect to login if not authenticated and redirectToLogin is true - if (!status.isLoggedIn && redirectToLogin) { - // Use location.pathname for the React Router path (not window.location) - const currentPath = location.pathname + location.search; - //?redirect=${encodeURIComponent(currentPath)} - // history.push(`/azure/login`); + if (!status.isLoggedIn && redirectToLoginRef.current) { + const loc = locationRef.current; + const currentPath = loc.pathname + loc.search; history.push({ pathname: '/azure/login', search: `?redirect=${encodeURIComponent(currentPath)}`, @@ -73,13 +72,21 @@ export function useAzureAuth(redirectToLogin = false): AzureAuthStatus { // Expose auth status to window object for headlamp components (window as any).__azureAuthStatus = errorAuthStatus; - if (redirectToLogin) { - // Use location.pathname for the React Router path (not window.location) - const currentPath = location.pathname + location.search; + if (redirectToLoginRef.current) { + const loc = locationRef.current; + const currentPath = loc.pathname + loc.search; history.push(`/azure/login?redirect=${encodeURIComponent(currentPath)}`); } } - }; + }, [history]); + + useEffect(() => { + checkAuth(); + + const handleAuthUpdate = () => checkAuth(); + window.addEventListener('azure-auth-update', handleAuthUpdate); + return () => window.removeEventListener('azure-auth-update', handleAuthUpdate); + }, [checkAuth]); return authStatus; } diff --git a/plugins/aks-desktop/src/hooks/useNamespaceCapabilities.test.ts b/plugins/aks-desktop/src/hooks/useNamespaceCapabilities.test.ts new file mode 100644 index 000000000..edaf01fa1 --- /dev/null +++ b/plugins/aks-desktop/src/hooks/useNamespaceCapabilities.test.ts @@ -0,0 +1,169 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +// @vitest-environment jsdom + +import { renderHook, waitFor } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; + +vi.mock('../utils/azure/az-cli', () => ({ + getClusterCapabilities: vi.fn(), +})); + +vi.mock('../utils/azure/az-identity', () => ({ + getManagedNamespaceResourceId: vi.fn(), +})); + +import { getClusterCapabilities } from '../utils/azure/az-cli'; +import { getManagedNamespaceResourceId } from '../utils/azure/az-identity'; +import { useNamespaceCapabilities } from './useNamespaceCapabilities'; + +const mockGetManagedNamespaceResourceId = vi.mocked(getManagedNamespaceResourceId); +const mockGetClusterCapabilities = vi.mocked(getClusterCapabilities); + +describe('useNamespaceCapabilities', () => { + it('returns undefined for both when params are undefined and makes no API calls', () => { + const { result } = renderHook(() => + useNamespaceCapabilities({ + subscriptionId: undefined, + resourceGroup: undefined, + clusterName: undefined, + namespace: 'default', + }) + ); + + expect(result.current.isManagedNamespace).toBeUndefined(); + expect(result.current.azureRbacEnabled).toBeUndefined(); + expect(result.current.error).toBeNull(); + expect(mockGetManagedNamespaceResourceId).not.toHaveBeenCalled(); + expect(mockGetClusterCapabilities).not.toHaveBeenCalled(); + }); + + it('calls both APIs and returns success values', async () => { + mockGetManagedNamespaceResourceId.mockResolvedValue({ + success: true, + resourceId: '/subscriptions/sub-1/...', + }); + mockGetClusterCapabilities.mockResolvedValue({ + sku: 'Standard', + aadEnabled: true, + azureRbacEnabled: true, + networkPolicy: null, + networkPlugin: 'azure', + prometheusEnabled: null, + containerInsightsEnabled: null, + kedaEnabled: null, + vpaEnabled: null, + }); + + const { result } = renderHook(() => + useNamespaceCapabilities({ + subscriptionId: 'sub-1', + resourceGroup: 'rg-1', + clusterName: 'cluster-1', + namespace: 'my-ns', + }) + ); + + await waitFor(() => { + expect(result.current.isManagedNamespace).toBe(true); + expect(result.current.azureRbacEnabled).toBe(true); + expect(result.current.error).toBeNull(); + }); + + expect(mockGetManagedNamespaceResourceId).toHaveBeenCalledWith({ + clusterName: 'cluster-1', + resourceGroup: 'rg-1', + namespaceName: 'my-ns', + subscriptionId: 'sub-1', + }); + expect(mockGetClusterCapabilities).toHaveBeenCalledWith({ + subscriptionId: 'sub-1', + resourceGroup: 'rg-1', + clusterName: 'cluster-1', + }); + }); + + it('leaves isManagedNamespace undefined when result.success is false (non-success is indeterminate)', async () => { + mockGetManagedNamespaceResourceId.mockResolvedValue({ success: false }); + mockGetClusterCapabilities.mockResolvedValue({ + sku: 'Standard', + aadEnabled: true, + azureRbacEnabled: false, + networkPolicy: null, + networkPlugin: 'azure', + prometheusEnabled: null, + containerInsightsEnabled: null, + kedaEnabled: null, + vpaEnabled: null, + }); + + const { result } = renderHook(() => + useNamespaceCapabilities({ + subscriptionId: 'sub-1', + resourceGroup: 'rg-1', + clusterName: 'cluster-1', + namespace: 'my-ns', + }) + ); + + await waitFor(() => { + expect(result.current.isManagedNamespace).toBeUndefined(); + expect(result.current.azureRbacEnabled).toBe(false); + expect(result.current.error).toBeTruthy(); + }); + }); + + it('sets isManagedNamespace false when namespace is not managed (success with no resourceId)', async () => { + mockGetManagedNamespaceResourceId.mockResolvedValue({ + success: true, + resourceId: undefined, + }); + mockGetClusterCapabilities.mockResolvedValue({ + sku: 'Standard', + aadEnabled: true, + azureRbacEnabled: false, + networkPolicy: null, + networkPlugin: 'azure', + prometheusEnabled: null, + containerInsightsEnabled: null, + kedaEnabled: null, + vpaEnabled: null, + }); + + const { result } = renderHook(() => + useNamespaceCapabilities({ + subscriptionId: 'sub-1', + resourceGroup: 'rg-1', + clusterName: 'cluster-1', + namespace: 'regular-ns', + }) + ); + + await waitFor(() => { + expect(result.current.isManagedNamespace).toBe(false); + expect(result.current.azureRbacEnabled).toBe(false); + expect(result.current.error).toBeNull(); + }); + }); + + it('falls back on API rejection: isManagedNamespace false, azureRbacEnabled undefined', async () => { + mockGetManagedNamespaceResourceId.mockRejectedValue(new Error('fail')); + mockGetClusterCapabilities.mockRejectedValue(new Error('fail')); + + const { result } = renderHook(() => + useNamespaceCapabilities({ + subscriptionId: 'sub-1', + resourceGroup: 'rg-1', + clusterName: 'cluster-1', + namespace: 'my-ns', + }) + ); + + await waitFor(() => { + expect(result.current.isManagedNamespace).toBe(false); + expect(result.current.azureRbacEnabled).toBeUndefined(); + expect(result.current.error).toContain('fail'); + }); + }); +}); diff --git a/plugins/aks-desktop/src/hooks/useNamespaceCapabilities.ts b/plugins/aks-desktop/src/hooks/useNamespaceCapabilities.ts new file mode 100644 index 000000000..3a29b9992 --- /dev/null +++ b/plugins/aks-desktop/src/hooks/useNamespaceCapabilities.ts @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { useEffect, useState } from 'react'; +import { getClusterCapabilities } from '../utils/azure/az-cli'; +import { getManagedNamespaceResourceId } from '../utils/azure/az-identity'; + +/** Appends a new error message, joining with '; ' if a previous error exists. */ +function appendError(prev: string | null, next: string): string { + return prev ? `${prev}; ${next}` : next; +} + +/** + * Fetches namespace capabilities (managed namespace status, Azure RBAC). + * Return values: `undefined` = still loading or indeterminate, `true`/`false` = resolved. + * For `isManagedNamespace`: only set to `true` on definitive success; `undefined` if the API + * returns a non-success result (could be transient/auth issue); `false` only on thrown errors. + * For `azureRbacEnabled`: `undefined` if the cluster capabilities are unavailable or not set. + */ +interface UseNamespaceCapabilitiesParams { + subscriptionId: string | undefined; + resourceGroup: string | undefined; + clusterName: string | undefined; + namespace: string; +} + +export function useNamespaceCapabilities({ + subscriptionId, + resourceGroup, + clusterName, + namespace, +}: UseNamespaceCapabilitiesParams) { + const [isManagedNamespace, setIsManagedNamespace] = useState(undefined); + const [azureRbacEnabled, setAzureRbacEnabled] = useState(undefined); + const [error, setError] = useState(null); + + useEffect(() => { + if (!subscriptionId || !resourceGroup || !clusterName) return; + let cancelled = false; + + setIsManagedNamespace(undefined); + setAzureRbacEnabled(undefined); + setError(null); + + getManagedNamespaceResourceId({ + clusterName, + resourceGroup, + namespaceName: namespace, + subscriptionId, + }) + .then(result => { + if (!cancelled) { + if (result.success) { + // resourceId present → managed namespace; absent → regular namespace + setIsManagedNamespace(!!result.resourceId); + } else { + setIsManagedNamespace(undefined); + setError(prev => + appendError(prev, result.error ?? 'Failed to check managed namespace status') + ); + } + } + }) + .catch(err => { + if (!cancelled) { + console.error('[useNamespaceCapabilities] Failed to check managed namespace:', err); + setIsManagedNamespace(false); + setError(prev => + appendError( + prev, + err instanceof Error ? err.message : 'Failed to check namespace capabilities' + ) + ); + } + }); + + getClusterCapabilities({ + subscriptionId, + resourceGroup, + clusterName, + }) + .then(caps => { + if (!cancelled) setAzureRbacEnabled(caps?.azureRbacEnabled ?? undefined); + }) + .catch(err => { + if (!cancelled) { + console.error('[useNamespaceCapabilities] Failed to get cluster capabilities:', err); + setAzureRbacEnabled(undefined); + setError(prev => + appendError( + prev, + err instanceof Error ? err.message : 'Failed to get cluster capabilities' + ) + ); + } + }); + + return () => { + cancelled = true; + }; + }, [subscriptionId, resourceGroup, clusterName, namespace]); + + return { isManagedNamespace, azureRbacEnabled, error }; +} diff --git a/plugins/aks-desktop/src/utils/azure/az-acr.ts b/plugins/aks-desktop/src/utils/azure/az-acr.ts new file mode 100644 index 000000000..c627c0a3c --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/az-acr.ts @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. +// Azure Container Registry CLI functions. + +import { isValidAzResourceName, isValidGuid, runAzCommand } from './az-cli'; + +/** Azure Container Registry name: 5-50 lowercase alphanumeric characters. */ +export const ACR_NAME_PATTERN = /^[a-z0-9]{5,50}$/; + +/** Shared validation error for invalid ACR names. */ +export const ACR_NAME_ERROR = 'Registry name must be 5-50 lowercase alphanumeric characters.'; + +/** + * Creates an Azure Container Registry. + */ +export async function createContainerRegistry(options: { + registryName: string; + resourceGroup: string; + subscriptionId: string; + location: string; + sku?: 'Basic' | 'Standard' | 'Premium'; +}): Promise<{ success: boolean; id?: string; loginServer?: string; error?: string }> { + const { registryName, resourceGroup, subscriptionId, location, sku = 'Basic' } = options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + if (!ACR_NAME_PATTERN.test(registryName)) { + return { + success: false, + error: `Invalid registry name: ${ACR_NAME_ERROR}`, + }; + } + if (!isValidAzResourceName(resourceGroup)) { + return { success: false, error: 'Invalid resource group name format' }; + } + + const result = await runAzCommand( + [ + 'acr', + 'create', + '--name', + registryName, + '--resource-group', + resourceGroup, + '--sku', + sku, + '--location', + location, + '--subscription', + subscriptionId, + '--output', + 'json', + ], + 'Creating container registry:', + 'create container registry', + (stdout: string) => { + let parsed; + try { + parsed = JSON.parse(stdout); + } catch (e) { + throw new Error( + `Unexpected output from ACR create command: ${e instanceof Error ? e.message : e}` + ); + } + return { + id: parsed.id as string, + loginServer: parsed.loginServer as string, + }; + } + ); + + if (!result.success) { + return { success: false, error: result.error }; + } + + return { + success: true, + id: result.data?.id, + loginServer: result.data?.loginServer, + }; +} diff --git a/plugins/aks-desktop/src/utils/azure/az-cli.ts b/plugins/aks-desktop/src/utils/azure/az-cli.ts index 230196093..b14a7ce7a 100644 --- a/plugins/aks-desktop/src/utils/azure/az-cli.ts +++ b/plugins/aks-desktop/src/utils/azure/az-cli.ts @@ -14,7 +14,7 @@ import { getAzCommand, getInstallationInstructions } from './az-cli-path'; const DEBUG_LOGS = process.env.NODE_ENV === 'development' || process.env.DEBUG_AZ_CLI === 'true'; // Helper function for debug logging -const debugLog = (...args: any[]) => { +export const debugLog = (...args: any[]) => { if (DEBUG_LOGS) { console.debug(...args); } @@ -22,7 +22,7 @@ const debugLog = (...args: any[]) => { // Validate that a string is a valid GUID (prevents KQL injection in Resource Graph queries) const GUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; -function isValidGuid(value: string): boolean { +export function isValidGuid(value: string): boolean { return GUID_PATTERN.test(value); } @@ -1241,39 +1241,45 @@ export async function getAksKubeconfig(options: { } // Azure Container Registry functions -export async function getContainerRegistries(subscriptionId: string): Promise { - const { stdout, stderr } = await runCommandAsync('az', [ - 'acr', - 'list', - '--subscription', - subscriptionId, - '--output', - 'json', - ]); +export type AcrSku = 'Basic' | 'Standard' | 'Premium'; - if (stderr && needsRelogin(stderr)) { - throw new Error('Authentication required. Please log in to Azure CLI: az login'); - } +export interface AcrInfo { + id: string; + name: string; + resourceGroup: string; + loginServer: string; + location: string; + sku: AcrSku; +} - if (stderr && (stderr.includes('ERROR') || stderr.includes('error'))) { - console.error('Failed to get container registries:', stderr); - throw new Error(`Failed to get container registries: ${stderr}`); +export async function getContainerRegistries(subscriptionId: string): Promise { + if (!isValidGuid(subscriptionId)) { + throw new Error('Invalid subscription ID format'); } - try { - const registries = JSON.parse(stdout || '[]'); - return registries.map((registry: any) => ({ - id: registry.id, - name: registry.name, - resourceGroup: registry.resourceGroup, - loginServer: registry.loginServer, - location: registry.location, - sku: registry.sku?.name || 'Basic', - })); - } catch (error) { - console.error('Failed to parse container registries response:', error); - return []; + const result = await runAzCommand( + ['acr', 'list', '--subscription', subscriptionId, '--output', 'json'], + 'Listing container registries:', + 'list container registries', + (stdout: string) => { + const registries = JSON.parse(stdout || '[]') as any[]; + return registries.map( + (r): AcrInfo => ({ + id: r.id, + name: r.name, + resourceGroup: r.resourceGroup, + loginServer: r.loginServer, + location: r.location, + sku: r.sku?.name ?? r.sku ?? 'Basic', + }) + ); + } + ); + + if (!result.success) { + throw new Error(result.error ?? 'Failed to get container registries'); } + return result.data!; } export async function getContainerImages( @@ -2920,7 +2926,7 @@ export async function verifyNamespaceAccess(options: { } // Azure CLI prefixes fatal errors with "ERROR: " in stderr -function isAzError(stderr: string): boolean { +export function isAzError(stderr: string): boolean { return stderr.includes('ERROR: '); } @@ -2929,13 +2935,13 @@ const ODATA_SAFE_QUERY_PATTERN = /^[a-zA-Z0-9@._ -]+$/; // Validates Azure resource names: alphanumeric, hyphens, underscores (1-128 chars) const AZ_RESOURCE_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,127}$/; -function isValidAzResourceName(value: string): boolean { +export function isValidAzResourceName(value: string): boolean { return AZ_RESOURCE_NAME_PATTERN.test(value); } // Validates GitHub owner/repo/branch names (no path traversal or shell metacharacters) const GITHUB_NAME_PATTERN = /^[a-zA-Z0-9._-]{1,100}$/; -function isValidGitHubName(value: string): boolean { +export function isValidGitHubName(value: string): boolean { return GITHUB_NAME_PATTERN.test(value); } @@ -2963,7 +2969,7 @@ export interface ManagedIdentityResult { * Return a result object to short-circuit, or `null` * to fall through to the default checks. */ -async function runAzCommand( +export async function runAzCommand( args: string[], debugLabel: string, errorContext: string, @@ -3002,7 +3008,7 @@ async function runAzCommand( } } -function parseManagedIdentityOutput(stdout: string) { +export function parseManagedIdentityOutput(stdout: string) { let identity; try { identity = JSON.parse(stdout); @@ -3016,212 +3022,6 @@ function parseManagedIdentityOutput(stdout: string) { }; } -export async function getManagedIdentity(options: { - identityName: string; - resourceGroup: string; - subscriptionId: string; -}): Promise { - const { identityName, resourceGroup, subscriptionId } = options; - - if (!isValidGuid(subscriptionId)) { - return { success: false, error: 'Invalid subscription ID format' }; - } - if (!isValidAzResourceName(identityName) || !isValidAzResourceName(resourceGroup)) { - return { success: false, error: 'Invalid identity name or resource group format' }; - } - - const result = await runAzCommand( - [ - 'identity', - 'show', - '--name', - identityName, - '--resource-group', - resourceGroup, - '--subscription', - subscriptionId, - '--output', - 'json', - ], - 'Getting managed identity:', - 'get managed identity', - parseManagedIdentityOutput, - stderr => { - if (stderr.includes('ResourceNotFound') || stderr.includes('was not found')) { - return { success: false, notFound: true }; - } - return null; - } - ); - - if (!result.success) { - return { - success: false, - notFound: result.notFound as boolean | undefined, - error: result.error, - }; - } - return { success: true, ...result.data }; -} - -export async function createManagedIdentity(options: { - identityName: string; - resourceGroup: string; - subscriptionId: string; -}): Promise { - const { identityName, resourceGroup, subscriptionId } = options; - - if (!isValidGuid(subscriptionId)) { - return { success: false, error: 'Invalid subscription ID format' }; - } - if (!isValidAzResourceName(identityName) || !isValidAzResourceName(resourceGroup)) { - return { success: false, error: 'Invalid identity name or resource group format' }; - } - - const result = await runAzCommand( - [ - 'identity', - 'create', - '--name', - identityName, - '--resource-group', - resourceGroup, - '--subscription', - subscriptionId, - '--tags', - 'purpose=GitHub Actions OIDC', - 'createdBy=AKS Desktop', - '--output', - 'json', - ], - 'Creating managed identity:', - 'create managed identity', - parseManagedIdentityOutput - ); - - if (!result.success) { - return { success: false, error: result.error }; - } - return { success: true, ...result.data }; -} - -export async function assignRoleToIdentity(options: { - principalId: string; - subscriptionId: string; - resourceGroup: string; -}): Promise<{ success: boolean; error?: string }> { - const { principalId, subscriptionId, resourceGroup } = options; - - if (!isValidGuid(subscriptionId)) { - return { success: false, error: 'Invalid subscription ID format' }; - } - if (!isValidGuid(principalId)) { - return { success: false, error: 'Invalid principal ID format' }; - } - if (!isValidAzResourceName(resourceGroup)) { - return { success: false, error: 'Invalid resource group format' }; - } - - const scope = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}`; - const result = await runAzCommand( - [ - 'role', - 'assignment', - 'create', - '--assignee-object-id', - principalId, - '--assignee-principal-type', - 'ServicePrincipal', - '--role', - 'Azure Kubernetes Service Cluster User Role', - '--scope', - scope, - '--subscription', - subscriptionId, - '--output', - 'json', - ], - 'Assigning AKS Cluster User Role:', - 'assign role', - undefined, - stderr => { - // Role assignment already exists — treat as success - if (stderr.includes('RoleAssignmentExists')) { - debugLog('Role assignment already exists, continuing.'); - return { success: true }; - } - return null; - } - ); - - return { success: result.success, error: result.error }; -} - -export async function createFederatedCredential(options: { - identityName: string; - resourceGroup: string; - subscriptionId: string; - repoOwner: string; - repoName: string; - branch: string; -}): Promise<{ success: boolean; error?: string }> { - const { identityName, resourceGroup, subscriptionId, repoOwner, repoName, branch } = options; - - if (!isValidGuid(subscriptionId)) { - return { success: false, error: 'Invalid subscription ID format' }; - } - if (!isValidAzResourceName(identityName) || !isValidAzResourceName(resourceGroup)) { - return { success: false, error: 'Invalid identity name or resource group format' }; - } - if (!isValidGitHubName(repoOwner) || !isValidGitHubName(repoName) || !isValidGitHubName(branch)) { - return { success: false, error: 'Invalid GitHub owner, repo name, or branch format' }; - } - - const subject = `repo:${repoOwner}/${repoName}:ref:refs/heads/${branch}`; - // Sanitize dots in repoName (invalid in Azure resource names) and validate - const sanitizedRepoName = repoName.replace(/\./g, '-'); - const credentialName = `GitHubActions-${sanitizedRepoName}`; - if (!isValidAzResourceName(credentialName)) { - return { success: false, error: 'Invalid federated credential name format' }; - } - const result = await runAzCommand( - [ - 'identity', - 'federated-credential', - 'create', - '--identity-name', - identityName, - '--resource-group', - resourceGroup, - '--subscription', - subscriptionId, - '--name', - credentialName, - '--issuer', - 'https://token.actions.githubusercontent.com', - '--subject', - subject, - '--audiences', - 'api://AzureADTokenExchange', - '--output', - 'json', - ], - 'Creating federated credential:', - 'create federated credential', - undefined, - stderr => { - // Federated credential already exists — treat as success - if (stderr.includes('FederatedIdentityCredentialAlreadyExists')) { - debugLog('Federated credential already exists, continuing.'); - return { success: true }; - } - return null; - } - ); - - return { success: result.success, error: result.error }; -} - export interface AzureADUser { id: string; displayName: string; diff --git a/plugins/aks-desktop/src/utils/azure/az-federation.ts b/plugins/aks-desktop/src/utils/azure/az-federation.ts new file mode 100644 index 000000000..0ef0417c3 --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/az-federation.ts @@ -0,0 +1,248 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. +// Federated credential CLI functions (GitHub Actions OIDC and K8s service account federation). + +import { K8S_DNS_LABEL_PATTERN } from '../kubernetes/k8sNames'; +import { + debugLog, + isValidAzResourceName, + isValidGitHubName, + isValidGuid, + runAzCommand, +} from './az-cli'; + +/** Shared helper: runs `az identity federated-credential create` with dedup handling. */ +async function runFederatedCredentialCreate(options: { + identityName: string; + resourceGroup: string; + subscriptionId: string; + credentialName: string; + issuer: string; + subject: string; + logPrefix: string; +}): Promise<{ success: boolean; error?: string }> { + const { + identityName, + resourceGroup, + subscriptionId, + credentialName, + issuer, + subject, + logPrefix, + } = options; + + const result = await runAzCommand( + [ + 'identity', + 'federated-credential', + 'create', + '--identity-name', + identityName, + '--resource-group', + resourceGroup, + '--subscription', + subscriptionId, + '--name', + credentialName, + '--issuer', + issuer, + '--subject', + subject, + '--audiences', + 'api://AzureADTokenExchange', + '--output', + 'json', + ], + logPrefix, + `create federated credential (${credentialName})`, + undefined, + stderr => { + if (stderr.includes('FederatedIdentityCredentialAlreadyExists')) { + debugLog('Federated credential already exists, continuing.'); + return { success: true }; + } + return null; + } + ); + + return { success: result.success, error: result.error }; +} + +export async function createFederatedCredential(options: { + identityName: string; + resourceGroup: string; + subscriptionId: string; + repoOwner: string; + repoName: string; + branch: string; +}): Promise<{ success: boolean; error?: string }> { + const { identityName, resourceGroup, subscriptionId, repoOwner, repoName, branch } = options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + if (!isValidAzResourceName(identityName) || !isValidAzResourceName(resourceGroup)) { + return { success: false, error: 'Invalid identity name or resource group format' }; + } + if (!isValidGitHubName(repoOwner) || !isValidGitHubName(repoName) || !isValidGitHubName(branch)) { + return { success: false, error: 'Invalid GitHub owner, repo name, or branch format' }; + } + + const subject = `repo:${repoOwner}/${repoName}:ref:refs/heads/${branch}`; + const sanitizedRepoName = repoName.replace(/\./g, '-'); + const credentialName = `GitHubActions-${sanitizedRepoName}`; + if (!isValidAzResourceName(credentialName)) { + return { success: false, error: 'Invalid federated credential name format' }; + } + + return runFederatedCredentialCreate({ + identityName, + resourceGroup, + subscriptionId, + credentialName, + issuer: 'https://token.actions.githubusercontent.com', + subject, + logPrefix: 'Creating federated credential:', + }); +} + +export async function getAksOidcIssuerUrl(options: { + clusterName: string; + resourceGroup: string; + subscriptionId: string; +}): Promise<{ success: boolean; issuerUrl?: string; error?: string }> { + const { clusterName, resourceGroup, subscriptionId } = options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + if (!isValidAzResourceName(clusterName) || !isValidAzResourceName(resourceGroup)) { + return { success: false, error: 'Invalid cluster name or resource group format' }; + } + + const query = + '{issuerUrl: oidcIssuerProfile.issuerUrl, workloadIdentityEnabled: securityProfile.workloadIdentity.enabled}'; + + const result = await runAzCommand( + [ + 'aks', + 'show', + '--name', + clusterName, + '--resource-group', + resourceGroup, + '--subscription', + subscriptionId, + '--query', + query, + '-o', + 'json', + ], + 'Getting AKS OIDC issuer URL and workload identity status:', + 'get AKS OIDC issuer URL', + stdout => { + let parsed; + try { + parsed = JSON.parse(stdout.trim()); + } catch (e) { + throw new Error( + `Unexpected output from AKS OIDC issuer query: ${e instanceof Error ? e.message : e}` + ); + } + const issuerUrl = parsed.issuerUrl; + const workloadIdentityEnabled = parsed.workloadIdentityEnabled; + + if (!issuerUrl && !workloadIdentityEnabled) { + throw new Error( + 'Cluster does not have OIDC issuer or workload identity enabled. Enable both with: az aks update --name --resource-group --enable-oidc-issuer --enable-workload-identity' + ); + } + + if (!issuerUrl) { + throw new Error( + 'Cluster does not have OIDC issuer enabled. Enable it with: az aks update --name --resource-group --enable-oidc-issuer' + ); + } + + if (!workloadIdentityEnabled) { + throw new Error( + 'Cluster does not have workload identity enabled. Enable it with: az aks update --name --resource-group --enable-workload-identity' + ); + } + + return issuerUrl as string; + } + ); + + if (!result.success) { + return { success: false, error: result.error }; + } + return { success: true, issuerUrl: result.data }; +} + +/** Simple 32-bit hash for generating short deterministic suffixes. */ +function hashCode(input: string): number { + let h = 0; + for (let i = 0; i < input.length; i++) { + h = (Math.imul(31, h) + input.charCodeAt(i)) | 0; + } + return h >>> 0; +} + +export async function createK8sFederatedCredential(options: { + identityName: string; + resourceGroup: string; + subscriptionId: string; + issuerUrl: string; + namespace: string; + serviceAccountName: string; +}): Promise<{ success: boolean; error?: string }> { + const { identityName, resourceGroup, subscriptionId, issuerUrl, namespace, serviceAccountName } = + options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + if (!isValidAzResourceName(identityName) || !isValidAzResourceName(resourceGroup)) { + return { success: false, error: 'Invalid identity name or resource group format' }; + } + + // Validate issuerUrl is a well-formed HTTPS URL + try { + const parsed = new URL(issuerUrl); + if (parsed.protocol !== 'https:') { + return { success: false, error: 'OIDC issuer URL must use HTTPS' }; + } + } catch { + return { success: false, error: 'Invalid OIDC issuer URL format' }; + } + + // Validate namespace and serviceAccountName (DNS label: lowercase alphanumeric and hyphens, max 63 chars) + if (!K8S_DNS_LABEL_PATTERN.test(namespace)) { + return { success: false, error: 'Invalid Kubernetes namespace format' }; + } + if (!K8S_DNS_LABEL_PATTERN.test(serviceAccountName)) { + return { success: false, error: 'Invalid Kubernetes service account name format' }; + } + + const subject = `system:serviceaccount:${namespace}:${serviceAccountName}`; + const rawCredentialName = `K8sSA-${namespace}-${serviceAccountName}`; + let credentialName = rawCredentialName; + if (credentialName.length > 128) { + const suffix = `-${hashCode(rawCredentialName).toString(36)}`; + credentialName = rawCredentialName.slice(0, 128 - suffix.length).replace(/-$/, '') + suffix; + } + if (!isValidAzResourceName(credentialName)) { + return { success: false, error: 'Invalid federated credential name format' }; + } + + return runFederatedCredentialCreate({ + identityName, + resourceGroup, + subscriptionId, + credentialName, + issuer: issuerUrl, + subject, + logPrefix: 'Creating K8s federated credential:', + }); +} diff --git a/plugins/aks-desktop/src/utils/azure/az-identity.ts b/plugins/aks-desktop/src/utils/azure/az-identity.ts new file mode 100644 index 000000000..58a80ea57 --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/az-identity.ts @@ -0,0 +1,311 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. +// Identity-related Azure CLI functions (managed identities, role assignments). + +import type { ManagedIdentityResult } from './az-cli'; +import { + debugLog, + isValidAzResourceName, + isValidGuid, + parseManagedIdentityOutput, + runAzCommand, +} from './az-cli'; + +// --- Identity CRUD --- + +export async function getManagedIdentity(options: { + identityName: string; + resourceGroup: string; + subscriptionId: string; +}): Promise { + const { identityName, resourceGroup, subscriptionId } = options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + if (!isValidAzResourceName(identityName) || !isValidAzResourceName(resourceGroup)) { + return { success: false, error: 'Invalid identity name or resource group format' }; + } + + const result = await runAzCommand( + [ + 'identity', + 'show', + '--name', + identityName, + '--resource-group', + resourceGroup, + '--subscription', + subscriptionId, + '--output', + 'json', + ], + 'Getting managed identity:', + 'get managed identity', + parseManagedIdentityOutput, + stderr => { + if (stderr.includes('ResourceNotFound') || stderr.includes('was not found')) { + return { success: false, notFound: true }; + } + return null; + } + ); + + if (!result.success) { + return { + success: false, + notFound: result.notFound as boolean | undefined, + error: result.error, + }; + } + return { success: true, ...result.data }; +} + +export async function createManagedIdentity(options: { + identityName: string; + resourceGroup: string; + subscriptionId: string; +}): Promise { + const { identityName, resourceGroup, subscriptionId } = options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + if (!isValidAzResourceName(identityName) || !isValidAzResourceName(resourceGroup)) { + return { success: false, error: 'Invalid identity name or resource group format' }; + } + + const result = await runAzCommand( + [ + 'identity', + 'create', + '--name', + identityName, + '--resource-group', + resourceGroup, + '--subscription', + subscriptionId, + '--tags', + 'purpose=workload-identity', + 'createdBy=AKS Desktop', + '--output', + 'json', + ], + 'Creating managed identity:', + 'create managed identity', + parseManagedIdentityOutput + ); + + if (!result.success) { + return { success: false, error: result.error }; + } + return { success: true, ...result.data }; +} + +// --- Scope-building helpers --- + +export function buildClusterScope( + subscriptionId: string, + resourceGroup: string, + clusterName: string +): string { + return `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.ContainerService/managedClusters/${clusterName}`; +} + +// --- Role assignment types --- + +export interface RoleAssignment { + role: string; + scope: string; +} + +export interface AssignRolesResult { + success: boolean; + results: Array<{ role: string; scope: string; success: boolean; error?: string }>; + /** Set on early validation failures (e.g. invalid GUID format). */ + error?: string; +} + +/** + * Assigns multiple Azure RBAC roles to a managed identity. + * Treats `RoleAssignmentExists` as success (idempotent). + * Roles are assigned sequentially to avoid Azure ARM rate-limiting (429s). + */ +export async function assignRolesToIdentity(options: { + principalId: string; + subscriptionId: string; + roles: RoleAssignment[]; +}): Promise { + const { principalId, subscriptionId, roles } = options; + + if (!isValidGuid(subscriptionId) || !isValidGuid(principalId)) { + return { + success: false, + results: [], + error: 'Invalid subscription ID or principal ID format', + }; + } + + const results: AssignRolesResult['results'] = []; + + for (const { role, scope } of roles) { + const result = await runAzCommand( + [ + 'role', + 'assignment', + 'create', + '--assignee-object-id', + principalId, + '--assignee-principal-type', + 'ServicePrincipal', + '--role', + role, + '--scope', + scope, + '--subscription', + subscriptionId, + '--output', + 'json', + ], + `Assigning role "${role}" at scope "${scope}":`, + `assign role ${role}`, + undefined, + stderr => { + if (stderr.includes('RoleAssignmentExists')) { + debugLog(`Role assignment "${role}" already exists, continuing.`); + return { success: true }; + } + return null; + } + ); + + if (!result.success) { + console.error( + `[assignRolesToIdentity] Failed to assign role "${role}" at scope "${scope}":`, + result.error + ); + } + results.push({ role, scope, success: result.success, error: result.error }); + } + + return { + success: results.every(r => r.success), + results, + }; +} + +/** + * Gets the Azure resource ID for a managed namespace. + */ +export async function getManagedNamespaceResourceId(options: { + clusterName: string; + resourceGroup: string; + namespaceName: string; + subscriptionId: string; +}): Promise<{ success: boolean; resourceId?: string; error?: string }> { + const { clusterName, resourceGroup, namespaceName, subscriptionId } = options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + + const result = await runAzCommand( + [ + 'aks', + 'namespace', + 'show', + '--cluster-name', + clusterName, + '--resource-group', + resourceGroup, + '--name', + namespaceName, + '--query', + 'id', + '--output', + 'tsv', + '--subscription', + subscriptionId, + ], + 'Getting namespace resource ID:', + 'get managed namespace resource ID', + stdout => { + const resourceId = stdout.trim(); + if (!resourceId) { + throw new Error('Empty resource ID returned for managed namespace'); + } + return resourceId; + } + ); + + if (!result.success) { + // "Not found" is expected for regular (non-managed) namespaces — return + // success with no resourceId so callers can distinguish from real errors. + const err = result.error ?? ''; + if (err.includes('ResourceNotFound') || err.includes('not found') || err.includes('(404)')) { + return { success: true, resourceId: undefined }; + } + return { success: false, error: result.error }; + } + return { success: true, resourceId: result.data }; +} + +export async function listManagedIdentities(options: { + resourceGroup: string; + subscriptionId: string; +}): Promise<{ + success: boolean; + identities?: Array<{ + name: string; + clientId: string; + principalId: string; + resourceGroup: string; + }>; + error?: string; +}> { + const { resourceGroup, subscriptionId } = options; + + if (!isValidGuid(subscriptionId)) { + return { success: false, error: 'Invalid subscription ID format' }; + } + if (!isValidAzResourceName(resourceGroup)) { + return { success: false, error: 'Invalid resource group name' }; + } + const result = await runAzCommand( + [ + 'identity', + 'list', + '--resource-group', + resourceGroup, + '--subscription', + subscriptionId, + '--output', + 'json', + ], + 'Listing managed identities:', + 'list managed identities', + (stdout: string) => { + let identities; + try { + identities = JSON.parse(stdout); + } catch (e) { + throw new Error( + `Unexpected output from az identity list command: ${e instanceof Error ? e.message : e}` + ); + } + return (identities as Array>).map( + (identity: Record) => ({ + name: identity.name as string, + clientId: identity.clientId as string, + principalId: identity.principalId as string, + resourceGroup: identity.resourceGroup as string, + }) + ); + } + ); + + if (!result.success) { + return { success: false, error: result.error }; + } + return { success: true, identities: result.data }; +} diff --git a/plugins/aks-desktop/src/utils/azure/identityRoles.test.ts b/plugins/aks-desktop/src/utils/azure/identityRoles.test.ts new file mode 100644 index 000000000..f6b69a0c5 --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/identityRoles.test.ts @@ -0,0 +1,116 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { describe, expect, it } from 'vitest'; +import type { IdentityRoleContext } from './identityRoles'; +import { computeRequiredRoles } from './identityRoles'; + +const baseFields = { + subscriptionId: '12345678-1234-1234-1234-123456789abc', + resourceGroup: 'my-rg', + clusterName: 'my-cluster', +}; + +const baseContext: IdentityRoleContext = { + ...baseFields, + isManagedNamespace: false, +}; + +const clusterScope = + '/subscriptions/12345678-1234-1234-1234-123456789abc/resourceGroups/my-rg/providers/Microsoft.ContainerService/managedClusters/my-cluster'; + +const acrResourceId = + '/subscriptions/12345678-1234-1234-1234-123456789abc/resourceGroups/my-rg/providers/Microsoft.ContainerRegistry/registries/myacr'; + +const managedNamespaceResourceId = + '/subscriptions/12345678-1234-1234-1234-123456789abc/resourceGroups/my-rg/providers/Microsoft.ContainerService/managedClusters/my-cluster/managedNamespaces/my-ns'; + +describe('computeRequiredRoles', () => { + describe('Normal Namespace', () => { + it('assigns AKS Cluster User Role at cluster scope without ACR or RBAC', () => { + const roles = computeRequiredRoles(baseContext); + + expect(roles).toEqual([ + { role: 'Azure Kubernetes Service Cluster User Role', scope: clusterScope }, + ]); + }); + + it('includes ACR roles when acrResourceId is provided', () => { + const roles = computeRequiredRoles({ ...baseContext, acrResourceId }); + + expect(roles).toEqual([ + { role: 'AcrPush', scope: acrResourceId }, + { role: 'Container Registry Tasks Contributor', scope: acrResourceId }, + { role: 'Azure Kubernetes Service Cluster User Role', scope: clusterScope }, + ]); + }); + + it('includes AKS RBAC Writer when azureRbacEnabled is true', () => { + const roles = computeRequiredRoles({ ...baseContext, azureRbacEnabled: true }); + + expect(roles).toEqual([ + { role: 'Azure Kubernetes Service Cluster User Role', scope: clusterScope }, + { role: 'Azure Kubernetes Service RBAC Writer', scope: clusterScope }, + ]); + }); + + it('includes all roles when ACR and Azure RBAC are both set', () => { + const roles = computeRequiredRoles({ + ...baseContext, + acrResourceId, + azureRbacEnabled: true, + }); + + expect(roles).toHaveLength(4); + expect(roles).toEqual([ + { role: 'AcrPush', scope: acrResourceId }, + { role: 'Container Registry Tasks Contributor', scope: acrResourceId }, + { role: 'Azure Kubernetes Service Cluster User Role', scope: clusterScope }, + { role: 'Azure Kubernetes Service RBAC Writer', scope: clusterScope }, + ]); + }); + + it('does not include AKS RBAC Writer when azureRbacEnabled is false', () => { + const roles = computeRequiredRoles({ ...baseContext, azureRbacEnabled: false }); + const roleNames = roles.map(r => r.role); + expect(roleNames).not.toContain('Azure Kubernetes Service RBAC Writer'); + }); + }); + + describe('Managed Namespace', () => { + const managedCtx: IdentityRoleContext = { + ...baseFields, + isManagedNamespace: true, + managedNamespaceResourceId, + }; + + it('assigns AKS RBAC Writer and Namespace User at MNS scope', () => { + const roles = computeRequiredRoles(managedCtx); + + expect(roles).toEqual([ + { role: 'Azure Kubernetes Service RBAC Writer', scope: managedNamespaceResourceId }, + { role: 'Azure Kubernetes Service Namespace User', scope: managedNamespaceResourceId }, + ]); + }); + + it('includes ACR roles when acrResourceId is provided', () => { + const roles = computeRequiredRoles({ ...managedCtx, acrResourceId }); + + expect(roles).toEqual([ + { role: 'AcrPush', scope: acrResourceId }, + { role: 'Container Registry Tasks Contributor', scope: acrResourceId }, + { role: 'Azure Kubernetes Service RBAC Writer', scope: managedNamespaceResourceId }, + { role: 'Azure Kubernetes Service Namespace User', scope: managedNamespaceResourceId }, + ]); + }); + + it('does not include AKS Cluster User Role for managed namespaces', () => { + const roles = computeRequiredRoles(managedCtx); + const roleNames = roles.map(r => r.role); + expect(roleNames).not.toContain('Azure Kubernetes Service Cluster User Role'); + }); + + // Note: "isManagedNamespace: true without managedNamespaceResourceId" is now a compile-time + // error thanks to the discriminated union type — no runtime test needed. + }); +}); diff --git a/plugins/aks-desktop/src/utils/azure/identityRoles.ts b/plugins/aks-desktop/src/utils/azure/identityRoles.ts new file mode 100644 index 000000000..fee68b2bc --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/identityRoles.ts @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { buildClusterScope, type RoleAssignment } from './az-identity'; + +// Azure built-in role names +const ACR_PUSH = 'AcrPush'; +const ACR_TASKS_CONTRIBUTOR = 'Container Registry Tasks Contributor'; +const AKS_CLUSTER_USER = 'Azure Kubernetes Service Cluster User Role'; +const AKS_RBAC_WRITER = 'Azure Kubernetes Service RBAC Writer'; +const AKS_NAMESPACE_USER = 'Azure Kubernetes Service Namespace User'; + +interface IdentityRoleContextBase { + subscriptionId: string; + resourceGroup: string; + clusterName: string; + acrResourceId?: string; +} + +interface NormalNamespaceRoleContext extends IdentityRoleContextBase { + isManagedNamespace: false; + azureRbacEnabled?: boolean; +} + +interface ManagedNamespaceRoleContext extends IdentityRoleContextBase { + isManagedNamespace: true; + managedNamespaceResourceId: string; +} + +export type IdentityRoleContext = NormalNamespaceRoleContext | ManagedNamespaceRoleContext; + +/** + * Computes the set of Azure RBAC role assignments required for a workload identity, + * based on whether the target is a normal or managed namespace and whether an ACR is involved. + * + * Normal Namespace (NS): + * - AcrPush → ACR scope (if ACR provided) + * - Container Registry Tasks Contributor → ACR scope (if ACR provided) + * - AKS Cluster User Role → cluster scope + * - AKS RBAC Writer → cluster scope (only if Azure RBAC enabled) + * + * Managed Namespace (MNS): + * - AcrPush → ACR scope (if ACR provided) + * - Container Registry Tasks Contributor → ACR scope (if ACR provided) + * - AKS RBAC Writer → managed namespace scope + * - AKS Namespace User → managed namespace scope + */ +export function computeRequiredRoles(ctx: IdentityRoleContext): RoleAssignment[] { + const roles: RoleAssignment[] = []; + + // ACR roles (common to both NS and MNS when an ACR is provided) + if (ctx.acrResourceId) { + roles.push({ role: ACR_PUSH, scope: ctx.acrResourceId }); + roles.push({ role: ACR_TASKS_CONTRIBUTOR, scope: ctx.acrResourceId }); + } + + const clusterScope = buildClusterScope(ctx.subscriptionId, ctx.resourceGroup, ctx.clusterName); + + if (ctx.isManagedNamespace === true) { + roles.push({ role: AKS_RBAC_WRITER, scope: ctx.managedNamespaceResourceId }); + roles.push({ role: AKS_NAMESPACE_USER, scope: ctx.managedNamespaceResourceId }); + } else { + roles.push({ role: AKS_CLUSTER_USER, scope: clusterScope }); + if (ctx.azureRbacEnabled) { + roles.push({ role: AKS_RBAC_WRITER, scope: clusterScope }); + } + } + + return roles; +} diff --git a/plugins/aks-desktop/src/utils/azure/identitySetup.test.ts b/plugins/aks-desktop/src/utils/azure/identitySetup.test.ts new file mode 100644 index 000000000..92805078a --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/identitySetup.test.ts @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +// @vitest-environment jsdom + +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +const mockResourceGroupExists = vi.fn(); +const mockGetResourceGroupLocation = vi.fn(); +const mockCreateResourceGroup = vi.fn(); +const mockGetManagedIdentity = vi.fn(); +const mockCreateManagedIdentity = vi.fn(); + +vi.mock('./az-cli', () => ({ + resourceGroupExists: (...args: any[]) => mockResourceGroupExists(...args), + getResourceGroupLocation: (...args: any[]) => mockGetResourceGroupLocation(...args), + createResourceGroup: (...args: any[]) => mockCreateResourceGroup(...args), +})); + +vi.mock('./az-identity', () => ({ + getManagedIdentity: (...args: any[]) => mockGetManagedIdentity(...args), + createManagedIdentity: (...args: any[]) => mockCreateManagedIdentity(...args), +})); + +import { ensureIdentityAndResourceGroup } from './identitySetup'; + +const baseConfig = { + subscriptionId: '12345678-1234-1234-1234-123456789abc', + resourceGroup: 'cluster-rg', + identityResourceGroup: 'identity-rg', + identityName: 'id-my-app-github', + onStatusChange: vi.fn(), +}; + +describe('ensureIdentityAndResourceGroup', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('reuses existing identity when found', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + + const result = await ensureIdentityAndResourceGroup(baseConfig); + + expect(result).toEqual({ + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + isExisting: true, + }); + expect(mockCreateManagedIdentity).not.toHaveBeenCalled(); + }); + + it('creates RG and identity when neither exists', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: false }); + mockGetResourceGroupLocation.mockResolvedValue('eastus'); + mockCreateResourceGroup.mockResolvedValue({ success: true }); + mockGetManagedIdentity.mockResolvedValue({ success: false, notFound: true }); + mockCreateManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'new-cid', + principalId: 'new-pid', + tenantId: 'new-tid', + }); + + const result = await ensureIdentityAndResourceGroup(baseConfig); + + expect(result).toEqual({ + clientId: 'new-cid', + principalId: 'new-pid', + tenantId: 'new-tid', + isExisting: false, + }); + expect(mockCreateResourceGroup).toHaveBeenCalledWith({ + resourceGroupName: 'identity-rg', + location: 'eastus', + subscriptionId: baseConfig.subscriptionId, + }); + expect(mockCreateManagedIdentity).toHaveBeenCalledWith({ + identityName: 'id-my-app-github', + resourceGroup: 'identity-rg', + subscriptionId: baseConfig.subscriptionId, + }); + }); + + it('skips RG creation when it already exists', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ success: false, notFound: true }); + mockCreateManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + + await ensureIdentityAndResourceGroup(baseConfig); + + expect(mockGetResourceGroupLocation).not.toHaveBeenCalled(); + expect(mockCreateResourceGroup).not.toHaveBeenCalled(); + }); + + it('throws when RG existence check returns an error', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: false, error: 'Network error' }); + + await expect(ensureIdentityAndResourceGroup(baseConfig)).rejects.toThrow('Network error'); + }); + + it('throws when RG creation fails', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: false }); + mockGetResourceGroupLocation.mockResolvedValue('eastus'); + mockCreateResourceGroup.mockResolvedValue({ success: false, error: 'Permission denied' }); + + await expect(ensureIdentityAndResourceGroup(baseConfig)).rejects.toThrow('Permission denied'); + }); + + it('throws on real identity lookup error (not notFound)', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: false, + notFound: false, + error: 'Timeout', + }); + + await expect(ensureIdentityAndResourceGroup(baseConfig)).rejects.toThrow('Timeout'); + }); + + it('throws when identity creation fails', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ success: false, notFound: true }); + mockCreateManagedIdentity.mockResolvedValue({ + success: false, + error: 'Quota exceeded', + }); + + await expect(ensureIdentityAndResourceGroup(baseConfig)).rejects.toThrow('Quota exceeded'); + }); + + it('reports status changes correctly', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ success: false, notFound: true }); + mockCreateManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + + await ensureIdentityAndResourceGroup(baseConfig); + + expect(baseConfig.onStatusChange).toHaveBeenCalledWith('creating-rg'); + expect(baseConfig.onStatusChange).toHaveBeenCalledWith('checking'); + expect(baseConfig.onStatusChange).toHaveBeenCalledWith('creating-identity'); + }); +}); diff --git a/plugins/aks-desktop/src/utils/azure/identitySetup.ts b/plugins/aks-desktop/src/utils/azure/identitySetup.ts new file mode 100644 index 000000000..16a7c32c7 --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/identitySetup.ts @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { createResourceGroup, getResourceGroupLocation, resourceGroupExists } from './az-cli'; +import { createManagedIdentity, getManagedIdentity } from './az-identity'; + +export type IdentitySetupStatus = 'creating-rg' | 'checking' | 'creating-identity'; + +export interface IdentitySetupConfig { + subscriptionId: string; + /** Resource group where the cluster lives (used to derive location). */ + resourceGroup: string; + /** Resource group where the identity will be created. */ + identityResourceGroup: string; + identityName: string; + onStatusChange: (status: IdentitySetupStatus) => void; +} + +export interface IdentitySetupResult { + clientId: string; + principalId: string; + tenantId: string; + isExisting: boolean; +} + +/** + * Ensures a managed identity exists, creating the resource group and identity if needed. + * Does NOT handle role assignment or federated credentials — those differ per flow. + */ +export async function ensureIdentityAndResourceGroup( + config: IdentitySetupConfig +): Promise { + const { subscriptionId, resourceGroup, identityResourceGroup, identityName, onStatusChange } = + config; + + // Step 1: Ensure identity resource group exists + onStatusChange('creating-rg'); + const rgCheck = await resourceGroupExists({ + resourceGroupName: identityResourceGroup, + subscriptionId, + }); + + if (rgCheck.error) { + throw new Error(rgCheck.error); + } + + if (!rgCheck.exists) { + const location = await getResourceGroupLocation({ + resourceGroupName: resourceGroup, + subscriptionId, + }); + if (!location) { + throw new Error(`Could not determine location from resource group '${resourceGroup}'`); + } + const rgResult = await createResourceGroup({ + resourceGroupName: identityResourceGroup, + location, + subscriptionId, + }); + if (!rgResult.success) { + throw new Error(rgResult.error ?? 'Failed to create identity resource group'); + } + } + + // Step 2: Check if identity already exists + onStatusChange('checking'); + const existing = await getManagedIdentity({ + identityName, + resourceGroup: identityResourceGroup, + subscriptionId, + }); + + if (existing.success && existing.clientId && existing.principalId && existing.tenantId) { + return { + clientId: existing.clientId, + principalId: existing.principalId, + tenantId: existing.tenantId, + isExisting: true, + }; + } + + if (!existing.success && !existing.notFound) { + throw new Error(existing.error ?? 'Failed to check for existing managed identity'); + } + + // Step 3: Create the identity + onStatusChange('creating-identity'); + const created = await createManagedIdentity({ + identityName, + resourceGroup: identityResourceGroup, + subscriptionId, + }); + if (!created.success || !created.clientId || !created.principalId || !created.tenantId) { + throw new Error(created.error ?? 'Failed to create managed identity'); + } + + return { + clientId: created.clientId, + principalId: created.principalId, + tenantId: created.tenantId, + isExisting: false, + }; +} diff --git a/plugins/aks-desktop/src/utils/azure/identityWithRoles.test.ts b/plugins/aks-desktop/src/utils/azure/identityWithRoles.test.ts new file mode 100644 index 000000000..a06c86ba5 --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/identityWithRoles.test.ts @@ -0,0 +1,209 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +// @vitest-environment jsdom + +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +const mockResourceGroupExists = vi.fn(); +const mockGetResourceGroupLocation = vi.fn(); +const mockCreateResourceGroup = vi.fn(); +const mockGetManagedIdentity = vi.fn(); +const mockCreateManagedIdentity = vi.fn(); +const mockAssignRolesToIdentity = vi.fn(); +const mockGetManagedNamespaceResourceId = vi.fn(); + +vi.mock('./az-cli', () => ({ + resourceGroupExists: (...args: any[]) => mockResourceGroupExists(...args), + getResourceGroupLocation: (...args: any[]) => mockGetResourceGroupLocation(...args), + createResourceGroup: (...args: any[]) => mockCreateResourceGroup(...args), +})); + +vi.mock('./az-identity', () => ({ + getManagedIdentity: (...args: any[]) => mockGetManagedIdentity(...args), + createManagedIdentity: (...args: any[]) => mockCreateManagedIdentity(...args), + assignRolesToIdentity: (...args: any[]) => mockAssignRolesToIdentity(...args), + getManagedNamespaceResourceId: (...args: any[]) => mockGetManagedNamespaceResourceId(...args), + buildClusterScope: (sub: string, rg: string, cluster: string) => + `/subscriptions/${sub}/resourceGroups/${rg}/providers/Microsoft.ContainerService/managedClusters/${cluster}`, +})); + +vi.mock('./identitySetup', async () => { + const actual = await vi.importActual('./identitySetup'); + return actual; +}); + +vi.mock('./identityRoles', async () => { + const actual = await vi.importActual('./identityRoles'); + return actual; +}); + +import { ensureIdentityWithRoles, type EnsureIdentityWithRolesConfig } from './identityWithRoles'; + +const baseConfig: EnsureIdentityWithRolesConfig = { + subscriptionId: '12345678-1234-1234-1234-123456789abc', + resourceGroup: 'cluster-rg', + identityResourceGroup: 'identity-rg', + identityName: 'id-my-app-workload', + clusterName: 'my-cluster', + isManagedNamespace: false, + onStatusChange: vi.fn(), +}; + +function setupHappyPath() { + mockResourceGroupExists.mockResolvedValue({ exists: true }); + mockGetManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); +} + +describe('ensureIdentityWithRoles', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('returns identity after ensuring RG, identity, and roles (normal namespace)', async () => { + setupHappyPath(); + + const result = await ensureIdentityWithRoles(baseConfig); + + expect(result).toEqual({ + clientId: 'cid', + principalId: 'pid', + tenantId: 'tid', + isExisting: true, + }); + expect(mockAssignRolesToIdentity).toHaveBeenCalledWith( + expect.objectContaining({ principalId: 'pid' }) + ); + }); + + it('creates RG and identity when they do not exist', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: false }); + mockGetResourceGroupLocation.mockResolvedValue('eastus'); + mockCreateResourceGroup.mockResolvedValue({ success: true }); + mockGetManagedIdentity.mockResolvedValue({ success: false, notFound: true }); + mockCreateManagedIdentity.mockResolvedValue({ + success: true, + clientId: 'new-cid', + principalId: 'new-pid', + tenantId: 'new-tid', + }); + mockAssignRolesToIdentity.mockResolvedValue({ success: true, results: [] }); + + const result = await ensureIdentityWithRoles(baseConfig); + + expect(result.clientId).toBe('new-cid'); + expect(result.isExisting).toBe(false); + expect(mockCreateResourceGroup).toHaveBeenCalled(); + expect(mockCreateManagedIdentity).toHaveBeenCalled(); + }); + + it('calls getManagedNamespaceResourceId for managed namespaces', async () => { + setupHappyPath(); + mockGetManagedNamespaceResourceId.mockResolvedValue({ + success: true, + resourceId: '/subscriptions/sub/resourceGroups/rg/providers/.../managedNamespaces/my-ns', + }); + + await ensureIdentityWithRoles({ + ...baseConfig, + isManagedNamespace: true, + namespaceName: 'my-ns', + }); + + expect(mockGetManagedNamespaceResourceId).toHaveBeenCalledWith( + expect.objectContaining({ namespaceName: 'my-ns' }) + ); + // Roles should include MNS-scoped roles, not cluster-scoped + const roleCall = mockAssignRolesToIdentity.mock.calls[0][0]; + const roleNames = roleCall.roles.map((r: { role: string }) => r.role); + expect(roleNames).toContain('Azure Kubernetes Service RBAC Writer'); + expect(roleNames).toContain('Azure Kubernetes Service Namespace User'); + expect(roleNames).not.toContain('Azure Kubernetes Service Cluster User Role'); + }); + + it('throws when isManagedNamespace is true but namespaceName is missing', async () => { + await expect( + ensureIdentityWithRoles({ + ...baseConfig, + isManagedNamespace: true, + }) + ).rejects.toThrow('namespaceName is required when isManagedNamespace is true'); + + // Should fail before any Azure calls + expect(mockResourceGroupExists).not.toHaveBeenCalled(); + }); + + it('throws when managed namespace resource ID lookup fails', async () => { + setupHappyPath(); + mockGetManagedNamespaceResourceId.mockResolvedValue({ + success: false, + error: 'Namespace not found', + }); + + await expect( + ensureIdentityWithRoles({ + ...baseConfig, + isManagedNamespace: true, + namespaceName: 'bad-ns', + }) + ).rejects.toThrow('Namespace not found'); + }); + + it('throws with failed role details when role assignment fails', async () => { + setupHappyPath(); + mockAssignRolesToIdentity.mockResolvedValue({ + success: false, + results: [ + { role: 'AKS Cluster User', scope: '/sub', success: false, error: 'Forbidden' }, + { role: 'AcrPush', scope: '/acr', success: true }, + ], + }); + + await expect(ensureIdentityWithRoles(baseConfig)).rejects.toThrow( + 'Failed to assign roles: AKS Cluster User: Forbidden' + ); + }); + + it('includes ACR roles when acrResourceId is provided', async () => { + setupHappyPath(); + + await ensureIdentityWithRoles({ + ...baseConfig, + acrResourceId: '/subscriptions/sub/resourceGroups/rg/providers/.../registries/myacr', + }); + + const roleCall = mockAssignRolesToIdentity.mock.calls[0][0]; + const roleNames = roleCall.roles.map((r: { role: string }) => r.role); + expect(roleNames).toContain('AcrPush'); + expect(roleNames).toContain('Container Registry Tasks Contributor'); + }); + + it('reports status changes in correct sequence', async () => { + setupHappyPath(); + const onStatusChange = vi.fn(); + + await ensureIdentityWithRoles({ ...baseConfig, onStatusChange }); + + const calls = onStatusChange.mock.calls.map(c => c[0]); + expect(calls).toContain('creating-rg'); + expect(calls).toContain('checking'); + expect(calls).toContain('assigning-roles'); + // assigning-roles should come after identity setup statuses + const assignIdx = calls.indexOf('assigning-roles'); + expect(assignIdx).toBeGreaterThan(0); + }); + + it('throws when RG creation fails', async () => { + mockResourceGroupExists.mockResolvedValue({ exists: false }); + mockGetResourceGroupLocation.mockResolvedValue('eastus'); + mockCreateResourceGroup.mockResolvedValue({ success: false, error: 'Permission denied' }); + + await expect(ensureIdentityWithRoles(baseConfig)).rejects.toThrow('Permission denied'); + }); +}); diff --git a/plugins/aks-desktop/src/utils/azure/identityWithRoles.ts b/plugins/aks-desktop/src/utils/azure/identityWithRoles.ts new file mode 100644 index 000000000..7a0076c54 --- /dev/null +++ b/plugins/aks-desktop/src/utils/azure/identityWithRoles.ts @@ -0,0 +1,119 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { assignRolesToIdentity, getManagedNamespaceResourceId } from './az-identity'; +import { computeRequiredRoles } from './identityRoles'; +import { + ensureIdentityAndResourceGroup, + type IdentitySetupResult, + type IdentitySetupStatus, +} from './identitySetup'; + +export type RoleAssignmentStatus = IdentitySetupStatus | 'assigning-roles'; + +export interface EnsureIdentityWithRolesConfig { + subscriptionId: string; + resourceGroup: string; + identityResourceGroup: string; + identityName: string; + clusterName: string; + /** Full Azure resource ID of the ACR. Omit to skip ACR roles. */ + acrResourceId?: string; + /** Whether the target namespace is a managed namespace. Must be resolved before calling. */ + isManagedNamespace: boolean; + /** Name of the managed namespace (required if isManagedNamespace is true). */ + namespaceName?: string; + /** Whether Azure RBAC for Kubernetes is enabled on the cluster. */ + azureRbacEnabled?: boolean; + onStatusChange: (status: RoleAssignmentStatus) => void; +} + +/** + * Ensures a managed identity exists in the given resource group, + * computes the required Azure RBAC roles, and assigns them. + * + * This is the shared core used by both the Deploy Wizard (K8s federated credential) + * and the GitHub Pipeline (GitHub federated credential) flows. + */ +export async function ensureIdentityWithRoles( + config: EnsureIdentityWithRolesConfig +): Promise { + const { + subscriptionId, + resourceGroup, + identityResourceGroup, + identityName, + clusterName, + acrResourceId, + isManagedNamespace, + namespaceName, + azureRbacEnabled, + onStatusChange, + } = config; + + // Validate managed namespace config upfront + if (isManagedNamespace && !namespaceName) { + throw new Error('namespaceName is required when isManagedNamespace is true'); + } + + // Steps 1-3: Ensure RG + identity + const identity = await ensureIdentityAndResourceGroup({ + subscriptionId, + resourceGroup, + identityResourceGroup, + identityName, + onStatusChange, + }); + + // Step 4: Compute and assign required roles + onStatusChange('assigning-roles'); + + const roles = await (async () => { + if (isManagedNamespace) { + const nsResult = await getManagedNamespaceResourceId({ + clusterName, + resourceGroup, + namespaceName: namespaceName!, + subscriptionId, + }); + if (!nsResult.success || !nsResult.resourceId) { + throw new Error(nsResult.error ?? 'Failed to get managed namespace resource ID'); + } + return computeRequiredRoles({ + subscriptionId, + resourceGroup, + clusterName, + acrResourceId, + isManagedNamespace: true, + managedNamespaceResourceId: nsResult.resourceId, + }); + } + return computeRequiredRoles({ + subscriptionId, + resourceGroup, + clusterName, + acrResourceId, + isManagedNamespace: false, + azureRbacEnabled, + }); + })(); + + const roleResult = await assignRolesToIdentity({ + principalId: identity.principalId, + subscriptionId, + roles, + }); + + if (!roleResult.success) { + if (roleResult.error) { + throw new Error(`Failed to assign roles: ${roleResult.error}`); + } + const failedRoles = roleResult.results + .filter(r => !r.success) + .map(r => `${r.role}: ${r.error}`) + .join('; '); + throw new Error(`Failed to assign roles: ${failedRoles}`); + } + + return identity; +} diff --git a/plugins/aks-desktop/src/utils/kubernetes/k8sNames.ts b/plugins/aks-desktop/src/utils/kubernetes/k8sNames.ts new file mode 100644 index 000000000..65350765e --- /dev/null +++ b/plugins/aks-desktop/src/utils/kubernetes/k8sNames.ts @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +/** DNS-1123 label pattern: lowercase alphanumeric and hyphens, 1-63 chars. */ +export const K8S_DNS_LABEL_PATTERN = /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/; + +/** + * Sanitize a string for use as a Kubernetes label *value*. + * Allows alphanumeric, `.`, `_`, `-` (unlike normalizeK8sName which targets DNS-1123 names). + * Ensures the result starts and ends with an alphanumeric character (K8s label value rule) + * and returns a fallback if the sanitized result is empty. + */ +export function sanitizeLabelValue(value: string, fallback = 'app'): string { + const sanitized = value + .replace(/[^a-zA-Z0-9._-]/g, '') + .slice(0, 63) + .replace(/^[^a-zA-Z0-9]+/, '') + .replace(/[^a-zA-Z0-9]+$/, ''); + return sanitized || fallback; +} + +/** + * Sanitize a string to lowercase alphanumeric + hyphens with configurable max length. + * Used by both K8s DNS-1123 names (63 chars) and Azure identity names (128 chars). + */ +export function sanitizeDnsName(raw: string, maxLength = 63, fallback = 'app'): string { + return ( + raw + .toLowerCase() + .replace(/[^a-z0-9-]/g, '-') + .replace(/-{2,}/g, '-') + .replace(/^-+|-+$/g, '') + .slice(0, maxLength) + .replace(/-+$/g, '') || fallback + ); +} + +/** Normalize a string to DNS-1123 label constraints (lowercase alnum/`-`, max 63 chars). */ +export function normalizeK8sName(raw: string): string { + return sanitizeDnsName(raw); +} diff --git a/plugins/aks-desktop/src/utils/kubernetes/serviceAccountNames.ts b/plugins/aks-desktop/src/utils/kubernetes/serviceAccountNames.ts new file mode 100644 index 000000000..50b43cc4a --- /dev/null +++ b/plugins/aks-desktop/src/utils/kubernetes/serviceAccountNames.ts @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the Apache 2.0. + +import { normalizeK8sName } from './k8sNames'; + +/** + * Derives a Kubernetes ServiceAccount name from an application name. + * Normalizes to lowercase alphanumeric + hyphens, max 63 chars. + */ +export function getServiceAccountName(appName: string): string { + return normalizeK8sName(`${appName}-sa`) || 'app-sa'; +}