From f5b97baac46b36c9d08a2fa48d9bb685f19510a1 Mon Sep 17 00:00:00 2001 From: Smartsheet-JB-Brown Date: Tue, 15 Apr 2025 13:15:05 -0700 Subject: [PATCH] translations --- src/i18n/locales/ca/package_manager.json | 24 ++++++++++++++ src/i18n/locales/de/package_manager.json | 24 ++++++++++++++ src/i18n/locales/en/package_manager.json | 24 ++++++++++++++ src/i18n/locales/es/package_manager.json | 24 ++++++++++++++ src/i18n/locales/fr/package_manager.json | 24 ++++++++++++++ src/i18n/locales/hi/package_manager.json | 24 ++++++++++++++ src/i18n/locales/it/package_manager.json | 24 ++++++++++++++ src/i18n/locales/ja/package_manager.json | 24 ++++++++++++++ src/i18n/locales/ko/package_manager.json | 24 ++++++++++++++ src/i18n/locales/pl/package_manager.json | 24 ++++++++++++++ src/i18n/locales/pt-BR/package_manager.json | 24 ++++++++++++++ src/i18n/locales/tr/package_manager.json | 24 ++++++++++++++ src/i18n/locales/vi/package_manager.json | 24 ++++++++++++++ src/i18n/locales/zh-CN/package_manager.json | 24 ++++++++++++++ src/i18n/locales/zh-TW/package_manager.json | 24 ++++++++++++++ .../components/PackageManagerItemCard.tsx | 33 +++++++++++++------ .../package-manager/components/TypeGroup.tsx | 15 +++++---- 17 files changed, 392 insertions(+), 16 deletions(-) create mode 100644 src/i18n/locales/ca/package_manager.json create mode 100644 src/i18n/locales/de/package_manager.json create mode 100644 src/i18n/locales/en/package_manager.json create mode 100644 src/i18n/locales/es/package_manager.json create mode 100644 src/i18n/locales/fr/package_manager.json create mode 100644 src/i18n/locales/hi/package_manager.json create mode 100644 src/i18n/locales/it/package_manager.json create mode 100644 src/i18n/locales/ja/package_manager.json create mode 100644 src/i18n/locales/ko/package_manager.json create mode 100644 src/i18n/locales/pl/package_manager.json create mode 100644 src/i18n/locales/pt-BR/package_manager.json create mode 100644 src/i18n/locales/tr/package_manager.json create mode 100644 src/i18n/locales/vi/package_manager.json create mode 100644 src/i18n/locales/zh-CN/package_manager.json create mode 100644 src/i18n/locales/zh-TW/package_manager.json diff --git a/src/i18n/locales/ca/package_manager.json b/src/i18n/locales/ca/package_manager.json new file mode 100644 index 0000000000..da78b9c758 --- /dev/null +++ b/src/i18n/locales/ca/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/de/package_manager.json b/src/i18n/locales/de/package_manager.json new file mode 100644 index 0000000000..af94a26951 --- /dev/null +++ b/src/i18n/locales/de/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/en/package_manager.json b/src/i18n/locales/en/package_manager.json new file mode 100644 index 0000000000..437988fdef --- /dev/null +++ b/src/i18n/locales/en/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/es/package_manager.json b/src/i18n/locales/es/package_manager.json new file mode 100644 index 0000000000..ba74596280 --- /dev/null +++ b/src/i18n/locales/es/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/fr/package_manager.json b/src/i18n/locales/fr/package_manager.json new file mode 100644 index 0000000000..4db0f0c9d2 --- /dev/null +++ b/src/i18n/locales/fr/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/hi/package_manager.json b/src/i18n/locales/hi/package_manager.json new file mode 100644 index 0000000000..ce7a9959c6 --- /dev/null +++ b/src/i18n/locales/hi/package_manager.json @@ -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": "स्रोत" + } +} diff --git a/src/i18n/locales/it/package_manager.json b/src/i18n/locales/it/package_manager.json new file mode 100644 index 0000000000..196cef365c --- /dev/null +++ b/src/i18n/locales/it/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/ja/package_manager.json b/src/i18n/locales/ja/package_manager.json new file mode 100644 index 0000000000..9ee16dc45a --- /dev/null +++ b/src/i18n/locales/ja/package_manager.json @@ -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": "ソース" + } +} diff --git a/src/i18n/locales/ko/package_manager.json b/src/i18n/locales/ko/package_manager.json new file mode 100644 index 0000000000..9a554c02d8 --- /dev/null +++ b/src/i18n/locales/ko/package_manager.json @@ -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": "소스" + } +} diff --git a/src/i18n/locales/pl/package_manager.json b/src/i18n/locales/pl/package_manager.json new file mode 100644 index 0000000000..233840b5aa --- /dev/null +++ b/src/i18n/locales/pl/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/pt-BR/package_manager.json b/src/i18n/locales/pt-BR/package_manager.json new file mode 100644 index 0000000000..ddf3e60942 --- /dev/null +++ b/src/i18n/locales/pt-BR/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/tr/package_manager.json b/src/i18n/locales/tr/package_manager.json new file mode 100644 index 0000000000..0f3822d51f --- /dev/null +++ b/src/i18n/locales/tr/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/vi/package_manager.json b/src/i18n/locales/vi/package_manager.json new file mode 100644 index 0000000000..cb0a71b9f8 --- /dev/null +++ b/src/i18n/locales/vi/package_manager.json @@ -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" + } +} diff --git a/src/i18n/locales/zh-CN/package_manager.json b/src/i18n/locales/zh-CN/package_manager.json new file mode 100644 index 0000000000..e46a8209a4 --- /dev/null +++ b/src/i18n/locales/zh-CN/package_manager.json @@ -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": "源码" + } +} diff --git a/src/i18n/locales/zh-TW/package_manager.json b/src/i18n/locales/zh-TW/package_manager.json new file mode 100644 index 0000000000..30b02562cd --- /dev/null +++ b/src/i18n/locales/zh-TW/package_manager.json @@ -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": "原始碼" + } +} diff --git a/webview-ui/src/components/package-manager/components/PackageManagerItemCard.tsx b/webview-ui/src/components/package-manager/components/PackageManagerItemCard.tsx index 8d1ba57484..e595b7b99c 100644 --- a/webview-ui/src/components/package-manager/components/PackageManagerItemCard.tsx +++ b/webview-ui/src/components/package-manager/components/PackageManagerItemCard.tsx @@ -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 = ({ 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 = ({

{item.name}

- {item.author &&

{`by ${item.author}`}

} + {item.author && ( +

+ {t("package_manager:item_card.by_author", { author: item.author })} +

+ )}
{getTypeLabel(item.type)} @@ -127,7 +132,11 @@ export const PackageManagerItemCard: React.FC = ({ } } }} - 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} ))} @@ -156,16 +165,20 @@ export const PackageManagerItemCard: React.FC = ({
{groupedItems && ( { 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}>
diff --git a/webview-ui/src/components/package-manager/components/TypeGroup.tsx b/webview-ui/src/components/package-manager/components/TypeGroup.tsx index 32e9affb14..47179d64da 100644 --- a/webview-ui/src/components/package-manager/components/TypeGroup.tsx +++ b/webview-ui/src/components/package-manager/components/TypeGroup.tsx @@ -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 = ({ 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 = ({ type, items, className }) )} {item.matchInfo?.matched && ( - match + {t("package_manager:type_group.match")} )}