mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
translations
This commit is contained in:
parent
8eec97af25
commit
f5b97baac4
17 changed files with 392 additions and 16 deletions
24
src/i18n/locales/ca/package_manager.json
Normal file
24
src/i18n/locales/ca/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modes",
|
||||
"mcp_servers": "Servidors MCP",
|
||||
"prompts": "Prompts",
|
||||
"packages": "Paquets",
|
||||
"generic_type": "{{type}}s",
|
||||
"match": "coincidència"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Mode",
|
||||
"type_mcp_server": "Servidor MCP",
|
||||
"type_prompt": "Prompt",
|
||||
"type_package": "Paquet",
|
||||
"type_other": "Altres",
|
||||
"by_author": "per {{author}}",
|
||||
"remove_tag_filter": "Eliminar filtre d'etiqueta: {{tag}}",
|
||||
"filter_by_tag": "Filtrar per etiqueta: {{tag}}",
|
||||
"component_details": "Detalls del component",
|
||||
"match_count": "{{count}} coincidènci{{count !== 1 ? 'es' : 'a'}}",
|
||||
"view": "Veure",
|
||||
"source": "Font"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/de/package_manager.json
Normal file
24
src/i18n/locales/de/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modi",
|
||||
"mcp_servers": "MCP-Server",
|
||||
"prompts": "Prompts",
|
||||
"packages": "Pakete",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "Treffer"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Modus",
|
||||
"type_mcp_server": "MCP-Server",
|
||||
"type_prompt": "Prompt",
|
||||
"type_package": "Paket",
|
||||
"type_other": "Sonstiges",
|
||||
"by_author": "von {{author}}",
|
||||
"remove_tag_filter": "Tag-Filter entfernen: {{tag}}",
|
||||
"filter_by_tag": "Nach Tag filtern: {{tag}}",
|
||||
"component_details": "Komponentendetails",
|
||||
"match_count": "{{count}} Treffer",
|
||||
"view": "Ansehen",
|
||||
"source": "Quelle"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/en/package_manager.json
Normal file
24
src/i18n/locales/en/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modes",
|
||||
"mcp_servers": "MCP Servers",
|
||||
"prompts": "Prompts",
|
||||
"packages": "Packages",
|
||||
"generic_type": "{{type}}s",
|
||||
"match": "match"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Mode",
|
||||
"type_mcp_server": "MCP Server",
|
||||
"type_prompt": "Prompt",
|
||||
"type_package": "Package",
|
||||
"type_other": "Other",
|
||||
"by_author": "by {{author}}",
|
||||
"remove_tag_filter": "Remove tag filter: {{tag}}",
|
||||
"filter_by_tag": "Filter by tag: {{tag}}",
|
||||
"component_details": "Component Details",
|
||||
"match_count": "{{count}} match{{count !== 1 ? 'es' : ''}}",
|
||||
"view": "View",
|
||||
"source": "Source"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/es/package_manager.json
Normal file
24
src/i18n/locales/es/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modos",
|
||||
"mcp_servers": "Servidores MCP",
|
||||
"prompts": "Prompts",
|
||||
"packages": "Paquetes",
|
||||
"generic_type": "{{type}}s",
|
||||
"match": "coincide"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Modo",
|
||||
"type_mcp_server": "Servidor MCP",
|
||||
"type_prompt": "Prompt",
|
||||
"type_package": "Paquete",
|
||||
"type_other": "Otro",
|
||||
"by_author": "por {{author}}",
|
||||
"remove_tag_filter": "Eliminar filtro de etiqueta: {{tag}}",
|
||||
"filter_by_tag": "Filtrar por etiqueta: {{tag}}",
|
||||
"component_details": "Detalles del Componente",
|
||||
"match_count": "{{count}} coincidencia{{count !== 1 ? 's' : ''}}",
|
||||
"view": "Ver",
|
||||
"source": "Fuente"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/fr/package_manager.json
Normal file
24
src/i18n/locales/fr/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modes",
|
||||
"mcp_servers": "Serveurs MCP",
|
||||
"prompts": "Prompts",
|
||||
"packages": "Paquets",
|
||||
"generic_type": "{{type}}s",
|
||||
"match": "correspondance"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Mode",
|
||||
"type_mcp_server": "Serveur MCP",
|
||||
"type_prompt": "Prompt",
|
||||
"type_package": "Paquet",
|
||||
"type_other": "Autre",
|
||||
"by_author": "par {{author}}",
|
||||
"remove_tag_filter": "Supprimer le filtre de tag : {{tag}}",
|
||||
"filter_by_tag": "Filtrer par tag : {{tag}}",
|
||||
"component_details": "Détails du composant",
|
||||
"match_count": "{{count}} correspondance{{count !== 1 ? 's' : ''}}",
|
||||
"view": "Voir",
|
||||
"source": "Source"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/hi/package_manager.json
Normal file
24
src/i18n/locales/hi/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "मोड",
|
||||
"mcp_servers": "एमसीपी सर्वर",
|
||||
"prompts": "प्रॉम्प्ट्स",
|
||||
"packages": "पैकेज",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "मिलान"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "मोड",
|
||||
"type_mcp_server": "एमसीपी सर्वर",
|
||||
"type_prompt": "प्रॉम्प्ट",
|
||||
"type_package": "पैकेज",
|
||||
"type_other": "अन्य",
|
||||
"by_author": "लेखक: {{author}}",
|
||||
"remove_tag_filter": "टैग फ़िल्टर हटाएं: {{tag}}",
|
||||
"filter_by_tag": "टैग से फ़िल्टर करें: {{tag}}",
|
||||
"component_details": "कंपोनेंट विवरण",
|
||||
"match_count": "{{count}} मिलान",
|
||||
"view": "देखें",
|
||||
"source": "स्रोत"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/it/package_manager.json
Normal file
24
src/i18n/locales/it/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modalità",
|
||||
"mcp_servers": "Server MCP",
|
||||
"prompts": "Prompt",
|
||||
"packages": "Pacchetti",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "corrispondenza"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Modalità",
|
||||
"type_mcp_server": "Server MCP",
|
||||
"type_prompt": "Prompt",
|
||||
"type_package": "Pacchetto",
|
||||
"type_other": "Altro",
|
||||
"by_author": "di {{author}}",
|
||||
"remove_tag_filter": "Rimuovi filtro tag: {{tag}}",
|
||||
"filter_by_tag": "Filtra per tag: {{tag}}",
|
||||
"component_details": "Dettagli componente",
|
||||
"match_count": "{{count}} corrispondenza{{count !== 1 ? 'e' : ''}}",
|
||||
"view": "Visualizza",
|
||||
"source": "Sorgente"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/ja/package_manager.json
Normal file
24
src/i18n/locales/ja/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "モード",
|
||||
"mcp_servers": "MCPサーバー",
|
||||
"prompts": "プロンプト",
|
||||
"packages": "パッケージ",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "一致"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "モード",
|
||||
"type_mcp_server": "MCPサーバー",
|
||||
"type_prompt": "プロンプト",
|
||||
"type_package": "パッケージ",
|
||||
"type_other": "その他",
|
||||
"by_author": "作成者:{{author}}",
|
||||
"remove_tag_filter": "タグフィルターを削除:{{tag}}",
|
||||
"filter_by_tag": "タグでフィルター:{{tag}}",
|
||||
"component_details": "コンポーネントの詳細",
|
||||
"match_count": "{{count}}件の一致",
|
||||
"view": "表示",
|
||||
"source": "ソース"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/ko/package_manager.json
Normal file
24
src/i18n/locales/ko/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "모드",
|
||||
"mcp_servers": "MCP 서버",
|
||||
"prompts": "프롬프트",
|
||||
"packages": "패키지",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "일치"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "모드",
|
||||
"type_mcp_server": "MCP 서버",
|
||||
"type_prompt": "프롬프트",
|
||||
"type_package": "패키지",
|
||||
"type_other": "기타",
|
||||
"by_author": "작성자: {{author}}",
|
||||
"remove_tag_filter": "태그 필터 제거: {{tag}}",
|
||||
"filter_by_tag": "태그로 필터링: {{tag}}",
|
||||
"component_details": "컴포넌트 상세정보",
|
||||
"match_count": "{{count}}개 일치",
|
||||
"view": "보기",
|
||||
"source": "소스"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/pl/package_manager.json
Normal file
24
src/i18n/locales/pl/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Tryby",
|
||||
"mcp_servers": "Serwery MCP",
|
||||
"prompts": "Podpowiedzi",
|
||||
"packages": "Pakiety",
|
||||
"generic_type": "{{type}}y",
|
||||
"match": "dopasowanie"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Tryb",
|
||||
"type_mcp_server": "Serwer MCP",
|
||||
"type_prompt": "Podpowiedź",
|
||||
"type_package": "Pakiet",
|
||||
"type_other": "Inne",
|
||||
"by_author": "autor: {{author}}",
|
||||
"remove_tag_filter": "Usuń filtr tagu: {{tag}}",
|
||||
"filter_by_tag": "Filtruj po tagu: {{tag}}",
|
||||
"component_details": "Szczegóły komponentu",
|
||||
"match_count": "{{count}} dopasowani{{count === 1 ? 'e' : count < 5 ? 'a' : 'ń'}}",
|
||||
"view": "Pokaż",
|
||||
"source": "Źródło"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/pt-BR/package_manager.json
Normal file
24
src/i18n/locales/pt-BR/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modos",
|
||||
"mcp_servers": "Servidores MCP",
|
||||
"prompts": "Prompts",
|
||||
"packages": "Pacotes",
|
||||
"generic_type": "{{type}}s",
|
||||
"match": "correspondência"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Modo",
|
||||
"type_mcp_server": "Servidor MCP",
|
||||
"type_prompt": "Prompt",
|
||||
"type_package": "Pacote",
|
||||
"type_other": "Outro",
|
||||
"by_author": "por {{author}}",
|
||||
"remove_tag_filter": "Remover filtro de tag: {{tag}}",
|
||||
"filter_by_tag": "Filtrar por tag: {{tag}}",
|
||||
"component_details": "Detalhes do Componente",
|
||||
"match_count": "{{count}} correspondência{{count !== 1 ? 's' : ''}}",
|
||||
"view": "Visualizar",
|
||||
"source": "Fonte"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/tr/package_manager.json
Normal file
24
src/i18n/locales/tr/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Modlar",
|
||||
"mcp_servers": "MCP Sunucuları",
|
||||
"prompts": "Komutlar",
|
||||
"packages": "Paketler",
|
||||
"generic_type": "{{type}}lar",
|
||||
"match": "eşleşme"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Mod",
|
||||
"type_mcp_server": "MCP Sunucusu",
|
||||
"type_prompt": "Komut",
|
||||
"type_package": "Paket",
|
||||
"type_other": "Diğer",
|
||||
"by_author": "yazar: {{author}}",
|
||||
"remove_tag_filter": "Etiket filtresini kaldır: {{tag}}",
|
||||
"filter_by_tag": "Etikete göre filtrele: {{tag}}",
|
||||
"component_details": "Bileşen Detayları",
|
||||
"match_count": "{{count}} eşleşme",
|
||||
"view": "Görüntüle",
|
||||
"source": "Kaynak"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/vi/package_manager.json
Normal file
24
src/i18n/locales/vi/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "Chế độ",
|
||||
"mcp_servers": "Máy chủ MCP",
|
||||
"prompts": "Gợi ý",
|
||||
"packages": "Gói",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "phù hợp"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "Chế độ",
|
||||
"type_mcp_server": "Máy chủ MCP",
|
||||
"type_prompt": "Gợi ý",
|
||||
"type_package": "Gói",
|
||||
"type_other": "Khác",
|
||||
"by_author": "bởi {{author}}",
|
||||
"remove_tag_filter": "Xóa bộ lọc thẻ: {{tag}}",
|
||||
"filter_by_tag": "Lọc theo thẻ: {{tag}}",
|
||||
"component_details": "Chi tiết thành phần",
|
||||
"match_count": "{{count}} kết quả phù hợp",
|
||||
"view": "Xem",
|
||||
"source": "Nguồn"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/zh-CN/package_manager.json
Normal file
24
src/i18n/locales/zh-CN/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "模式",
|
||||
"mcp_servers": "MCP服务器",
|
||||
"prompts": "提示",
|
||||
"packages": "包",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "匹配"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "模式",
|
||||
"type_mcp_server": "MCP服务器",
|
||||
"type_prompt": "提示",
|
||||
"type_package": "包",
|
||||
"type_other": "其他",
|
||||
"by_author": "作者:{{author}}",
|
||||
"remove_tag_filter": "移除标签过滤器:{{tag}}",
|
||||
"filter_by_tag": "按标签过滤:{{tag}}",
|
||||
"component_details": "组件详情",
|
||||
"match_count": "{{count}}个匹配",
|
||||
"view": "查看",
|
||||
"source": "源码"
|
||||
}
|
||||
}
|
||||
24
src/i18n/locales/zh-TW/package_manager.json
Normal file
24
src/i18n/locales/zh-TW/package_manager.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type_group": {
|
||||
"modes": "模式",
|
||||
"mcp_servers": "MCP伺服器",
|
||||
"prompts": "提示",
|
||||
"packages": "套件",
|
||||
"generic_type": "{{type}}",
|
||||
"match": "符合"
|
||||
},
|
||||
"item_card": {
|
||||
"type_mode": "模式",
|
||||
"type_mcp_server": "MCP伺服器",
|
||||
"type_prompt": "提示",
|
||||
"type_package": "套件",
|
||||
"type_other": "其他",
|
||||
"by_author": "作者:{{author}}",
|
||||
"remove_tag_filter": "移除標籤篩選:{{tag}}",
|
||||
"filter_by_tag": "依標籤篩選:{{tag}}",
|
||||
"component_details": "元件詳細資訊",
|
||||
"match_count": "{{count}}個符合",
|
||||
"view": "檢視",
|
||||
"source": "原始碼"
|
||||
}
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ import { groupItemsByType, GroupedItems } from "../utils/grouping"
|
|||
import { ExpandableSection } from "./ExpandableSection"
|
||||
import { TypeGroup } from "./TypeGroup"
|
||||
import { ViewState } from "../PackageManagerViewStateManager"
|
||||
import { t } from "../../../../../src/i18n"
|
||||
|
||||
interface PackageManagerItemCardProps {
|
||||
item: PackageManagerItem
|
||||
|
|
@ -34,15 +35,15 @@ export const PackageManagerItemCard: React.FC<PackageManagerItemCardProps> = ({
|
|||
const getTypeLabel = (type: string) => {
|
||||
switch (type) {
|
||||
case "mode":
|
||||
return "Mode"
|
||||
return t("package_manager:item_card.type_mode")
|
||||
case "mcp server":
|
||||
return "MCP Server"
|
||||
return t("package_manager:item_card.type_mcp_server")
|
||||
case "prompt":
|
||||
return "Prompt"
|
||||
return t("package_manager:item_card.type_prompt")
|
||||
case "package":
|
||||
return "Package"
|
||||
return t("package_manager:item_card.type_package")
|
||||
default:
|
||||
return "Other"
|
||||
return t("package_manager:item_card.type_other")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +95,11 @@ export const PackageManagerItemCard: React.FC<PackageManagerItemCardProps> = ({
|
|||
<div className="flex justify-between items-start">
|
||||
<div>
|
||||
<h3 className="text-lg font-semibold text-vscode-foreground">{item.name}</h3>
|
||||
{item.author && <p className="text-sm text-vscode-descriptionForeground">{`by ${item.author}`}</p>}
|
||||
{item.author && (
|
||||
<p className="text-sm text-vscode-descriptionForeground">
|
||||
{t("package_manager:item_card.by_author", { author: item.author })}
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
<span className={`px-2 py-1 text-xs text-white rounded-full ${getTypeColor(item.type)}`}>
|
||||
{getTypeLabel(item.type)}
|
||||
|
|
@ -127,7 +132,11 @@ export const PackageManagerItemCard: React.FC<PackageManagerItemCardProps> = ({
|
|||
}
|
||||
}
|
||||
}}
|
||||
title={filters.tags.includes(tag) ? `Remove tag filter: ${tag}` : `Filter by tag: ${tag}`}>
|
||||
title={
|
||||
filters.tags.includes(tag)
|
||||
? t("package_manager:item_card.remove_tag_filter", { tag })
|
||||
: t("package_manager:item_card.filter_by_tag", { tag })
|
||||
}>
|
||||
{tag}
|
||||
</button>
|
||||
))}
|
||||
|
|
@ -156,16 +165,20 @@ export const PackageManagerItemCard: React.FC<PackageManagerItemCardProps> = ({
|
|||
|
||||
<Button onClick={handleOpenUrl}>
|
||||
<span className="codicon codicon-link-external mr-2"></span>
|
||||
{item.sourceUrl ? "View" : item.sourceName || "Source"}
|
||||
{item.sourceUrl
|
||||
? t("package_manager:item_card.view")
|
||||
: item.sourceName || t("package_manager:item_card.source")}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
{groupedItems && (
|
||||
<ExpandableSection
|
||||
title="Component Details"
|
||||
title={t("package_manager:item_card.component_details")}
|
||||
badge={(() => {
|
||||
const matchCount = item.items?.filter((subItem) => subItem.matchInfo?.matched).length ?? 0
|
||||
return matchCount > 0 ? `${matchCount} match${matchCount !== 1 ? "es" : ""}` : undefined
|
||||
return matchCount > 0
|
||||
? t("package_manager:item_card.match_count", { count: matchCount })
|
||||
: undefined
|
||||
})()}
|
||||
defaultExpanded={item.items?.some((subItem) => subItem.matchInfo?.matched) ?? false}>
|
||||
<div className="space-y-4">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import React from "react"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { t } from "../../../../../src/i18n"
|
||||
|
||||
interface TypeGroupProps {
|
||||
type: string
|
||||
|
|
@ -20,15 +21,17 @@ export const TypeGroup: React.FC<TypeGroupProps> = ({ type, items, className })
|
|||
const getTypeLabel = (type: string) => {
|
||||
switch (type) {
|
||||
case "mode":
|
||||
return "Modes"
|
||||
return t("package_manager:type_group.modes")
|
||||
case "mcp server":
|
||||
return "MCP Servers"
|
||||
return t("package_manager:type_group.mcp_servers")
|
||||
case "prompt":
|
||||
return "Prompts"
|
||||
return t("package_manager:type_group.prompts")
|
||||
case "package":
|
||||
return "Packages"
|
||||
return t("package_manager:type_group.packages")
|
||||
default:
|
||||
return `${type.charAt(0).toUpperCase()}${type.slice(1)}s`
|
||||
return t("package_manager:type_group.generic_type", {
|
||||
type: type.charAt(0).toUpperCase() + type.slice(1),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +59,7 @@ export const TypeGroup: React.FC<TypeGroupProps> = ({ type, items, className })
|
|||
)}
|
||||
{item.matchInfo?.matched && (
|
||||
<span className="ml-2 text-xs bg-vscode-badge-background text-vscode-badge-foreground px-1 py-0.5 rounded">
|
||||
match
|
||||
{t("package_manager:type_group.match")}
|
||||
</span>
|
||||
)}
|
||||
</li>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue