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 <[email protected]>
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>

Reply via email to