You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2026/06/27 01:30:45 UTC
(skywalking-horizon-ui) 12/18: i18n(profiling,logs): translate the new create-flow strings into all 8 locales
This is an automated email from the ASF dual-hosted git repository.
wu-sheng pushed a commit to branch refactor/decompose-large-files
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git
commit 17405adccd8fc9ea7c093b56968dd78b82c35922
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Sat Jun 27 01:35:40 2026 +0800
i18n(profiling,logs): translate the new create-flow strings into all 8 locales
Wrap the profiling create-modal notices/labels (network instance + process validation, async/pprof no-instance, eBPF no-process) and the log-popout "Copied" in t(), and add 18 keys to en/zh-CN/es/pt/ja/ko/de/fr. The four profiling views had no useI18n; added the standard setup matching sibling files.
---
apps/ui/src/i18n/locales/de.json | 20 +++++++++++++++++++-
apps/ui/src/i18n/locales/en.json | 20 +++++++++++++++++++-
apps/ui/src/i18n/locales/es.json | 20 +++++++++++++++++++-
apps/ui/src/i18n/locales/fr.json | 20 +++++++++++++++++++-
apps/ui/src/i18n/locales/ja.json | 20 +++++++++++++++++++-
apps/ui/src/i18n/locales/ko.json | 20 +++++++++++++++++++-
apps/ui/src/i18n/locales/pt.json | 20 +++++++++++++++++++-
apps/ui/src/i18n/locales/zh-CN.json | 20 +++++++++++++++++++-
.../layer/profiling/LayerAsyncProfilingView.vue | 4 +++-
.../layer/profiling/LayerNetworkProfilingView.vue | 22 ++++++++++++----------
.../layer/profiling/LayerPprofProfilingView.vue | 4 +++-
apps/ui/src/layer/profiling/NewEBPFTaskModal.vue | 7 +++++--
12 files changed, 175 insertions(+), 22 deletions(-)
diff --git a/apps/ui/src/i18n/locales/de.json b/apps/ui/src/i18n/locales/de.json
index d0c4389..bff323f 100644
--- a/apps/ui/src/i18n/locales/de.json
+++ b/apps/ui/src/i18n/locales/de.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n} nicht erreichbar",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "Erreichbarkeit jeder Admin-Funktion — der BFF sendet ein GET an den relativen REST-Pfad, den die Funktion tatsächlich aufruft, und meldet, ob er [...]
"Enable on OAP:": "Auf OAP aktivieren:",
- "{n}/{total} reachable": "{n}/{total} erreichbar"
+ "{n}/{total} reachable": "{n}/{total} erreichbar",
+ "Copied": "Kopiert",
+ "Processes": "Prozesse",
+ "Sampling rule": "Sampling-Regel",
+ "when 4xx": "bei 4xx",
+ "when 5xx": "bei 5xx",
+ "capture request": "Anfrage erfassen",
+ "capture response": "Antwort erfassen",
+ "Checking processes on this instance…": "Prozesse auf dieser Instanz werden geprüft…",
+ "Checking processes…": "Prozesse werden geprüft…",
+ "No instances available for this service": "Keine Instanzen für diesen Service verfügbar",
+ "This instance has no profilable processes": "Diese Instanz hat keine profilierbaren Prozesse",
+ "Create the network profile task": "Netzwerk-Profiling-Aufgabe erstellen",
+ "No instances available for this service — a network profile task cannot be created.": "Keine Instanzen für diesen Service verfügbar – es kann keine Netzwerk-Profiling-Aufgabe erstellt werden.",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "Diese Instanz hat keine profilierbaren Prozesse – es kann keine Netzwerkaufgabe erstellt werden (Netzwerk-Profiling benötigt einen von rover überwachten Prozess).",
+ "No instances available for this service — an async profiling task cannot be created.": "Keine Instanzen für diesen Service verfügbar – es kann keine asynchrone Profiling-Aufgabe erstellt werden.",
+ "No instances available for this service — a pprof task cannot be created.": "Keine Instanzen für diesen Service verfügbar – es kann keine pprof-Aufgabe erstellt werden.",
+ "OAP reports no profilable processes for this service.": "OAP meldet keine profilierbaren Prozesse für diesen Service.",
+ "OAP reports no profilable processes for this service": "OAP meldet keine profilierbaren Prozesse für diesen Service"
}
diff --git a/apps/ui/src/i18n/locales/en.json b/apps/ui/src/i18n/locales/en.json
index 10d1945..d772b8d 100644
--- a/apps/ui/src/i18n/locales/en.json
+++ b/apps/ui/src/i18n/locales/en.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n} unreachable",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is th [...]
"Enable on OAP:": "Enable on OAP:",
- "{n}/{total} reachable": "{n}/{total} reachable"
+ "{n}/{total} reachable": "{n}/{total} reachable",
+ "Copied": "Copied",
+ "Processes": "Processes",
+ "Sampling rule": "Sampling rule",
+ "when 4xx": "when 4xx",
+ "when 5xx": "when 5xx",
+ "capture request": "capture request",
+ "capture response": "capture response",
+ "Checking processes on this instance…": "Checking processes on this instance…",
+ "Checking processes…": "Checking processes…",
+ "No instances available for this service": "No instances available for this service",
+ "This instance has no profilable processes": "This instance has no profilable processes",
+ "Create the network profile task": "Create the network profile task",
+ "No instances available for this service — a network profile task cannot be created.": "No instances available for this service — a network profile task cannot be created.",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).",
+ "No instances available for this service — an async profiling task cannot be created.": "No instances available for this service — an async profiling task cannot be created.",
+ "No instances available for this service — a pprof task cannot be created.": "No instances available for this service — a pprof task cannot be created.",
+ "OAP reports no profilable processes for this service.": "OAP reports no profilable processes for this service.",
+ "OAP reports no profilable processes for this service": "OAP reports no profilable processes for this service"
}
diff --git a/apps/ui/src/i18n/locales/es.json b/apps/ui/src/i18n/locales/es.json
index 107a9f1..5117e2a 100644
--- a/apps/ui/src/i18n/locales/es.json
+++ b/apps/ui/src/i18n/locales/es.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n} inaccesible(s)",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "Accesibilidad de cada función de administración: el BFF hace un GET a la ruta REST relativa que la función realmente llama e informa si responde. [...]
"Enable on OAP:": "Activar en OAP:",
- "{n}/{total} reachable": "{n}/{total} accesibles"
+ "{n}/{total} reachable": "{n}/{total} accesibles",
+ "Copied": "Copiado",
+ "Processes": "Procesos",
+ "Sampling rule": "Regla de muestreo",
+ "when 4xx": "cuando 4xx",
+ "when 5xx": "cuando 5xx",
+ "capture request": "capturar solicitud",
+ "capture response": "capturar respuesta",
+ "Checking processes on this instance…": "Comprobando los procesos de esta instancia…",
+ "Checking processes…": "Comprobando procesos…",
+ "No instances available for this service": "No hay instancias disponibles para este servicio",
+ "This instance has no profilable processes": "Esta instancia no tiene procesos perfilables",
+ "Create the network profile task": "Crear la tarea de perfilado de red",
+ "No instances available for this service — a network profile task cannot be created.": "No hay instancias disponibles para este servicio: no se puede crear una tarea de perfilado de red.",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "Esta instancia no tiene procesos perfilables: no se puede crear una tarea de red (el perfilado de red necesita un proceso monitorizado por rover).",
+ "No instances available for this service — an async profiling task cannot be created.": "No hay instancias disponibles para este servicio: no se puede crear una tarea de perfilado asíncrono.",
+ "No instances available for this service — a pprof task cannot be created.": "No hay instancias disponibles para este servicio: no se puede crear una tarea de pprof.",
+ "OAP reports no profilable processes for this service.": "OAP informa de que no hay procesos perfilables para este servicio.",
+ "OAP reports no profilable processes for this service": "OAP informa de que no hay procesos perfilables para este servicio"
}
diff --git a/apps/ui/src/i18n/locales/fr.json b/apps/ui/src/i18n/locales/fr.json
index 518256d..4445a7e 100644
--- a/apps/ui/src/i18n/locales/fr.json
+++ b/apps/ui/src/i18n/locales/fr.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n} inaccessible(s)",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "Accessibilité de chaque fonctionnalité d'administration — le BFF envoie un GET sur le chemin REST relatif que la fonctionnalité appelle réellemen [...]
"Enable on OAP:": "Activer sur OAP :",
- "{n}/{total} reachable": "{n}/{total} accessibles"
+ "{n}/{total} reachable": "{n}/{total} accessibles",
+ "Copied": "Copié",
+ "Processes": "Processus",
+ "Sampling rule": "Règle d'échantillonnage",
+ "when 4xx": "si 4xx",
+ "when 5xx": "si 5xx",
+ "capture request": "capturer la requête",
+ "capture response": "capturer la réponse",
+ "Checking processes on this instance…": "Vérification des processus de cette instance…",
+ "Checking processes…": "Vérification des processus…",
+ "No instances available for this service": "Aucune instance disponible pour ce service",
+ "This instance has no profilable processes": "Cette instance n'a aucun processus profilable",
+ "Create the network profile task": "Créer la tâche de profilage réseau",
+ "No instances available for this service — a network profile task cannot be created.": "Aucune instance disponible pour ce service — impossible de créer une tâche de profilage réseau.",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "Cette instance n'a aucun processus profilable — impossible de créer une tâche réseau (le profilage réseau nécessite un processus surveillé par rover).",
+ "No instances available for this service — an async profiling task cannot be created.": "Aucune instance disponible pour ce service — impossible de créer une tâche de profilage asynchrone.",
+ "No instances available for this service — a pprof task cannot be created.": "Aucune instance disponible pour ce service — impossible de créer une tâche pprof.",
+ "OAP reports no profilable processes for this service.": "OAP signale qu'aucun processus profilable n'est disponible pour ce service.",
+ "OAP reports no profilable processes for this service": "OAP signale qu'aucun processus profilable n'est disponible pour ce service"
}
diff --git a/apps/ui/src/i18n/locales/ja.json b/apps/ui/src/i18n/locales/ja.json
index bcb8878..1b66010 100644
--- a/apps/ui/src/i18n/locales/ja.json
+++ b/apps/ui/src/i18n/locales/ja.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n} 件が到達不可",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "各管理機能の到達可能性 —— BFF は機能が実際に呼び出す相対 REST パスへ GET し、応答するかどうかを報告します。健全性は設定の有無ではなくライブプローブで判定されます。404 を返すパス(selector が無効、リネーム、またはフォークで欠落)は到達不可とみなされます。下の [...]
"Enable on OAP:": "OAP で有効化:",
- "{n}/{total} reachable": "{n}/{total} 件が到達可能"
+ "{n}/{total} reachable": "{n}/{total} 件が到達可能",
+ "Copied": "コピーしました",
+ "Processes": "プロセス",
+ "Sampling rule": "サンプリングルール",
+ "when 4xx": "4xx のとき",
+ "when 5xx": "5xx のとき",
+ "capture request": "リクエストをキャプチャ",
+ "capture response": "レスポンスをキャプチャ",
+ "Checking processes on this instance…": "このインスタンスのプロセスを確認しています…",
+ "Checking processes…": "プロセスを確認しています…",
+ "No instances available for this service": "このサービスには利用可能なインスタンスがありません",
+ "This instance has no profilable processes": "このインスタンスにはプロファイル可能なプロセスがありません",
+ "Create the network profile task": "ネットワークプロファイルタスクを作成",
+ "No instances available for this service — a network profile task cannot be created.": "このサービスには利用可能なインスタンスがありません — ネットワークプロファイルタスクを作成できません。",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "このインスタンスにはプロファイル可能なプロセスがありません — ネットワークタスクを作成できません(ネットワークプロファイリングには rover で監視されるプロセスが必要です)。",
+ "No instances available for this service — an async profiling task cannot be created.": "このサービスには利用可能なインスタンスがありません — 非同期プロファイリングタスクを作成できません。",
+ "No instances available for this service — a pprof task cannot be created.": "このサービスには利用可能なインスタンスがありません — pprof タスクを作成できません。",
+ "OAP reports no profilable processes for this service.": "OAP はこのサービスにプロファイル可能なプロセスがないと報告しています。",
+ "OAP reports no profilable processes for this service": "OAP はこのサービスにプロファイル可能なプロセスがないと報告しています"
}
diff --git a/apps/ui/src/i18n/locales/ko.json b/apps/ui/src/i18n/locales/ko.json
index 680a3a9..74f28bb 100644
--- a/apps/ui/src/i18n/locales/ko.json
+++ b/apps/ui/src/i18n/locales/ko.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n}개 도달 불가",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "각 관리 기능의 도달 가능성 — BFF가 해당 기능이 실제로 호출하는 상대 REST 경로로 GET 요청을 보내 응답 여부를 보고합니다. 상태는 설정 존재 여부가 아니라 실시간 프로브로 판단합니다. 404를 반환하는 경로(selector 꺼짐, 이름 변경 또는 [...]
"Enable on OAP:": "OAP에서 활성화:",
- "{n}/{total} reachable": "{n}/{total}개 도달 가능"
+ "{n}/{total} reachable": "{n}/{total}개 도달 가능",
+ "Copied": "복사됨",
+ "Processes": "프로세스",
+ "Sampling rule": "샘플링 규칙",
+ "when 4xx": "4xx일 때",
+ "when 5xx": "5xx일 때",
+ "capture request": "요청 캡처",
+ "capture response": "응답 캡처",
+ "Checking processes on this instance…": "이 인스턴스의 프로세스를 확인하는 중…",
+ "Checking processes…": "프로세스를 확인하는 중…",
+ "No instances available for this service": "이 서비스에 사용할 수 있는 인스턴스가 없습니다",
+ "This instance has no profilable processes": "이 인스턴스에는 프로파일링 가능한 프로세스가 없습니다",
+ "Create the network profile task": "네트워크 프로파일 작업 생성",
+ "No instances available for this service — a network profile task cannot be created.": "이 서비스에 사용할 수 있는 인스턴스가 없습니다 — 네트워크 프로파일 작업을 생성할 수 없습니다.",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "이 인스턴스에는 프로파일링 가능한 프로세스가 없습니다 — 네트워크 작업을 생성할 수 없습니다(네트워크 프로파일링에는 rover가 모니터링하는 프로세스가 필요합니다).",
+ "No instances available for this service — an async profiling task cannot be created.": "이 서비스에 사용할 수 있는 인스턴스가 없습니다 — 비동기 프로파일링 작업을 생성할 수 없습니다.",
+ "No instances available for this service — a pprof task cannot be created.": "이 서비스에 사용할 수 있는 인스턴스가 없습니다 — pprof 작업을 생성할 수 없습니다.",
+ "OAP reports no profilable processes for this service.": "OAP가 이 서비스에 프로파일링 가능한 프로세스가 없다고 보고합니다.",
+ "OAP reports no profilable processes for this service": "OAP가 이 서비스에 프로파일링 가능한 프로세스가 없다고 보고합니다"
}
diff --git a/apps/ui/src/i18n/locales/pt.json b/apps/ui/src/i18n/locales/pt.json
index 8305b7f..5834829 100644
--- a/apps/ui/src/i18n/locales/pt.json
+++ b/apps/ui/src/i18n/locales/pt.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n} inacessível(is)",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "Acessibilidade de cada recurso de administração: o BFF faz um GET no caminho REST relativo que o recurso realmente chama e informa se ele respond [...]
"Enable on OAP:": "Ativar no OAP:",
- "{n}/{total} reachable": "{n}/{total} acessíveis"
+ "{n}/{total} reachable": "{n}/{total} acessíveis",
+ "Copied": "Copiado",
+ "Processes": "Processos",
+ "Sampling rule": "Regra de amostragem",
+ "when 4xx": "quando 4xx",
+ "when 5xx": "quando 5xx",
+ "capture request": "capturar requisição",
+ "capture response": "capturar resposta",
+ "Checking processes on this instance…": "Verificando os processos desta instância…",
+ "Checking processes…": "Verificando processos…",
+ "No instances available for this service": "Nenhuma instância disponível para este serviço",
+ "This instance has no profilable processes": "Esta instância não tem processos analisáveis",
+ "Create the network profile task": "Criar a tarefa de perfilamento de rede",
+ "No instances available for this service — a network profile task cannot be created.": "Nenhuma instância disponível para este serviço — não é possível criar uma tarefa de perfilamento de rede.",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "Esta instância não tem processos analisáveis — não é possível criar uma tarefa de rede (o perfilamento de rede precisa de um processo monitorado pelo rover).",
+ "No instances available for this service — an async profiling task cannot be created.": "Nenhuma instância disponível para este serviço — não é possível criar uma tarefa de perfilamento assíncrono.",
+ "No instances available for this service — a pprof task cannot be created.": "Nenhuma instância disponível para este serviço — não é possível criar uma tarefa de pprof.",
+ "OAP reports no profilable processes for this service.": "O OAP informa que não há processos analisáveis para este serviço.",
+ "OAP reports no profilable processes for this service": "O OAP informa que não há processos analisáveis para este serviço"
}
diff --git a/apps/ui/src/i18n/locales/zh-CN.json b/apps/ui/src/i18n/locales/zh-CN.json
index 2eb38b0..5a3f108 100644
--- a/apps/ui/src/i18n/locales/zh-CN.json
+++ b/apps/ui/src/i18n/locales/zh-CN.json
@@ -1549,5 +1549,23 @@
"{n} unreachable": "{n} 个不可达",
"Reachability of each admin feature — the BFF GETs the relative REST path the feature actually calls and reports whether it responds. Health is the live probe, not config-presence: a path that 404s (selector off, renamed, or absent in a fork) reads as unreachable. 'selector detected' below is only an upstream-release hint, not the verdict.": "每个管理功能的可达性 —— BFF 会向该功能实际调用的相对 REST 路径发起 GET,并报告其是否响应。健康状态取决于实时探测,而非配置存在性:返回 404 的路径(selector 关闭、被重命名或在 fork 版本中缺失)将被视为不可达。下方的“检测到 selector”仅为上游发 [...]
"Enable on OAP:": "在 OAP 上启用:",
- "{n}/{total} reachable": "{n}/{total} 个可达"
+ "{n}/{total} reachable": "{n}/{total} 个可达",
+ "Copied": "已复制",
+ "Processes": "进程",
+ "Sampling rule": "采样规则",
+ "when 4xx": "命中 4xx 时",
+ "when 5xx": "命中 5xx 时",
+ "capture request": "捕获请求",
+ "capture response": "捕获响应",
+ "Checking processes on this instance…": "正在检查该实例上的进程…",
+ "Checking processes…": "正在检查进程…",
+ "No instances available for this service": "该服务没有可用的实例",
+ "This instance has no profilable processes": "该实例没有可分析的进程",
+ "Create the network profile task": "创建网络剖析任务",
+ "No instances available for this service — a network profile task cannot be created.": "该服务没有可用的实例 —— 无法创建网络剖析任务。",
+ "This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).": "该实例没有可分析的进程 —— 无法创建网络任务(网络剖析需要由 rover 监控的进程)。",
+ "No instances available for this service — an async profiling task cannot be created.": "该服务没有可用的实例 —— 无法创建异步剖析任务。",
+ "No instances available for this service — a pprof task cannot be created.": "该服务没有可用的实例 —— 无法创建 pprof 任务。",
+ "OAP reports no profilable processes for this service.": "OAP 报告该服务没有可分析的进程。",
+ "OAP reports no profilable processes for this service": "OAP 报告该服务没有可分析的进程"
}
diff --git a/apps/ui/src/layer/profiling/LayerAsyncProfilingView.vue b/apps/ui/src/layer/profiling/LayerAsyncProfilingView.vue
index fdbb22a..01c6f17 100644
--- a/apps/ui/src/layer/profiling/LayerAsyncProfilingView.vue
+++ b/apps/ui/src/layer/profiling/LayerAsyncProfilingView.vue
@@ -25,6 +25,7 @@
-->
<script setup lang="ts">
import { computed, reactive, ref, watch } from 'vue';
+import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router';
import { useLayerInstances } from '@/layer/useLayerInstances';
import { useLayerServices } from '@/layer/useLayerServices';
@@ -42,6 +43,7 @@ import AsyncProfilingTaskDetailModal from '@/layer/profiling/AsyncProfilingTaskD
import { useNewTaskPoll } from '@/layer/profiling/useNewTaskPoll';
import Icon from '@/components/icons/Icon.vue';
+const { t } = useI18n();
const route = useRoute();
const layerKey = computed(() => String(route.params.layerKey ?? ''));
const { selectedId: serviceId } = useSelectedService();
@@ -354,7 +356,7 @@ function instanceName(id: string): string {
:class="{ on: newTask.instances.includes(i.id) }"
@click="toggleInstance(i.id, 'new')"
>{{ i.name }}</button>
- <span v-if="!instances.instances.value.length" class="muted">No instances available for this service — an async profiling task cannot be created.</span>
+ <span v-if="!instances.instances.value.length" class="muted">{{ t('No instances available for this service — an async profiling task cannot be created.') }}</span>
</div>
</div>
<div class="field-row">
diff --git a/apps/ui/src/layer/profiling/LayerNetworkProfilingView.vue b/apps/ui/src/layer/profiling/LayerNetworkProfilingView.vue
index 91bae2e..c29a047 100644
--- a/apps/ui/src/layer/profiling/LayerNetworkProfilingView.vue
+++ b/apps/ui/src/layer/profiling/LayerNetworkProfilingView.vue
@@ -32,6 +32,7 @@
-->
<script setup lang="ts">
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';
+import { useI18n } from 'vue-i18n';
import { useEscapeToClose } from '@/components/primitives/useEscapeToClose';
import { useRoute } from 'vue-router';
import { useLayerInstances } from '@/layer/useLayerInstances';
@@ -52,6 +53,7 @@ import TimeChart from '@/components/charts/TimeChart.vue';
import { useNewTaskPoll } from '@/layer/profiling/useNewTaskPoll';
import Icon from '@/components/icons/Icon.vue';
+const { t } = useI18n();
const route = useRoute();
const layerKey = computed(() => String(route.params.layerKey ?? ''));
// Preview-only: forward the draft `processTopology` block so a clicked
@@ -479,15 +481,15 @@ function fmtTime(ms: number): string {
</select>
</div>
<div v-if="!instances.instances.value.length" class="banner err">
- No instances available for this service — a network profile task cannot be created.
+ {{ t('No instances available for this service — a network profile task cannot be created.') }}
</div>
<template v-else-if="selectedInstanceId">
- <div v-if="processesLoading" class="hint">Checking processes on this instance…</div>
+ <div v-if="processesLoading" class="hint">{{ t('Checking processes on this instance…') }}</div>
<div v-else-if="!networkProcesses.length" class="banner err">
- This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).
+ {{ t('This instance has no profilable processes — a network task cannot be created (network profiling needs a rover-monitored process).') }}
</div>
<div v-else class="proc-list">
- <span class="proc-list-label">Processes ({{ networkProcesses.length }})</span>
+ <span class="proc-list-label">{{ t('Processes') }} ({{ networkProcesses.length }})</span>
<span v-for="p in networkProcesses" :key="p.id" class="proc-chip">{{ p.name }}</span>
</div>
</template>
@@ -497,7 +499,7 @@ function fmtTime(ms: number): string {
</p>
<div v-for="(s, i) in samplings" :key="i" class="sampling">
<div class="sampling-head">
- <strong>Sampling rule {{ i + 1 }}</strong>
+ <strong>{{ t('Sampling rule') }} {{ i + 1 }}</strong>
<button
v-if="samplings.length > 1"
class="del"
@@ -516,10 +518,10 @@ function fmtTime(ms: number): string {
</div>
</div>
<div class="check-row">
- <label class="cb"><input type="checkbox" v-model="s.when4xx" /> when 4xx</label>
- <label class="cb"><input type="checkbox" v-model="s.when5xx" /> when 5xx</label>
- <label class="cb"><input type="checkbox" v-model="s.settings.requireCompleteRequest" /> capture request</label>
- <label class="cb"><input type="checkbox" v-model="s.settings.requireCompleteResponse" /> capture response</label>
+ <label class="cb"><input type="checkbox" v-model="s.when4xx" /> {{ t('when 4xx') }}</label>
+ <label class="cb"><input type="checkbox" v-model="s.when5xx" /> {{ t('when 5xx') }}</label>
+ <label class="cb"><input type="checkbox" v-model="s.settings.requireCompleteRequest" /> {{ t('capture request') }}</label>
+ <label class="cb"><input type="checkbox" v-model="s.settings.requireCompleteResponse" /> {{ t('capture response') }}</label>
</div>
</div>
<button class="btn-secondary" type="button" @click="addSampling">+ add another sampling rule</button>
@@ -530,7 +532,7 @@ function fmtTime(ms: number): string {
<button
class="btn-primary"
:disabled="!selectedInstanceId || processesLoading || !networkProcesses.length"
- :title="!selectedInstanceId ? 'No instances available for this service' : processesLoading ? 'Checking processes…' : !networkProcesses.length ? 'This instance has no profilable processes' : 'Create the network profile task'"
+ :title="!selectedInstanceId ? t('No instances available for this service') : processesLoading ? t('Checking processes…') : !networkProcesses.length ? t('This instance has no profilable processes') : t('Create the network profile task')"
@click="submitNewTask"
>Create task</button>
</div>
diff --git a/apps/ui/src/layer/profiling/LayerPprofProfilingView.vue b/apps/ui/src/layer/profiling/LayerPprofProfilingView.vue
index 0a3a4ce..0259bac 100644
--- a/apps/ui/src/layer/profiling/LayerPprofProfilingView.vue
+++ b/apps/ui/src/layer/profiling/LayerPprofProfilingView.vue
@@ -25,6 +25,7 @@
-->
<script setup lang="ts">
import { computed, reactive, ref, watch } from 'vue';
+import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router';
import { useLayerInstances } from '@/layer/useLayerInstances';
import { useLayerServices } from '@/layer/useLayerServices';
@@ -41,6 +42,7 @@ import PprofTaskDetailModal from '@/layer/profiling/PprofTaskDetailModal.vue';
import { useNewTaskPoll } from '@/layer/profiling/useNewTaskPoll';
import Icon from '@/components/icons/Icon.vue';
+const { t } = useI18n();
const route = useRoute();
const layerKey = computed(() => String(route.params.layerKey ?? ''));
const { selectedId: serviceId } = useSelectedService();
@@ -322,7 +324,7 @@ function instanceName(id: string): string {
:class="{ on: newTask.instances.includes(i.id) }"
@click="toggleInstance(i.id, 'new')"
>{{ i.name }}</button>
- <span v-if="!instances.instances.value.length" class="muted">No instances available for this service — a pprof task cannot be created.</span>
+ <span v-if="!instances.instances.value.length" class="muted">{{ t('No instances available for this service — a pprof task cannot be created.') }}</span>
</div>
</div>
<div class="field">
diff --git a/apps/ui/src/layer/profiling/NewEBPFTaskModal.vue b/apps/ui/src/layer/profiling/NewEBPFTaskModal.vue
index 220d59e..63dd9b2 100644
--- a/apps/ui/src/layer/profiling/NewEBPFTaskModal.vue
+++ b/apps/ui/src/layer/profiling/NewEBPFTaskModal.vue
@@ -23,6 +23,7 @@
-->
<script setup lang="ts">
import { reactive, watch } from 'vue';
+import { useI18n } from 'vue-i18n';
import { useEscapeToClose } from '@/components/primitives/useEscapeToClose';
import type { EBPFTargetType } from '@/api/client';
import type { NewEBPFTaskPayload } from '@/layer/profiling/useEBPFProfiling';
@@ -39,6 +40,8 @@ const emit = defineEmits<{
(e: 'submit', payload: NewEBPFTaskPayload): void;
}>();
+const { t } = useI18n();
+
const newTask = reactive({
labels: [] as string[],
targetType: 'ON_CPU' as EBPFTargetType,
@@ -93,7 +96,7 @@ function submit(): void {
</div>
<div class="dlg-body">
<div v-if="!couldProfiling" class="dlg-warn">
- <strong>OAP reports no profilable processes for this service.</strong>
+ <strong>{{ t('OAP reports no profilable processes for this service.') }}</strong>
<span>A new task can't run until OAP sees an eBPF-profilable process. Check that:</span>
<ul>
<li>instances are running and instrumented;</li>
@@ -155,7 +158,7 @@ function submit(): void {
<button
class="btn-primary"
:disabled="!couldProfiling"
- :title="couldProfiling ? '' : 'OAP reports no profilable processes for this service'"
+ :title="couldProfiling ? '' : t('OAP reports no profilable processes for this service')"
@click="submit"
>Create task</button>
</div>