From 744e5bb39b500caacfbf2db65be45d975f209eea Mon Sep 17 00:00:00 2001 From: CodingOnStar Date: Fri, 24 Jul 2026 17:10:12 +0800 Subject: [PATCH] feat: add marketplace home catalog filters --- .../__tests__/plugin-type-switch.spec.tsx | 23 ++++++-- .../plugins/marketplace/home/README.md | 12 +++++ .../home-catalog-navigation.spec.tsx | 47 ++++++++++++++++ .../home/home-catalog-navigation.tsx | 54 +++++++++++++++++++ .../plugins/marketplace/home/index.tsx | 7 ++- .../marketplace/plugin-type-switch.tsx | 27 +++++++--- web/i18n/ar-TN/plugin.json | 3 ++ web/i18n/de-DE/plugin.json | 3 ++ web/i18n/en-US/plugin.json | 3 ++ web/i18n/es-ES/plugin.json | 3 ++ web/i18n/fa-IR/plugin.json | 3 ++ web/i18n/fr-FR/plugin.json | 3 ++ web/i18n/hi-IN/plugin.json | 3 ++ web/i18n/id-ID/plugin.json | 3 ++ web/i18n/it-IT/plugin.json | 3 ++ web/i18n/ja-JP/plugin.json | 3 ++ web/i18n/ko-KR/plugin.json | 3 ++ web/i18n/nl-NL/plugin.json | 3 ++ web/i18n/pl-PL/plugin.json | 3 ++ web/i18n/pt-BR/plugin.json | 3 ++ web/i18n/ro-RO/plugin.json | 3 ++ web/i18n/ru-RU/plugin.json | 3 ++ web/i18n/sl-SI/plugin.json | 3 ++ web/i18n/th-TH/plugin.json | 3 ++ web/i18n/tr-TR/plugin.json | 3 ++ web/i18n/uk-UA/plugin.json | 3 ++ web/i18n/vi-VN/plugin.json | 3 ++ web/i18n/zh-Hans/plugin.json | 3 ++ web/i18n/zh-Hant/plugin.json | 3 ++ 29 files changed, 225 insertions(+), 14 deletions(-) create mode 100644 web/app/components/plugins/marketplace/home/README.md create mode 100644 web/app/components/plugins/marketplace/home/__tests__/home-catalog-navigation.spec.tsx create mode 100644 web/app/components/plugins/marketplace/home/home-catalog-navigation.tsx diff --git a/web/app/components/plugins/marketplace/__tests__/plugin-type-switch.spec.tsx b/web/app/components/plugins/marketplace/__tests__/plugin-type-switch.spec.tsx index 85788c98e96..6743370d413 100644 --- a/web/app/components/plugins/marketplace/__tests__/plugin-type-switch.spec.tsx +++ b/web/app/components/plugins/marketplace/__tests__/plugin-type-switch.spec.tsx @@ -1,4 +1,4 @@ -import type { ReactNode } from 'react' +import type { ComponentProps, ReactNode } from 'react' import { render, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { Provider as JotaiProvider } from 'jotai' @@ -13,7 +13,7 @@ vi.mock('#i18n', async () => { } }) -const renderSwitch = (searchParams = '') => { +const renderSwitch = (searchParams = '', props?: ComponentProps) => { const { wrapper: NuqsWrapper, onUrlUpdate } = createNuqsTestWrapper({ searchParams }) const Wrapper = ({ children }: { children: ReactNode }) => ( @@ -21,7 +21,7 @@ const renderSwitch = (searchParams = '') => { ) - return { ...render(, { wrapper: Wrapper }), onUrlUpdate } + return { ...render(, { wrapper: Wrapper }), onUrlUpdate } } describe('PluginTypeSwitch', () => { @@ -56,4 +56,21 @@ describe('PluginTypeSwitch', () => { expect(onUrlUpdate.mock.calls.at(-1)?.[0].searchParams.get('category')).toBe('model') expect(modelsButton).toHaveAttribute('aria-pressed', 'true') }) + + it('exposes the selected category and updates the URL in the home variant', async () => { + const user = userEvent.setup() + const { onUrlUpdate } = renderSwitch('?category=all', { variant: 'home' }) + + expect(screen.getByRole('button', { name: 'category.all' })).toHaveAttribute( + 'aria-pressed', + 'true', + ) + expect(screen.getByRole('button', { name: 'categorySingle.datasource' })).toBeInTheDocument() + expect(screen.getByRole('button', { name: 'categorySingle.agent' })).toBeInTheDocument() + + await user.click(screen.getByRole('button', { name: 'category.models' })) + + await waitFor(() => expect(onUrlUpdate).toHaveBeenCalled()) + expect(onUrlUpdate.mock.calls.at(-1)?.[0].searchParams.get('category')).toBe('model') + }) }) diff --git a/web/app/components/plugins/marketplace/home/README.md b/web/app/components/plugins/marketplace/home/README.md new file mode 100644 index 00000000000..b6fd48db3d8 --- /dev/null +++ b/web/app/components/plugins/marketplace/home/README.md @@ -0,0 +1,12 @@ +# Marketplace Home + +The redesigned Marketplace homepage composes the header, hero, search, trending, catalog navigation, and existing plugin list. + +## Internal Modules + +- `marketplace/list/list-wrapper` +- `marketplace/plugin-type-switch` + +## External Modules + +None. diff --git a/web/app/components/plugins/marketplace/home/__tests__/home-catalog-navigation.spec.tsx b/web/app/components/plugins/marketplace/home/__tests__/home-catalog-navigation.spec.tsx new file mode 100644 index 00000000000..951f6860bf5 --- /dev/null +++ b/web/app/components/plugins/marketplace/home/__tests__/home-catalog-navigation.spec.tsx @@ -0,0 +1,47 @@ +import { render, screen } from '@testing-library/react' +import { describe, expect, it, vi } from 'vitest' +import HomeCatalogNavigation from '../home-catalog-navigation' + +vi.mock('#i18n', async () => { + const { withSelectorKey } = await import('@/test/i18n-mock') + return { + useTranslation: () => ({ + t: withSelectorKey((key: string, options?: { ns?: string }) => + options?.ns ? `${options.ns}.${key}` : key, + ), + }), + } +}) + +vi.mock('../../plugin-type-switch', () => ({ + default: ({ variant }: { variant?: string }) => ( +
+ ), +})) + +vi.mock('@/utils/var', () => ({ + getMarketplaceUrl: (path: string) => `https://marketplace.dify.ai${path}?source=console`, +})) + +describe('HomeCatalogNavigation', () => { + it('keeps template navigation inside the Marketplace platform', () => { + render() + + expect(screen.getByText('plugin.marketplace.home.plugins')).toHaveAttribute( + 'aria-current', + 'page', + ) + expect( + screen.getByRole('link', { name: /plugin\.marketplace\.home\.templates/ }), + ).toHaveAttribute('href', '/templates') + expect(screen.getByTestId('plugin-type-switch')).toHaveAttribute('data-variant', 'home') + }) + + it('links Dify users to the hosted Marketplace templates page', () => { + render() + + expect( + screen.getByRole('link', { name: /plugin\.marketplace\.home\.templates/ }), + ).toHaveAttribute('href', 'https://marketplace.dify.ai/templates?source=console') + }) +}) diff --git a/web/app/components/plugins/marketplace/home/home-catalog-navigation.tsx b/web/app/components/plugins/marketplace/home/home-catalog-navigation.tsx new file mode 100644 index 00000000000..7d1e03872ea --- /dev/null +++ b/web/app/components/plugins/marketplace/home/home-catalog-navigation.tsx @@ -0,0 +1,54 @@ +'use client' + +import { cn } from '@langgenius/dify-ui/cn' +import { useTranslation } from '#i18n' +import Link from '@/next/link' +import { getMarketplaceUrl } from '@/utils/var' +import PluginTypeSwitch from '../plugin-type-switch' + +type HomeCatalogNavigationProps = { + isMarketplacePlatform: boolean +} + +function HomeCatalogNavigation({ isMarketplacePlatform }: HomeCatalogNavigationProps) { + const { t } = useTranslation() + const templatesHref = isMarketplacePlatform ? '/templates' : getMarketplaceUrl('/templates') + + return ( +
$['mainNav.marketplace'], { ns: 'common' })} + className="w-full shrink-0 bg-background-default px-8 pt-6 pb-4" + > +
+ + +
+
+ ) +} + +export default HomeCatalogNavigation diff --git a/web/app/components/plugins/marketplace/home/index.tsx b/web/app/components/plugins/marketplace/home/index.tsx index 3929d083ce4..c7b5428d9ff 100644 --- a/web/app/components/plugins/marketplace/home/index.tsx +++ b/web/app/components/plugins/marketplace/home/index.tsx @@ -1,6 +1,7 @@ import type { BannerRecommend } from './banners' import { cn } from '@langgenius/dify-ui/cn' import ListWrapper from '../list/list-wrapper' +import HomeCatalogNavigation from './home-catalog-navigation' import HomeHeader from './home-header' import HomeHero from './home-hero' import HomeSearch from './home-search' @@ -37,10 +38,8 @@ const MarketplaceHome = ({ aria-hidden="true" className={cn('shrink-0', isMarketplacePlatform ? 'h-6' : 'h-12')} /> - + +
{ const { t } = useTranslation() const [activePluginType, handleActivePluginTypeChange] = useActivePluginType() const setSearchMode = useSetAtom(searchModeAtom) const isHero = variant === 'hero' + const isHome = variant === 'home' const iconClassName = 'mr-1.5 size-4' const options: Array<{ @@ -38,7 +39,7 @@ const PluginTypeSwitch = ({ className, variant = 'default' }: PluginTypeSwitchPr text: isHero ? t(($) => $['marketplace.allPlugins'], { ns: 'plugin' }) : t(($) => $['category.all'], { ns: 'plugin' }), - icon: isHero ? : null, + icon: isHero || isHome ? : null, }, { value: PLUGIN_TYPE_SEARCH_MAP.model, @@ -52,12 +53,14 @@ const PluginTypeSwitch = ({ className, variant = 'default' }: PluginTypeSwitchPr }, { value: PLUGIN_TYPE_SEARCH_MAP.datasource, - text: t(($) => $['category.datasources'], { ns: 'plugin' }), + text: t(($) => $[isHome ? 'categorySingle.datasource' : 'category.datasources'], { + ns: 'plugin', + }), icon: , }, { value: PLUGIN_TYPE_SEARCH_MAP.agent, - text: t(($) => $['category.agents'], { ns: 'plugin' }), + text: t(($) => $[isHome ? 'categorySingle.agent' : 'category.agents'], { ns: 'plugin' }), icon: , }, { @@ -82,9 +85,13 @@ const PluginTypeSwitch = ({ className, variant = 'default' }: PluginTypeSwitchPr className={cn( isHero ? 'flex shrink-0 items-center gap-1 overflow-x-auto' - : 'flex shrink-0 items-center justify-center space-x-2 bg-background-body py-3', + : isHome + ? 'flex shrink-0 items-center gap-1 overflow-x-auto' + : 'flex shrink-0 items-center justify-center space-x-2 bg-background-body py-3', className, )} + role="group" + aria-label={t(($) => $['marketplace.allPlugins'], { ns: 'plugin' })} > {options.map((option, index) => { const isActive = activePluginType === option.value @@ -96,7 +103,11 @@ const PluginTypeSwitch = ({ className, variant = 'default' }: PluginTypeSwitchPr aria-pressed={isActive} className={cn( 'flex h-8 cursor-pointer appearance-none items-center rounded-lg border border-transparent px-2.5 system-md-medium whitespace-nowrap outline-hidden focus-visible:ring-2 focus-visible:ring-state-accent-solid', - isHero ? 'text-text-primary-on-surface' : 'text-text-tertiary', + isHero + ? 'text-text-primary-on-surface' + : isHome + ? 'min-w-12 justify-center text-text-tertiary' + : 'text-text-tertiary', !isActive && (isHero ? 'hover:bg-white/20' @@ -104,7 +115,9 @@ const PluginTypeSwitch = ({ className, variant = 'default' }: PluginTypeSwitchPr isActive && (isHero ? 'border-white/95 bg-components-main-nav-nav-button-bg-active text-saas-dify-blue-inverted shadow-md backdrop-blur-[5px]' - : 'border-components-main-nav-nav-button-border bg-components-main-nav-nav-button-bg-active! text-components-main-nav-nav-button-text-active! shadow-xs'), + : isHome + ? 'bg-background-interaction-from-bg-2 text-saas-dify-blue-inverted' + : 'border-components-main-nav-nav-button-border bg-components-main-nav-nav-button-bg-active! text-components-main-nav-nav-button-text-active! shadow-xs'), )} onClick={() => { handleActivePluginTypeChange(option.value) diff --git a/web/i18n/ar-TN/plugin.json b/web/i18n/ar-TN/plugin.json index 245a9580d79..ce3170dba2a 100644 --- a/web/i18n/ar-TN/plugin.json +++ b/web/i18n/ar-TN/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "تمكين تطوير الذكاء الاصطناعي الخاص بك", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "جديد", + "marketplace.home.plugins": "المكونات الإضافية", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "قوالب", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/de-DE/plugin.json b/web/i18n/de-DE/plugin.json index 41e3d9264c3..057aceb1c61 100644 --- a/web/i18n/de-DE/plugin.json +++ b/web/i18n/de-DE/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Unterstützen Sie Ihre KI-Entwicklung", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Neu", + "marketplace.home.plugins": "Plugins", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Vorlagen", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/en-US/plugin.json b/web/i18n/en-US/plugin.json index 05d54cdc452..2bdad4f4b4e 100644 --- a/web/i18n/en-US/plugin.json +++ b/web/i18n/en-US/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Empower your AI development", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "New", + "marketplace.home.plugins": "Plugins", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Templates", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/es-ES/plugin.json b/web/i18n/es-ES/plugin.json index cf4f9f88aaa..ce146f25a49 100644 --- a/web/i18n/es-ES/plugin.json +++ b/web/i18n/es-ES/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Potencie su desarrollo de IA", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Nuevo", + "marketplace.home.plugins": "Plugins", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Plantillas", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/fa-IR/plugin.json b/web/i18n/fa-IR/plugin.json index 0e40aa234e8..d0b74668964 100644 --- a/web/i18n/fa-IR/plugin.json +++ b/web/i18n/fa-IR/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "توسعه هوش مصنوعی خود را توانمند کنید", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "جدید", + "marketplace.home.plugins": "افزونه‌ها", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "الگوها", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/fr-FR/plugin.json b/web/i18n/fr-FR/plugin.json index e582a972545..b0726001427 100644 --- a/web/i18n/fr-FR/plugin.json +++ b/web/i18n/fr-FR/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Renforcez le développement de votre IA", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Nouveau", + "marketplace.home.plugins": "Plugins", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Modèles", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/hi-IN/plugin.json b/web/i18n/hi-IN/plugin.json index 7ad851d81ca..1dd7fdba184 100644 --- a/web/i18n/hi-IN/plugin.json +++ b/web/i18n/hi-IN/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "अपने एआई विकास को सशक्त बनाएं", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "नया", + "marketplace.home.plugins": "एकीकरण", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "टेम्पलेट", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/id-ID/plugin.json b/web/i18n/id-ID/plugin.json index 1e3778de22c..41f97a303d2 100644 --- a/web/i18n/id-ID/plugin.json +++ b/web/i18n/id-ID/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Berdayakan pengembangan AI Anda", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Baru", + "marketplace.home.plugins": "Plugin", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Templat", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/it-IT/plugin.json b/web/i18n/it-IT/plugin.json index f9678e3b399..eab683d7fe4 100644 --- a/web/i18n/it-IT/plugin.json +++ b/web/i18n/it-IT/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Potenzia lo sviluppo dell'intelligenza artificiale", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Nuovo", + "marketplace.home.plugins": "Plugin", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Modelli", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/ja-JP/plugin.json b/web/i18n/ja-JP/plugin.json index ec802d017e8..cbcf3f2943c 100644 --- a/web/i18n/ja-JP/plugin.json +++ b/web/i18n/ja-JP/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "AI 開発をサポートする", "marketplace.home.heroSubtitle": "Dify Marketplace で、より安全で信頼性の高いプラグインを見つけましょう。", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "新着", + "marketplace.home.plugins": "プラグイン", "marketplace.home.searchPlaceholder": "プラグインまたはテンプレートを検索", + "marketplace.home.templates": "テンプレート", "marketplace.home.trendingByCreator": "{{creator}} 作成", "marketplace.home.trendingDescription": "実際の利用状況に基づく人気プラグインを2週間ごとに更新。ワークスペースでの実行数によるランキングで、有料掲載や編集部による選定はありません。", "marketplace.home.trendingEyebrow": "トレンド", diff --git a/web/i18n/ko-KR/plugin.json b/web/i18n/ko-KR/plugin.json index 7bc075a1d96..52cdda9b1be 100644 --- a/web/i18n/ko-KR/plugin.json +++ b/web/i18n/ko-KR/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "AI 개발 역량 강화", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "신규", + "marketplace.home.plugins": "플러그인", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "템플릿", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/nl-NL/plugin.json b/web/i18n/nl-NL/plugin.json index 1773a46bd5c..4114f5d5e38 100644 --- a/web/i18n/nl-NL/plugin.json +++ b/web/i18n/nl-NL/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Empower your AI development", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Nieuw", + "marketplace.home.plugins": "Plugins", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Sjablonen", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/pl-PL/plugin.json b/web/i18n/pl-PL/plugin.json index 62538880b40..25387aaa067 100644 --- a/web/i18n/pl-PL/plugin.json +++ b/web/i18n/pl-PL/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Zwiększ możliwości rozwoju sztucznej inteligencji", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Nowość", + "marketplace.home.plugins": "Integracje", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Szablony", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/pt-BR/plugin.json b/web/i18n/pt-BR/plugin.json index fe055d82db7..771ac3dd68e 100644 --- a/web/i18n/pt-BR/plugin.json +++ b/web/i18n/pt-BR/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Capacite seu desenvolvimento de IA", "marketplace.home.heroSubtitle": "Crie com plugins mais seguros e confiáveis do Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Novo", + "marketplace.home.plugins": "Plugins", "marketplace.home.searchPlaceholder": "Buscar plugins ou modelos", + "marketplace.home.templates": "Modelos", "marketplace.home.trendingByCreator": "por {{creator}}", "marketplace.home.trendingDescription": "Destaques por uso real, atualizados a cada duas semanas. Classificados pelas execuções reais nos espaços de trabalho — sem promoção paga ou seleção editorial.", "marketplace.home.trendingEyebrow": "Em alta agora", diff --git a/web/i18n/ro-RO/plugin.json b/web/i18n/ro-RO/plugin.json index 0f8dc634e48..a386d288475 100644 --- a/web/i18n/ro-RO/plugin.json +++ b/web/i18n/ro-RO/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Îmbunătățește-ți dezvoltarea AI", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Nou", + "marketplace.home.plugins": "Plugin-uri", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Șabloane", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/ru-RU/plugin.json b/web/i18n/ru-RU/plugin.json index 3ee9cb0febd..d379a9d1dee 100644 --- a/web/i18n/ru-RU/plugin.json +++ b/web/i18n/ru-RU/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Расширьте возможности разработки ИИ", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Новое", + "marketplace.home.plugins": "Интеграции", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Шаблоны", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/sl-SI/plugin.json b/web/i18n/sl-SI/plugin.json index 6dc6675b9da..1a3b992bd3d 100644 --- a/web/i18n/sl-SI/plugin.json +++ b/web/i18n/sl-SI/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Okrepite svoj razvoj AI", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Novo", + "marketplace.home.plugins": "Integracije", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Predloge", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/th-TH/plugin.json b/web/i18n/th-TH/plugin.json index e679e8acbff..d452a2238e5 100644 --- a/web/i18n/th-TH/plugin.json +++ b/web/i18n/th-TH/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "เพิ่มศักยภาพในการพัฒนา AI ของคุณ", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "ใหม่", + "marketplace.home.plugins": "ปลั๊กอิน", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "เทมเพลต", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/tr-TR/plugin.json b/web/i18n/tr-TR/plugin.json index 2b602b0adc4..fca636e569c 100644 --- a/web/i18n/tr-TR/plugin.json +++ b/web/i18n/tr-TR/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Yapay zeka geliştirmenizi güçlendirin", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Yeni", + "marketplace.home.plugins": "Eklentiler", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Şablonlar", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/uk-UA/plugin.json b/web/i18n/uk-UA/plugin.json index d3ce874dcd7..406aad49233 100644 --- a/web/i18n/uk-UA/plugin.json +++ b/web/i18n/uk-UA/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Розширюйте можливості розробки штучного інтелекту", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Нове", + "marketplace.home.plugins": "Інтеграції", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Шаблони", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/vi-VN/plugin.json b/web/i18n/vi-VN/plugin.json index ac5c99b05bd..53c922e2f47 100644 --- a/web/i18n/vi-VN/plugin.json +++ b/web/i18n/vi-VN/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "Hỗ trợ phát triển AI của bạn", "marketplace.home.heroSubtitle": "Build with safer, more reliable plugins from the Dify Marketplace.", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "Mới", + "marketplace.home.plugins": "Plugin", "marketplace.home.searchPlaceholder": "Search plugins or templates", + "marketplace.home.templates": "Mẫu", "marketplace.home.trendingByCreator": "by {{creator}}", "marketplace.home.trendingDescription": "Top picks by real usage, refreshed every two weeks. Ranked by actual runs across workspaces — no paid placement, no editorial picks.", "marketplace.home.trendingEyebrow": "Trending Now", diff --git a/web/i18n/zh-Hans/plugin.json b/web/i18n/zh-Hans/plugin.json index 7a90ace00c1..9d8a8ff940f 100644 --- a/web/i18n/zh-Hans/plugin.json +++ b/web/i18n/zh-Hans/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "助力您的 AI 开发", "marketplace.home.heroSubtitle": "在 Dify Marketplace 探索更安全、更可靠的插件。", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "新", + "marketplace.home.plugins": "插件", "marketplace.home.searchPlaceholder": "搜索插件或模板", + "marketplace.home.templates": "模板", "marketplace.home.trendingByCreator": "由 {{creator}} 发布", "marketplace.home.trendingDescription": "基于真实使用情况选出的热门插件,每两周更新一次。榜单按各工作区的实际运行次数排序,不含付费推广或编辑推荐。", "marketplace.home.trendingEyebrow": "当前热门", diff --git a/web/i18n/zh-Hant/plugin.json b/web/i18n/zh-Hant/plugin.json index ca19b60da51..375b7069cf2 100644 --- a/web/i18n/zh-Hant/plugin.json +++ b/web/i18n/zh-Hant/plugin.json @@ -228,7 +228,10 @@ "marketplace.empower": "為您的 AI 開發提供支援", "marketplace.home.heroSubtitle": "在 Dify Marketplace 探索更安全、更可靠的外掛程式。", "marketplace.home.heroTitle": "Discover. Extend. Build", + "marketplace.home.new": "新", + "marketplace.home.plugins": "外掛", "marketplace.home.searchPlaceholder": "搜尋外掛程式或範本", + "marketplace.home.templates": "範本", "marketplace.home.trendingByCreator": "由 {{creator}} 發布", "marketplace.home.trendingDescription": "根據真實使用情況選出的熱門外掛程式,每兩週更新一次。榜單按各工作區的實際執行次數排序,不含付費推廣或編輯推薦。", "marketplace.home.trendingEyebrow": "目前熱門",