diff --git a/.github/playwright/impact-map.generated.json b/.github/playwright/impact-map.generated.json index 1343c929b27c..bf73a45288ba 100644 --- a/.github/playwright/impact-map.generated.json +++ b/.github/playwright/impact-map.generated.json @@ -192,6 +192,7 @@ "playwright/e2e/Features/TeamsHierarchy.spec.ts", "playwright/e2e/Features/TestSuiteMultiPipeline.spec.ts", "playwright/e2e/Features/TestSuitePipelineRedeploy.spec.ts", + "playwright/e2e/Features/WelcomeScreen.spec.ts", "playwright/e2e/Features/Workflows/GitSinkTokenMask.spec.ts", "playwright/e2e/Flow/ApiServiceRest.spec.ts", "playwright/e2e/Flow/Collect.spec.ts", @@ -751,6 +752,7 @@ "playwright/e2e/Features/IncidentManager.spec.ts", "playwright/e2e/Features/ProfilePlatformSettings.spec.ts", "playwright/e2e/Features/ProfilePreferences.spec.ts", + "playwright/e2e/Features/WelcomeScreen.spec.ts", "playwright/e2e/Pages/BotsProfile.spec.ts", "playwright/e2e/Pages/CustomProperties.spec.ts" ] @@ -827,6 +829,7 @@ "playwright/e2e/Features/Table.spec.ts", "playwright/e2e/Features/TableSearch.spec.ts", "playwright/e2e/Features/TableSorting.spec.ts", + "playwright/e2e/Features/WelcomeScreen.spec.ts", "playwright/e2e/Features/Workflows/ChangeRequestReviewLifecycle.spec.ts", "playwright/e2e/Features/Workflows/GitSinkTokenMask.spec.ts", "playwright/e2e/Flow/ApiCollection.spec.ts", @@ -3654,6 +3657,7 @@ "playwright/e2e/Features/TierWidget.spec.ts", "playwright/e2e/Features/Topic.spec.ts", "playwright/e2e/Features/UserProfileOnlineStatus.spec.ts", + "playwright/e2e/Features/WelcomeScreen.spec.ts", "playwright/e2e/Features/Workflows/ChangeRequestReviewLifecycle.spec.ts", "playwright/e2e/Features/Workflows/GitSinkTokenMask.spec.ts", "playwright/e2e/Features/Workflows/NoOpWorkflowNodeConfig.spec.ts", @@ -4208,6 +4212,7 @@ "playwright/e2e/Features/TestSuiteMultiPipeline.spec.ts", "playwright/e2e/Features/TierWidget.spec.ts", "playwright/e2e/Features/Topic.spec.ts", + "playwright/e2e/Features/WelcomeScreen.spec.ts", "playwright/e2e/Features/Workflows/ChangeRequestReviewLifecycle.spec.ts", "playwright/e2e/Features/Workflows/GitSinkTokenMask.spec.ts", "playwright/e2e/Features/Workflows/NoOpWorkflowNodeConfig.spec.ts", @@ -7917,7 +7922,8 @@ ], "specs": [ "playwright/e2e/Features/LandingPageWidgets/LandingPage.spec.ts", - "playwright/e2e/Features/LandingPageWidgets/LandingPageTopicWidgets.spec.ts" + "playwright/e2e/Features/LandingPageWidgets/LandingPageTopicWidgets.spec.ts", + "playwright/e2e/Features/WelcomeScreen.spec.ts" ] }, { @@ -7959,6 +7965,14 @@ "playwright/e2e/Pages/Users.spec.ts" ] }, + { + "sources": [ + "openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.component.tsx" + ], + "specs": [ + "playwright/e2e/Features/WelcomeScreen.spec.ts" + ] + }, { "sources": [ "openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/Common/TopicWidget/ConnectorBreakdown.tsx" @@ -12162,6 +12176,7 @@ "playwright/e2e/Features/TierWidget.spec.ts", "playwright/e2e/Features/Topic.spec.ts", "playwright/e2e/Features/UserProfileOnlineStatus.spec.ts", + "playwright/e2e/Features/WelcomeScreen.spec.ts", "playwright/e2e/Features/Workflows/ChangeRequestReviewLifecycle.spec.ts", "playwright/e2e/Features/Workflows/GitSinkTokenMask.spec.ts", "playwright/e2e/Features/Workflows/NoOpWorkflowNodeConfig.spec.ts", @@ -13041,6 +13056,14 @@ "playwright/e2e/Flow/MetricListSearch.spec.ts" ] }, + { + "sources": [ + "openmetadata-ui/src/main/resources/ui/src/pages/MyDataPage/MyDataPage.component.tsx" + ], + "specs": [ + "playwright/e2e/Features/WelcomeScreen.spec.ts" + ] + }, { "sources": [ "openmetadata-ui/src/main/resources/ui/src/pages/OnlineUsersPage/OnlineUsersPage.tsx" diff --git a/.github/playwright/impact-map.json b/.github/playwright/impact-map.json index 1d29806e387b..6f25741174cd 100644 --- a/.github/playwright/impact-map.json +++ b/.github/playwright/impact-map.json @@ -1102,6 +1102,25 @@ "playwright/e2e/Features/SuggestionsSliderPermissions.spec.ts", "playwright/e2e/Features/TagsSuggestion.spec.ts" ] + }, + { + "_comment": "The first-login welcome screen and the post-deploy upgrade screen (the chunk-load ErrorFallback), with the brand hooks and artwork they render. WelcomeScreen.spec.ts drives the welcome screen in classic and AI mode (shown once, close, both actions, stays dismissed on the kept-alive AI home); AppModeAiPersonaLandsAtRoot.spec.ts covers the AI-mode landing route the gate wraps. No spec forces a chunk-load failure, so the upgrade screen is covered by ErrorFallback.test.tsx.", + "sources": [ + "openmetadata-ui/src/main/resources/ui/src/pages/MyDataPage/**", + "openmetadata-ui/src/main/resources/ui/src/hooks/useFirstLoginWelcome.ts", + "openmetadata-ui/src/main/resources/ui/src/components/discovery/personal-space/personalSpace.module.tsx", + "openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/**", + "openmetadata-ui/src/main/resources/ui/src/utils/BrandData/**", + "openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen-*.svg", + "openmetadata-ui/src/main/resources/ui/src/assets/img/upgrade-screen-*.svg", + "openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen.png", + "openmetadata-ui/src/main/resources/ui/src/assets/svg/om-upgrade.svg" + ], + "projects": ["chromium"], + "specs": [ + "playwright/e2e/Features/WelcomeScreen.spec.ts", + "playwright/e2e/Features/AppMode/AppModeAiPersonaLandsAtRoot.spec.ts" + ] } ] } diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/WelcomeScreen.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/WelcomeScreen.spec.ts new file mode 100644 index 000000000000..2b93fbf513ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/WelcomeScreen.spec.ts @@ -0,0 +1,115 @@ +/* + * Copyright 2026 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Page } from '@playwright/test'; +import { DOMAIN_TAGS } from '../../constant/config'; +import { clickIgnoringToasts } from '../../utils/common'; +import { waitForAllLoadersToDisappear } from '../../utils/entity'; +import { expect, test } from '../fixtures/pages'; +import { enableAiAppMode } from '../Utils/appMode'; + +// The shared admin session seeds `loggedInUsers`, which is how every other spec +// keeps the welcome screen away. Drop it once per page — the session flag keeps +// a reload from dropping it again — so this page is the user's first login. +const asFirstLogin = (page: Page) => + page.addInitScript(() => { + if (!sessionStorage.getItem('__pw_first_login')) { + localStorage.removeItem('loggedInUsers'); + sessionStorage.setItem('__pw_first_login', '1'); + } + }); + +const openHome = async (page: Page, path: string) => { + await page.goto(path, { waitUntil: 'domcontentloaded' }); + await waitForAllLoadersToDisappear(page); +}; + +test.describe( + 'First-login welcome screen', + { tag: ['@Features', DOMAIN_TAGS.PLATFORM] }, + () => { + test('shows once on the classic home and closes to the landing page', async ({ + page, + }) => { + await asFirstLogin(page); + await openHome(page, '/my-data'); + + await test.step('the first visit shows the welcome screen', async () => { + await expect(page.getByTestId('welcome-screen')).toBeVisible(); + await expect(page.getByTestId('welcome-screen-img')).toBeVisible(); + }); + + await test.step('closing it shows the landing page', async () => { + await clickIgnoringToasts(page.getByTestId('welcome-screen-close-btn')); + + await expect(page.getByTestId('home-page-surface')).toBeVisible(); + await expect(page.getByTestId('welcome-screen')).toBeHidden(); + }); + + await test.step('it does not come back on the next visit', async () => { + await page.reload({ waitUntil: 'domcontentloaded' }); + await waitForAllLoadersToDisappear(page); + + await expect(page.getByTestId('home-page-surface')).toBeVisible(); + await expect(page.getByTestId('welcome-screen')).toBeHidden(); + }); + }); + + test('classic: connect a data source opens the database service wizard', async ({ + page, + }) => { + await asFirstLogin(page); + await openHome(page, '/my-data'); + + await clickIgnoringToasts(page.getByTestId('welcome-screen-connect-btn')); + + await expect(page).toHaveURL(/\/databaseServices\/add-service/); + }); + + test('classic: take a product tour opens the tour', async ({ page }) => { + await asFirstLogin(page); + await openHome(page, '/my-data'); + + await clickIgnoringToasts(page.getByTestId('welcome-screen-tour-btn')); + + await expect(page).toHaveURL(/\/tour/); + }); + + test('AI mode: shows on the home, opens every connector, and stays dismissed', async ({ + page, + }) => { + await asFirstLogin(page); + await enableAiAppMode(page); + await openHome(page, '/'); + + await test.step('the first visit shows the welcome screen', async () => { + await expect(page.getByTestId('welcome-screen')).toBeVisible(); + }); + + await test.step('connect a data source opens every category', async () => { + await clickIgnoringToasts( + page.getByTestId('welcome-screen-connect-btn') + ); + + await expect(page).toHaveURL(/\/all\/add-service/); + }); + + await test.step('the kept-alive home does not show it again', async () => { + await page.goBack({ waitUntil: 'domcontentloaded' }); + await waitForAllLoadersToDisappear(page); + + await expect(page.getByTestId('home-landing-page')).toBeVisible(); + await expect(page.getByTestId('welcome-screen')).toBeHidden(); + }); + }); + } +); diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/img/upgrade-screen-dark.svg b/openmetadata-ui/src/main/resources/ui/src/assets/img/upgrade-screen-dark.svg new file mode 100644 index 000000000000..f1f09b795c17 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/assets/img/upgrade-screen-dark.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/img/upgrade-screen-light.svg b/openmetadata-ui/src/main/resources/ui/src/assets/img/upgrade-screen-light.svg new file mode 100644 index 000000000000..b1972defa234 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/assets/img/upgrade-screen-light.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen-dark.svg b/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen-dark.svg new file mode 100644 index 000000000000..444600495a3b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen-dark.svg @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen-light.svg b/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen-light.svg new file mode 100644 index 000000000000..2a359fb08071 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen-light.svg @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen.png b/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen.png deleted file mode 100644 index 78e546c8d742..000000000000 Binary files a/openmetadata-ui/src/main/resources/ui/src/assets/img/welcome-screen.png and /dev/null differ diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/svg/om-upgrade.svg b/openmetadata-ui/src/main/resources/ui/src/assets/svg/om-upgrade.svg deleted file mode 100644 index 93bfec1823e6..000000000000 --- a/openmetadata-ui/src/main/resources/ui/src/assets/svg/om-upgrade.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomScreen.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomScreen.test.tsx index a9bcfc766789..8c62789795f6 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomScreen.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomScreen.test.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2024 Collate. + * Copyright 2023 Collate. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -10,50 +10,99 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { fireEvent, render, screen } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; import WelcomeScreen from './WelcomeScreen.component'; -const mockProps = { - onCloseMock: jest.fn(), -}; +const mockNavigate = jest.fn(); +const mockOnClose = jest.fn(); +const mockAddService = jest.fn(); +const mockUseAddServiceAction = jest.fn(); +const mockUseIsAiMode = jest.fn(); + +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, +})); + +jest.mock('../../../hooks/useAppMode', () => ({ + useIsAiMode: () => mockUseIsAiMode(), +})); + +jest.mock('../../integration/ConnectionsPage/useAddServiceAction', () => ({ + useAddServiceAction: (category: string) => mockUseAddServiceAction(category), +})); + +jest.mock('../../../context/UntitledUIThemeProvider/theme-provider', () => ({ + useTheme: () => ({ theme: 'light' }), +})); + +const renderScreen = () => + render(, { wrapper: MemoryRouter }); describe('WelcomeScreen', () => { - it('should render WelcomeScreen', async () => { - await act(async () => { - render(, { - wrapper: MemoryRouter, - }); + beforeEach(() => { + jest.clearAllMocks(); + mockUseIsAiMode.mockReturnValue(false); + mockUseAddServiceAction.mockReturnValue({ + addService: mockAddService, + canAddService: true, }); - const welcomeImg = screen.getByTestId('welcome-screen-img'); + }); + + it('should render the illustration and message', () => { + renderScreen(); - expect(welcomeImg).toBeInTheDocument(); + expect(screen.getByTestId('welcome-screen-img')).toBeInTheDocument(); + expect( + screen.getByText('message.welcome-screen-message') + ).toBeInTheDocument(); }); it('should call onClose when the close button is clicked', () => { - const { getByTestId } = render( - , - { - wrapper: MemoryRouter, - } - ); + renderScreen(); + + fireEvent.click(screen.getByTestId('welcome-screen-close-btn')); + + expect(mockOnClose).toHaveBeenCalled(); + }); + + it('should add a database service from classic mode', () => { + renderScreen(); + + fireEvent.click(screen.getByTestId('welcome-screen-connect-btn')); + + expect(mockUseAddServiceAction).toHaveBeenCalledWith('databaseServices'); + expect(mockOnClose).toHaveBeenCalled(); + expect(mockAddService).toHaveBeenCalled(); + }); - const closeButton = getByTestId('welcome-screen-close-btn'); - fireEvent.click(closeButton); + it('should add a service from any category in AI mode', () => { + mockUseIsAiMode.mockReturnValue(true); + renderScreen(); + + expect(mockUseAddServiceAction).toHaveBeenCalledWith('all'); + }); + + it('should hide connect a data source from users who cannot create services', () => { + mockUseAddServiceAction.mockReturnValue({ + addService: mockAddService, + canAddService: false, + }); + renderScreen(); - expect(mockProps.onCloseMock).toHaveBeenCalled(); + expect( + screen.queryByTestId('welcome-screen-connect-btn') + ).not.toBeInTheDocument(); + expect(screen.getByTestId('welcome-screen-tour-btn')).toBeInTheDocument(); }); - it('should display the correct welcome message', () => { - const { getByText } = render( - , - { - wrapper: MemoryRouter, - } - ); + it('should close the welcome screen and start the tour', () => { + renderScreen(); - const welcomeMessage = getByText('message.welcome-screen-message'); + fireEvent.click(screen.getByTestId('welcome-screen-tour-btn')); - expect(welcomeMessage).toBeInTheDocument(); + expect(mockOnClose).toHaveBeenCalled(); + expect(mockNavigate).toHaveBeenCalledWith('/tour'); }); }); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.component.tsx index e7c702177195..9dc5d75b5cce 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.component.tsx @@ -13,22 +13,26 @@ import { Box, Button, - Card, - Divider, - Grid, + ButtonUtility, Typography, } from '@openmetadata/ui-core-components'; +import { ArrowRight, XClose } from '@openmetadata/ui-core-components/icons'; import { split } from 'lodash'; -import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { Link } from 'react-router-dom'; -import { ReactComponent as CloseIcon } from '../../../assets/svg/close.svg'; -import { ReactComponent as LineArrowRight } from '../../../assets/svg/line-arrow-right.svg'; +import { useNavigate } from 'react-router-dom'; import { ROUTES } from '../../../constants/constants'; +import { useTheme } from '../../../context/UntitledUIThemeProvider/theme-provider'; +import { ServiceCategory } from '../../../enums/service.enum'; import { useApplicationStore } from '../../../hooks/useApplicationStore'; +import { useIsAiMode } from '../../../hooks/useAppMode'; import brandClassBase from '../../../utils/BrandData/BrandClassBase'; import { getEntityName } from '../../../utils/EntityNameUtils'; -import './welcome-screen.style.less'; +import { Transi18next } from '../../../utils/i18next/LocalUtil'; +import { useAddServiceAction } from '../../integration/ConnectionsPage/useAddServiceAction'; +import { + WELCOME_GLOW_DARK, + WELCOME_GLOW_LIGHT, +} from './WelcomeScreen.constants'; interface WelcomeScreenProps { onClose: () => void; @@ -36,83 +40,107 @@ interface WelcomeScreenProps { const WelcomeScreen = ({ onClose }: WelcomeScreenProps) => { const { t } = useTranslation(); + const navigate = useNavigate(); + const { theme } = useTheme(); const { currentUser } = useApplicationStore(); + // AI mode's Connections opens on every connector; classic keeps its + // database-services entry point. The hook also owns the create-permission + // check, so the button is absent for users who could not save a service. + const { addService, canAddService } = useAddServiceAction( + useIsAiMode() ? 'all' : ServiceCategory.DATABASE_SERVICES + ); + const greeting = t('label.welcome', { + name: split(getEntityName(currentUser), ' ')[0] || t('label.user'), + }); - const userName = useMemo(() => { - return split(getEntityName(currentUser), ' ')[0]; - }, [currentUser]); + // Close before leaving: the AI-mode home is kept alive, so without this the + // welcome screen would still be there when the user comes back. + const handleConnect = () => { + onClose(); + addService(); + }; - const { title, welcomeScreenImg } = useMemo(() => { - return { - title: t('label.brand-name'), - welcomeScreenImg: brandClassBase.getWelcomeScreenImg(), - }; - }, [t]); + const handleTour = () => { + onClose(); + navigate(ROUTES.TOUR); + }; return ( - -
- + )} + + + + +
); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.constants.ts b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.constants.ts new file mode 100644 index 000000000000..d024b44470e3 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreen.constants.ts @@ -0,0 +1,35 @@ +/* + * Copyright 2026 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Figma 15448:9083: a radial glow rising into the brand colour along the bottom +// 65% of the panel; dark mode keeps it faint. `--tw-*` is the runtime name of +// the core theme variables, and it follows the configured brand colour. +const GLOW_SHAPE = 'ellipse 168% 168% at 56% -31%'; +const BRAND = 'var(--tw-color-brand-500)'; + +const brandMix = (percent: number) => + `color-mix(in srgb, ${BRAND} ${percent}%, transparent)`; + +export const WELCOME_GLOW_LIGHT = `radial-gradient(${GLOW_SHAPE}, ${[ + 'transparent 55%', + `${brandMix(50)} 77.5%`, + `${brandMix(75)} 88.75%`, + BRAND, +].join(', ')})`; + +export const WELCOME_GLOW_DARK = `radial-gradient(${GLOW_SHAPE}, ${[ + 'transparent 47%', + `${brandMix(8)} 60%`, + `${brandMix(20)} 73%`, + brandMix(20), +].join(', ')})`; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreenGate.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreenGate.test.tsx new file mode 100644 index 000000000000..f7bace85d301 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreenGate.test.tsx @@ -0,0 +1,113 @@ +/* + * Copyright 2026 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { fireEvent, render, screen } from '@testing-library/react'; +import { LOGGED_IN_USER_STORAGE_KEY } from '../../../constants/constants'; +import { RouteVisibilityProvider } from '../../../context/RouteVisibilityProvider/RouteVisibilityProvider'; +import WelcomeScreenGate from './WelcomeScreenGate'; + +const mockTour = { isTourPage: false }; +const mockWelcome = { isWelcomeVisible: true }; + +jest.mock('../../../hooks/useApplicationStore', () => ({ + useApplicationStore: () => ({ currentUser: { name: 'alex' } }), +})); + +jest.mock('../../../hooks/useWelcomeStore', () => ({ + useWelcomeStore: () => mockWelcome, +})); + +jest.mock('../../../context/TourProvider/TourProvider', () => ({ + useTourProvider: () => mockTour, +})); + +jest.mock('./WelcomeScreen.component', () => + jest.fn(({ onClose }) => ( + + )) +); + +const renderGate = () => + render( + +
home
+
+ ); + +describe('WelcomeScreenGate', () => { + beforeEach(() => { + localStorage.clear(); + mockTour.isTourPage = false; + mockWelcome.isWelcomeVisible = true; + }); + + it('shows the welcome screen to a first-time user and remembers them', async () => { + renderGate(); + + expect(await screen.findByTestId('welcome')).toBeInTheDocument(); + expect(screen.queryByTestId('home')).not.toBeInTheDocument(); + expect(localStorage.getItem(LOGGED_IN_USER_STORAGE_KEY)).toBe('alex'); + }); + + it('shows the home route once the welcome screen is closed', async () => { + renderGate(); + + fireEvent.click(await screen.findByTestId('welcome')); + + expect(screen.getByTestId('home')).toBeInTheDocument(); + }); + + it('dismisses the welcome screen once a kept-alive route is hidden', async () => { + const gate = (isVisible: boolean) => ( + + +
home
+
+
+ ); + const { rerender } = render(gate(true)); + + expect(await screen.findByTestId('welcome')).toBeInTheDocument(); + + // Leaving the route: KeepAliveRoutes hides it instead of unmounting it. + rerender(gate(false)); + // Coming back must show the home, not the welcome screen again. + rerender(gate(true)); + + expect(screen.getByTestId('home')).toBeInTheDocument(); + expect(screen.queryByTestId('welcome')).not.toBeInTheDocument(); + }); + + it('skips the welcome screen for a user who has already seen it', () => { + localStorage.setItem(LOGGED_IN_USER_STORAGE_KEY, 'someone,alex'); + renderGate(); + + expect(screen.getByTestId('home')).toBeInTheDocument(); + expect(screen.queryByTestId('welcome')).not.toBeInTheDocument(); + }); + + it('skips the welcome screen on the tour', () => { + mockTour.isTourPage = true; + renderGate(); + + expect(screen.getByTestId('home')).toBeInTheDocument(); + }); + + it('skips the welcome screen when it is switched off', () => { + mockWelcome.isWelcomeVisible = false; + renderGate(); + + expect(screen.getByTestId('home')).toBeInTheDocument(); + }); +}); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreenGate.tsx b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreenGate.tsx new file mode 100644 index 000000000000..25f491fc3391 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/WelcomeScreenGate.tsx @@ -0,0 +1,36 @@ +/* + * Copyright 2026 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { lazy, ReactNode } from 'react'; +import { useFirstLoginWelcome } from '../../../hooks/useFirstLoginWelcome'; +import withSuspenseFallback from '../../AppRouter/withSuspenseFallback'; + +const WelcomeScreen = withSuspenseFallback( + lazy(() => import('./WelcomeScreen.component')) +); + +/** + * Shows the first-login welcome screen in place of an AI-mode home route until + * the user closes it or navigates away. Wrap the route element, not the page: + * the same page may also render outside its route (e.g. in a modal). + */ +const WelcomeScreenGate = ({ children }: { children: ReactNode }) => { + const { showWelcome, closeWelcome } = useFirstLoginWelcome(); + + return showWelcome ? ( + + ) : ( + <>{children} + ); +}; + +export default WelcomeScreenGate; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/welcome-screen.style.less b/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/welcome-screen.style.less deleted file mode 100644 index 5682263aebe5..000000000000 --- a/openmetadata-ui/src/main/resources/ui/src/components/MyData/WelcomeScreen/welcome-screen.style.less +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2023 Collate. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@import '../../../styles/variables.less'; - -.welcome-screen-container { - .welcome-screen-body { - height: @welcome-page-height; - display: flex; - align-items: center; - justify-content: center; - } -} - -.welcome-screen-header-first-line { - font-size: var(--om-font-size-display-sm); - font-weight: var(--om-font-weight-medium); - color: @text-grey-muted; -} -.welcome-screen-header-second-line { - font-size: var(--om-font-size-42); - font-weight: var(--om-font-weight-extrabold); - color: var(--om-color-black); - line-height: 40px; -} - -.welcome-screen-header-divider { - min-width: 90%; - width: 90%; - height: 1.5px; - background: var(--om-legacy-color-113-71-232-0-35); - margin: var(--om-space-8) 0; -} - -.welcome-screen-button-text { - color: @primary-color; - text-decoration: underline; - font-size: var(--om-font-size-md); - line-height: 1.5rem; -} - -.welcome-screen-img { - width: 80%; -} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/ErrorFallback.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/ErrorFallback.test.tsx new file mode 100644 index 000000000000..ddda60844b31 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/ErrorFallback.test.tsx @@ -0,0 +1,91 @@ +/* + * Copyright 2026 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { fireEvent, render, screen } from '@testing-library/react'; +import { ERROR500 } from '../../../constants/constants'; +import brandClassBase from '../../../utils/BrandData/BrandClassBase'; +import ErrorFallback from './ErrorFallback'; + +const mockNavigate = jest.fn(); + +jest.mock('react-router-dom', () => ({ + useNavigate: () => mockNavigate, +})); + +const chunkLoadError = Object.assign(new Error('chunk 42 failed'), { + name: 'ChunkLoadError', +}); + +describe('ErrorFallback', () => { + beforeEach(() => { + mockNavigate.mockClear(); + document.documentElement.classList.remove('dark-mode'); + }); + + it.each([ + ['a ChunkLoadError', chunkLoadError], + [ + "Vite's dynamic-import failure", + new Error('Failed to fetch dynamically imported module: /x.js'), + ], + [ + "Safari's dynamic-import failure", + new Error('Importing a module script failed.'), + ], + ])('shows the upgrade screen for %s and reloads on refresh', (_, error) => { + render(); + + expect(screen.getByTestId('upgrade-screen')).toBeInTheDocument(); + + fireEvent.click(screen.getByTestId('refresh-page-btn')); + + expect(mockNavigate).toHaveBeenCalledWith(0); + }); + + it('shows the 500 fallback for any other error and resets on Home', () => { + const resetErrorBoundary = jest.fn(); + render( + + ); + + expect(screen.queryByTestId('upgrade-screen')).not.toBeInTheDocument(); + expect(screen.getByText(ERROR500)).toBeInTheDocument(); + expect(screen.getByText('boom')).toBeInTheDocument(); + + fireEvent.click(screen.getByText('label.home')); + + expect(resetErrorBoundary).toHaveBeenCalled(); + expect(mockNavigate).not.toHaveBeenCalled(); + }); + + it.each([ + ['light', false], + ['dark', true], + ] as const)( + 'picks the %s illustration from the root dark-mode class', + (theme, isDark) => { + document.documentElement.classList.toggle('dark-mode', isDark); + const getImg = jest.spyOn(brandClassBase, 'getUpgradeScreenImg'); + + render( + + ); + + expect(getImg).toHaveBeenCalledWith(theme); + + getImg.mockRestore(); + } + ); +}); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/ErrorFallback.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/ErrorFallback.tsx index 70bdf564278b..f30ab783a85a 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/ErrorFallback.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/ErrorBoundary/ErrorFallback.tsx @@ -11,12 +11,12 @@ * limitations under the License. */ import { Box, Button, Typography } from '@openmetadata/ui-core-components'; - +import { RefreshCw01 } from '@openmetadata/ui-core-components/icons'; import React from 'react'; import { FallbackProps } from 'react-error-boundary'; import { useNavigate } from 'react-router-dom'; -import { ReactComponent as OmUpgradeIcon } from '../../../assets/svg/om-upgrade.svg'; import { ERROR500 } from '../../../constants/constants'; +import brandClassBase from '../../../utils/BrandData/BrandClassBase'; import { t } from '../../../utils/i18next/LocalUtil'; const ErrorFallback: React.FC = ({ @@ -24,6 +24,11 @@ const ErrorFallback: React.FC = ({ resetErrorBoundary, }) => { const navigate = useNavigate(); + // This boundary wraps App, so it sits outside the ThemeProvider; read the + // theme off the class the provider left on the root element instead. + const theme = document.documentElement.classList.contains('dark-mode') + ? 'dark' + : 'light'; const isChunkLoadError = error?.name === 'ChunkLoadError' || @@ -33,41 +38,69 @@ const ErrorFallback: React.FC = ({ .includes('failed to fetch dynamically imported module') || // Vite error.message?.toLowerCase().includes('importing a module script failed'); // Vite (Safari) - const message = isChunkLoadError - ? t('message.please-refresh-the-page') - : error.message; - - const title = isChunkLoadError - ? t('message.look-like-upgraded-om') - : ERROR500; - - const handleReset = () => { - if (isChunkLoadError) { - navigate(0); - } else { - resetErrorBoundary(); - } - }; + if (!isChunkLoadError) { + return ( + + + + {ERROR500} + + + {error.message} + + + + + ); + } + // Figma 15445:5396 / 15445:5451. return ( - - - - {title} - - - {message} - + + {t('message.look-like-upgraded-om')} + + +

+ {`${t('message.look-like-upgraded-om')} ✨`} +

+ + {t('message.brand-updated-refresh-page')} + +
+ +
-
); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/discovery/personal-space/personalSpace.module.tsx b/openmetadata-ui/src/main/resources/ui/src/components/discovery/personal-space/personalSpace.module.tsx index 741ce531b698..5bbf333ae2ce 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/discovery/personal-space/personalSpace.module.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/discovery/personal-space/personalSpace.module.tsx @@ -13,6 +13,7 @@ import React from 'react'; import withSuspenseFallback from '../../AppRouter/withSuspenseFallback'; +import WelcomeScreenGate from '../../MyData/WelcomeScreen/WelcomeScreenGate'; import { AppModule } from '../../platform/ai-shell/AppModule.types'; import { RoutePosition } from '../../Settings/Applications/plugins/AppPlugin'; import { PERSONAL_SPACE_ROUTES } from './personalSpace.constants'; @@ -38,9 +39,13 @@ const gatedInbox = ( // My Data is no longer an inbox tab: the inbox is Activity and Triage. Its own // route stays because `/` redirects here in AI mode, making it the landing // page; the user menu also opens it in the personal-space modal. +// The welcome gate wraps the route element only: the modal's copy of My Data +// must never show the first-login welcome screen. const gatedMyData = ( - + + + ); diff --git a/openmetadata-ui/src/main/resources/ui/src/hooks/useFirstLoginWelcome.ts b/openmetadata-ui/src/main/resources/ui/src/hooks/useFirstLoginWelcome.ts new file mode 100644 index 000000000000..4157295e1618 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/hooks/useFirstLoginWelcome.ts @@ -0,0 +1,71 @@ +/* + * Copyright 2026 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { useEffect, useMemo, useState } from 'react'; +import { LOGGED_IN_USER_STORAGE_KEY } from '../constants/constants'; +import { useIsRouteVisible } from '../context/RouteVisibilityProvider/RouteVisibilityProvider'; +import { useTourProvider } from '../context/TourProvider/TourProvider'; +import { useApplicationStore } from './useApplicationStore'; +import { useWelcomeStore } from './useWelcomeStore'; + +/** + * Whether the home route should show the first-login welcome screen, shared by + * the classic and AI-mode homes so both apply the same rule: once per user + * (tracked in `localStorage`), only while `isWelcomeVisible` is on, and never + * on the tour, where it would hide the step targets. Leaving the route dismisses + * it: by unmount on the classic home, and by the route turning hidden where + * KeepAliveRoutes keeps the AI-mode home mounted. + */ +export const useFirstLoginWelcome = () => { + const { currentUser } = useApplicationStore(); + const { isWelcomeVisible } = useWelcomeStore(); + const { isTourPage } = useTourProvider(); + const isRouteVisible = useIsRouteVisible(); + + const [showWelcome, setShowWelcome] = useState(false); + + const storageData = useMemo( + () => localStorage.getItem(LOGGED_IN_USER_STORAGE_KEY), + [] + ); + const loggedInUserName = currentUser?.name ?? ''; + const usernameExistsInCookie = useMemo( + () => + storageData ? storageData.split(',').includes(loggedInUserName) : false, + [storageData, loggedInUserName] + ); + + const updateWelcome = (show: boolean) => { + if (loggedInUserName) { + const seen = storageData ? storageData.split(',') : []; + if (!seen.includes(loggedInUserName)) { + seen.push(loggedInUserName); + localStorage.setItem(LOGGED_IN_USER_STORAGE_KEY, seen.join(',')); + } + } + setShowWelcome(show); + }; + + useEffect(() => { + updateWelcome(!usernameExistsInCookie && isWelcomeVisible && !isTourPage); + + return () => updateWelcome(false); + }, []); + + useEffect(() => { + if (!isRouteVisible && showWelcome) { + setShowWelcome(false); + } + }, [isRouteVisible, showWelcome]); + + return { showWelcome, closeWelcome: () => updateWelcome(false) }; +}; diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ar-sa.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ar-sa.json index df43dfe89608..859cce5ad247 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ar-sa.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ar-sa.json @@ -619,6 +619,7 @@ "conflict-resolution": "حل التعارض", "conflicts-with-published-value": "يتعارض مع القيمة المنشورة", "connect": "Connect", + "connect-a-data-source": "ربط مصدر بيانات", "connected": "متصل", "connection": "اتصال", "connection-condition": "شرط الاتصال", @@ -648,6 +649,7 @@ "context": "السياق", "context-budget-used": "ميزانية السياق المستخدمة", "context-center": "مركز السياق", + "context-platform": "منصة السياق", "context-sections": "أقسام السياق", "continue-editing": "Continue Editing", "contract": "عقد", @@ -2689,6 +2691,7 @@ "refresh-entity": "تحديث {{entity}}", "refresh-frequency": "تردد التحديث", "refresh-log": "تحديث السجل", + "refresh-page": "تحديث الصفحة", "regenerate": "Regenerate", "regenerate-registration-token": "إعادة توليد رمز التسجيل", "region": "المنطقة", @@ -3995,6 +3998,7 @@ "available-on-global-view": "متاح في العرض الشامل", "bot-email-confirmation": "{{email}} لروبوت {{botName}}", "bounds-learned-automatically": "يتم تعلّم الحدود تلقائيًا", + "brand-updated-refresh-page": "لقد حدّثنا {{brandName}} بأحدث التحسينات. حدّث صفحتك للعودة مباشرةً.", "browse-estate-query-placeholder": "استعراض منظومتك البيانية بالكامل — اختر فلترًا من الأعلى أو موقعًا من اليسار وستتراكم هنا.", "build-your-business-dictionary": "أنشئ قاموس أعمالك", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "حدد أو أدخل رمز لون HEX.", "hex-color-validation": "الإدخال ليس رمز HEX صالحًا.", "hi-user": "مرحباً {{user}}", - "hi-user-welcome-to": "مرحباً {{user}}، أهلاً بك في", "hide-raw-connection-log-lines": "إخفاء سجل الاتصال الخام ({{count}})", "home-landing-page-subtitle": "إليك ما يحتاج انتباهك عبر بياناتك.", "icon-aspect-ratio": "يجب أن تكون نسبة العرض إلى الارتفاع للأيقونة 1:1 ويوصى بحجم 64 × 64 بكسل", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "المحاولة المسموح بها لتسجيل الدخول المتتالي الفاشل إلى التطبيق.", "logout-confirmation": "هل أنت متأكد أنك تريد تسجيل الخروج؟", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "يبدو أنك قمت بترقية {{brandName}}", + "look-like-upgraded-om": "تجربة أفضل مع {{brandName}} في انتظارك!", "made-announcement": "أصدر إعلانًا", "manage-airflow-api": "{{brandName}} - واجهات برمجة تطبيقات Airflow المُدارة", "manage-airflow-api-failed": "فشل في العثور على {{brandName}} - واجهات برمجة تطبيقات Airflow المُدارة", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "الصفوف: {{count}}. تتم إزالة الصفوف الفارغة عند الحفظ.", "tag-update-confirmation": "هل ترغب في المتابعة بتحديث العلامات؟", "tailor-experience-for-persona": "صمم التجربة خصيصًا لشخصية {{persona}}، فقط جربها!", - "take-quick-product-tour": "قم بجولة سريعة في المنتج لتبدأ!", + "take-quick-product-tour": "القيام بجولة في المنتج", "target-value-formatted": "الهدف {{value}}", "task-asked": "سأل {{user}} {{time}}", "task-event-approved": "{{user}} وافق على هذه المهمة", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "اختر ما تريد العثور عليه وكيف يرتبط. يتم إنشاء SPARQL أثناء التحديد.", "webhook-listing-message": "يسمح الويب هوك (webhook) بإخطار الخدمات الخارجية بأحداث تغيير البيانات الوصفية التي تحدث في مؤسستك من خلال واجهات برمجة التطبيقات. سجل عناوين URL لرد الاتصال (callback) باستخدام تكامل الويب هوك لتلقي إشعارات أحداث البيانات الوصفية. يمكنك إضافة الويب هوكس، وسردها، وتحديثها، وحذفها.", "webhook-type-listing-message": "توفير تحديثات في الوقت المناسب لمنتجي ومستهلكي البيانات الوصفية عبر إشعارات {{webhookType}}. استخدم ويب هوكس {{webhookType}} لإرسال إشعارات بشأن أحداث تغيير البيانات الوصفية في مؤسستك من خلال واجهات برمجة التطبيقات. يمكنك إضافة هذه الويب هوكس، وسردها، وتحديثها، وحذفها.", - "welcome-screen-message": "اكتشف جميع بياناتك في مكان واحد وتعاون بسلاسة مع فريقك بشأن البيانات التي يمكنك الوثوق بها.", + "welcome-screen-message": "اكتشف جميع بياناتك وافهمها وتعاون عليها في مكان واحد.", "welcome-to-om": "مرحبًا بك في {{brandName}}!", "welcome-to-open-metadata": "مرحبًا بك في {{brandName}}!", "what-should-ai-remember": "ما الذي يجب أن يتذكره الذكاء الاصطناعي؟", @@ -5996,6 +5999,7 @@ "write-your-text": "اكتب {{text}} الخاص بك", "you-can-also-set-up-the-metadata-ingestion": "يمكنك أيضًا إعداد استيعاب البيانات الوصفية.", "you-can-edit-memories-you-created": "يمكنك تعديل الذكريات التي قمت بإنشائها", + "your-platform-is-ready": "{{platform}} الخاصة بك <0>جاهزة", "yours-and-followed-empty-description": "تظهر هنا الأصول التي تملكها والأصول التي تتابعها مع أحدث حالة لها. تابع أي أصل لتبدأ في مراقبته.", "yours-and-followed-widget-description": "الأصول التي تملكها وتتابعها، مع أحدث حالة لها." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json index d204cb405261..c719c0842852 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json @@ -619,6 +619,7 @@ "conflict-resolution": "Konfliktlösung", "conflicts-with-published-value": "Konflikt mit dem veröffentlichten Wert", "connect": "Verbinden", + "connect-a-data-source": "Datenquelle verbinden", "connected": "Verbunden", "connection": "Verbindung", "connection-condition": "Verbindungsbedingung", @@ -648,6 +649,7 @@ "context": "Kontext", "context-budget-used": "Genutztes Kontextbudget", "context-center": "Kontext-Center", + "context-platform": "Kontextplattform", "context-sections": "Kontextabschnitte", "continue-editing": "Continue Editing", "contract": "Vertrag", @@ -2689,6 +2691,7 @@ "refresh-entity": "{{entity}} aktualisieren", "refresh-frequency": "Aktualisierungsfrequenz", "refresh-log": "Protokoll aktualisieren", + "refresh-page": "Seite aktualisieren", "regenerate": "Neu generieren", "regenerate-registration-token": "Neuen Registrierungstoken generieren", "region": "Region", @@ -3995,6 +3998,7 @@ "available-on-global-view": "In der globalen Ansicht verfügbar", "bot-email-confirmation": "{{email}} für den {{botName}}-Bot", "bounds-learned-automatically": "Grenzwerte werden automatisch gelernt", + "brand-updated-refresh-page": "Wir haben {{brandName}} mit den neuesten Verbesserungen aktualisiert. Aktualisieren Sie die Seite, um direkt weiterzumachen.", "browse-estate-query-placeholder": "Durchsuchen Sie Ihren gesamten Datenbestand — wählen Sie oben einen Filter oder links einen Ort aus und sie werden hier gestapelt.", "build-your-business-dictionary": "Erstellen Sie Ihr Unternehmenswörterbuch", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Wählen Sie einen HEX-Farbcode oder geben Sie ihn ein.", "hex-color-validation": "Die Eingabe ist kein gültiger HEX-Code.", "hi-user": "Hallo {{user}}", - "hi-user-welcome-to": "Hallo {{user}}, Willkommen bei", "hide-raw-connection-log-lines": "Rohes Verbindungsprotokoll ausblenden ({{count}})", "home-landing-page-subtitle": "Das benötigt Ihre Aufmerksamkeit in Ihren Daten.", "icon-aspect-ratio": "Das Seitenverhältnis des Symbols sollte 1:1 sein und die empfohlene Größe sollte 64 x 64 px betragen", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Erlaubte Versuche bei aufeinanderfolgenden fehlgeschlagenen Anmeldungen zur Anwendung.", "logout-confirmation": "Sind Sie sicher, dass Sie sich abmelden möchten?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Es sieht so aus, als hätten Sie {{brandName}} aktualisiert.", + "look-like-upgraded-om": "Ein besseres {{brandName}}-Erlebnis erwartet Sie!", "made-announcement": "hat eine Ankündigung gemacht", "manage-airflow-api": "{{brandName}} - Verwaltete Airflow-APIs", "manage-airflow-api-failed": "Konnte {{brandName}} - Verwaltete Airflow-APIs nicht finden.", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Zeilen: {{count}}. Leere Zeilen werden beim Speichern entfernt.", "tag-update-confirmation": "Möchten Sie mit der Aktualisierung der Tags fortfahren?", "tailor-experience-for-persona": "Passen Sie die Erfahrung speziell für das {{persona}}-Persona an, probieren Sie es aus!", - "take-quick-product-tour": "Machen Sie eine Produkttour, um loszulegen!", + "take-quick-product-tour": "Produkttour starten", "target-value-formatted": "Ziel {{value}}", "task-asked": "{{user}} hat {{time}} gefragt", "task-event-approved": "{{user}} hat diese Aufgabe genehmigt", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Wählen Sie, was gefunden werden soll und wie es zusammenhängt. Das SPARQL wird dabei automatisch erstellt.", "webhook-listing-message": "Die Webhook ermöglicht es externen Diensten, über APIs über Metadatenänderungsereignisse in Ihrer Organisation informiert zu werden. Registrieren Sie Callback-URLs mit der Webhook-Integration, um Metadatenereignisbenachrichtigungen zu erhalten. Sie können Webhooks hinzufügen, auflisten, aktualisieren und löschen.", "webhook-type-listing-message": "Geben Sie den Produzenten und Konsumenten von Metadaten rechtzeitig Aktualisierungen über {{webhookType}}-Benachrichtigungen. Verwenden Sie {{webhookType}}-Webhooks, um Benachrichtigungen über Metadatenänderungsereignisse in Ihrer Organisation über APIs zu senden. Sie können diese Webhooks hinzufügen, auflisten, aktualisieren und löschen.", - "welcome-screen-message": "Entdecken Sie alle Ihre Daten an einem Ort und arbeiten Sie nahtlos mit Ihrem Team an Daten zusammen, denen Sie vertrauen können.", + "welcome-screen-message": "Entdecken, verstehen und bearbeiten Sie alle Ihre Daten gemeinsam an einem Ort.", "welcome-to-om": "Willkommen bei {{brandName}}!", "welcome-to-open-metadata": "Willkommen bei {{brandName}}!", "what-should-ai-remember": "Was soll sich die KI merken?", @@ -5996,6 +5999,7 @@ "write-your-text": "Schreiben Sie Ihren {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Sie können auch die Metadateninhalation einrichten.", "you-can-edit-memories-you-created": "Sie können von Ihnen erstellte Erinnerungen bearbeiten", + "your-platform-is-ready": "Ihre {{platform}} ist <0>bereit", "yours-and-followed-empty-description": "Assets, die Sie besitzen oder denen Sie folgen, erscheinen hier mit ihrem aktuellen Status. Folgen Sie einem beliebigen Asset, um es zu beobachten.", "yours-and-followed-widget-description": "Assets, die Sie besitzen und denen Sie folgen, mit ihrem aktuellen Status." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json index e528f9d59569..4ac707bc55cb 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json @@ -619,6 +619,7 @@ "conflict-resolution": "Conflict Resolution", "conflicts-with-published-value": "Conflicts with the published value", "connect": "Connect", + "connect-a-data-source": "Connect a data source", "connected": "Connected", "connection": "Connection", "connection-condition": "Connection Condition", @@ -648,6 +649,7 @@ "context": "Context", "context-budget-used": "Context budget used", "context-center": "Context Center", + "context-platform": "Context Platform", "context-sections": "Context sections", "continue-editing": "Continue Editing", "contract": "Contract", @@ -2689,6 +2691,7 @@ "refresh-entity": "Refresh {{entity}}", "refresh-frequency": "Refresh Frequency", "refresh-log": "Refresh log", + "refresh-page": "Refresh page", "regenerate": "Regenerate", "regenerate-registration-token": "Regenerate registration token", "region": "Region", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Available on the global view", "bot-email-confirmation": "{{email}} for {{botName}} bot", "bounds-learned-automatically": "Bounds learned automatically", + "brand-updated-refresh-page": "We've updated {{brandName}} with the latest improvements. Refresh your page to jump back in.", "browse-estate-query-placeholder": "Browsing your whole data estate — pick a filter above or a location on the left and they stack here.", "build-your-business-dictionary": "Build your business dictionary", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Select or enter HEX color code.", "hex-color-validation": "Input is not valid HEX code.", "hi-user": "Hi {{user}}", - "hi-user-welcome-to": "Hi {{user}}, Welcome to", "hide-raw-connection-log-lines": "Hide raw connection log ({{count}})", "home-landing-page-subtitle": "Here's what needs your attention across your data.", "icon-aspect-ratio": "Icon aspect ratio should be 1:1 and recommended size should be 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Allowed attempt on consecutive failed login to application.", "logout-confirmation": "Are you sure you want to logout?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Look's like you have upgraded {{brandName}}", + "look-like-upgraded-om": "A better {{brandName}} experience awaits!", "made-announcement": "made an announcement", "manage-airflow-api": "{{brandName}} - Managed Airflow APIs", "manage-airflow-api-failed": "Failed to find {{brandName}} - Managed Airflow APIs", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Rows: {{count}}. Empty rows are removed on save.", "tag-update-confirmation": "Would you like to proceed with updating the tags?", "tailor-experience-for-persona": "Tailor the experience specifically for the {{persona}} persona, just give it a spin!", - "take-quick-product-tour": "Take a product tour to get started!", + "take-quick-product-tour": "Take a product tour", "target-value-formatted": "Target {{value}}", "task-asked": "{{user}} asked {{time}}", "task-event-approved": "{{user}} approved this task", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Pick what to find and how it relates. The SPARQL is generated as you go.", "webhook-listing-message": "The webhook allows external services to be notified of the metadata change events happening in your organization through APIs. Register callback URLs with webhook integration to receive metadata event notifications. You can add, list, update, and delete webhooks.", "webhook-type-listing-message": "Provide timely updates to the producers and consumers of metadata via {{webhookType}} notifications. Use {{webhookType}} webhooks to send notifications regarding the metadata change events in your organization through APIs. You can add, list, update, and delete these webhooks.", - "welcome-screen-message": "Discover all your data in one place and collaborate seamlessly with your team on data that you can trust.", + "welcome-screen-message": "Discover, understand and collaborate on all your data in one place.", "welcome-to-om": "Welcome to {{brandName}}!", "welcome-to-open-metadata": "Welcome to {{brandName}}!", "what-should-ai-remember": "What should AI remember?", @@ -5996,6 +5999,7 @@ "write-your-text": "Write your {{text}}", "you-can-also-set-up-the-metadata-ingestion": "You can also set up the metadata ingestion.", "you-can-edit-memories-you-created": "You can edit memories you created", + "your-platform-is-ready": "Your {{platform}} is <0>ready", "yours-and-followed-empty-description": "Assets you own and assets you follow show up here with their latest status. Follow any asset to start watching it.", "yours-and-followed-widget-description": "Assets you own and follow, with their latest status." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json index 6ca49743c452..407c70a60c2b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json @@ -619,6 +619,7 @@ "conflict-resolution": "Resolución de Conflictos", "conflicts-with-published-value": "Entra en conflicto con el valor publicado", "connect": "Conectar", + "connect-a-data-source": "Conectar una fuente de datos", "connected": "Conectado", "connection": "Conexión", "connection-condition": "Condición de Conexión", @@ -648,6 +649,7 @@ "context": "Contexto", "context-budget-used": "Presupuesto de contexto usado", "context-center": "Centro de contexto", + "context-platform": "Plataforma de contexto", "context-sections": "Secciones del contexto", "continue-editing": "Continue Editing", "contract": "Contrato", @@ -2689,6 +2691,7 @@ "refresh-entity": "Refrescar {{entity}}", "refresh-frequency": "Frecuencia de Actualización", "refresh-log": "Actualizar registro", + "refresh-page": "Actualizar página", "regenerate": "Regenerar", "regenerate-registration-token": "Regenerar token de registro", "region": "Región", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Disponible en la vista global", "bot-email-confirmation": "{{email}} para el bot {{botName}}", "bounds-learned-automatically": "Los límites se aprenden automáticamente", + "brand-updated-refresh-page": "Hemos actualizado {{brandName}} con las últimas mejoras. Actualiza la página para volver a empezar.", "browse-estate-query-placeholder": "Explorando todo su patrimonio de datos — seleccione un filtro arriba o una ubicación a la izquierda y se acumularán aquí.", "build-your-business-dictionary": "Cree su diccionario de negocio", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Seleccione o ingrese el código de color HEX.", "hex-color-validation": "La entrada no es un código HEX válido.", "hi-user": "Hola {{user}}", - "hi-user-welcome-to": "Hola {{user}}, Bienvenido a", "hide-raw-connection-log-lines": "Ocultar registro de conexión sin procesar ({{count}})", "home-landing-page-subtitle": "Esto es lo que requiere tu atención en tus datos.", "icon-aspect-ratio": "La relación de aspecto del icono debe ser 1:1 y el tamaño recomendado debe ser 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Intento permitido en el inicio de sesión consecutivamente fallido a la aplicación.", "logout-confirmation": "¿Estás seguro de que quieres cerrar sesión?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Parece que has actualizado {{brandName}}", + "look-like-upgraded-om": "¡Te espera una mejor experiencia con {{brandName}}!", "made-announcement": "hizo un anuncio", "manage-airflow-api": "{{brandName}} - APIs de Airflow", "manage-airflow-api-failed": "No se han encontrado las API de Airflow gestionado de {{brandName}}", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Filas: {{count}}. Las filas vacías se eliminan al guardar.", "tag-update-confirmation": "¿Le gustaría proceder con la actualización de etiquetas?", "tailor-experience-for-persona": "¡Adapte la experiencia específicamente para el persona {{persona}}, pruébelo!", - "take-quick-product-tour": "¡Realiza un recorrido rápido del producto para comenzar!", + "take-quick-product-tour": "Hacer un recorrido por el producto", "target-value-formatted": "Objetivo {{value}}", "task-asked": "{{user}} preguntó {{time}}", "task-event-approved": "{{user}} aprobó esta tarea", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Elige qué buscar y cómo se relaciona. El SPARQL se genera a medida que avanzas.", "webhook-listing-message": "El webhook permite que los servicios externos sean notificados de los eventos de cambio de metadatos que ocurren en su organización a través de APIs. Registre URLs de devolución de llamada con la integración de webhook para recibir notificaciones de eventos de metadatos. Puede agregar, listar, actualizar y eliminar webhooks.", "webhook-type-listing-message": "Proporcione actualizaciones oportunas a los productores y consumidores de metadatos a través de notificaciones de {{webhookType}}. Use los webhooks de {{webhookType}} para enviar notificaciones sobre los eventos de cambio de metadatos en su organización a través de APIs. Puede agregar, listar, actualizar y eliminar estos webhooks.", - "welcome-screen-message": "Descubre todos tus datos en un solo lugar y colabora sin problemas con tu equipo en datos en los que puedas confiar.", + "welcome-screen-message": "Descubre, comprende y colabora en todos tus datos en un solo lugar.", "welcome-to-om": "¡Bienvenido a {{brandName}}!", "welcome-to-open-metadata": "¡Bienvenido a {{brandName}}!", "what-should-ai-remember": "¿Qué debería recordar la IA?", @@ -5996,6 +5999,7 @@ "write-your-text": "Escribe tu {{text}}", "you-can-also-set-up-the-metadata-ingestion": "También puedes configurar la ingesta de metadatos.", "you-can-edit-memories-you-created": "Puede editar los recuerdos que creó", + "your-platform-is-ready": "Tu {{platform}} está <0>lista", "yours-and-followed-empty-description": "Los activos que posees y los que sigues aparecen aquí con su estado más reciente. Sigue cualquier activo para empezar a vigilarlo.", "yours-and-followed-widget-description": "Activos que posees y sigues, con su estado más reciente." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json index 36bc67421aec..e3ebdad967fa 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json @@ -619,6 +619,7 @@ "conflict-resolution": "Résolution des Conflits", "conflicts-with-published-value": "En conflit avec la valeur publiée", "connect": "Connecter", + "connect-a-data-source": "Connecter une source de données", "connected": "Connecté", "connection": "Connexion", "connection-condition": "Condition de Connexion", @@ -648,6 +649,7 @@ "context": "Contexte", "context-budget-used": "Budget de contexte utilisé", "context-center": "Centre de contexte", + "context-platform": "Plateforme de contexte", "context-sections": "Sections du contexte", "continue-editing": "Continue Editing", "contract": "Contrat", @@ -2689,6 +2691,7 @@ "refresh-entity": "Actualiser {{entity}}", "refresh-frequency": "Fréquence d'Actualisation", "refresh-log": "Actualiser le Journal", + "refresh-page": "Actualiser la page", "regenerate": "Regénérer", "regenerate-registration-token": "Regénérer le Jeton d'Inscription", "region": "Région", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Disponible dans la vue globale", "bot-email-confirmation": "{{email}} pour {{botName}} Agent Numérique", "bounds-learned-automatically": "Les bornes sont apprises automatiquement", + "brand-updated-refresh-page": "Nous avons mis à jour {{brandName}} avec les dernières améliorations. Actualisez la page pour reprendre.", "browse-estate-query-placeholder": "Parcourez l'ensemble de votre patrimoine de données — choisissez un filtre ci-dessus ou un emplacement à gauche et ils s'accumuleront ici.", "build-your-business-dictionary": "Créez votre dictionnaire métier", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Sélectionnez un code couleur hexadécimal.", "hex-color-validation": "Code hexadécimal non valide.", "hi-user": "Bonjour {{user}}", - "hi-user-welcome-to": "Bonjour {{user}}, Bienvenue sur", "hide-raw-connection-log-lines": "Masquer le journal de connexion brut ({{count}})", "home-landing-page-subtitle": "Voici ce qui requiert votre attention dans vos données.", "icon-aspect-ratio": "Le rapport d'aspect de l'icône doit être 1:1 et la taille recommandée doit être 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Nombre de tentative infructueuses de login permises.", "logout-confirmation": "Êtes-vous sûr de vouloir vous déconnecter?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Il semble que vous avez mis à niveau {{brandName}}", + "look-like-upgraded-om": "Une meilleure expérience {{brandName}} vous attend !", "made-announcement": "a fait une annonce", "manage-airflow-api": "{{brandName}} - APIs d'Airflow managé", "manage-airflow-api-failed": "Echec de la recherche d'{{brandName}} - API gérées par Airflow", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Lignes : {{count}}. Les lignes vides sont supprimées à l'enregistrement.", "tag-update-confirmation": "Souhaitez-vous procéder à la mise à jour des étiquettes ?", "tailor-experience-for-persona": "Adaptez l'expérience spécifiquement pour le persona {{persona}}, essayez-le !", - "take-quick-product-tour": "Faites une visite guidée pour vous lancer!", + "take-quick-product-tour": "Faire une visite du produit", "target-value-formatted": "Cible {{value}}", "task-asked": "{{user}} a posé une question {{time}}", "task-event-approved": "{{user}} a approuvé cette tâche", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Choisissez ce que vous cherchez et sa relation. Le SPARQL est généré au fur et à mesure.", "webhook-listing-message": "Le webhook permet aux services externes d'être notifiés lors de changements dans les métadonnées au sein de votre organisation grâce à l'API. Enregistrez l'URL de redirection (callback URLs) avec l'intégration webhook pour recevoir des notifications lors de changements dans les métadonnées. Vous pouvez ajouter, \"lister\", \"mettre à jour\" et \"supprimer\" ces \"webhooks\".", "webhook-type-listing-message": "Envoyez des mises à jour à temps aux producteurs et consommateurs de métadonnées grâce aux notifications {{webhookType}}. Utilisez le webhook {{webhookType}} pour envoyer des notifications sur les changements dans les métadonnées dans votre organisation grâce à l'API. Vous pouvez ajouter, \"lister\", \"mettre à jour\" et \"supprimer\" ces \"webhooks\".", - "welcome-screen-message": "Découvrez toutes vos données en un seul endroit et collaborez facilement avec votre équipe sur des données de confiance.", + "welcome-screen-message": "Découvrez, comprenez et collaborez sur toutes vos données en un seul endroit.", "welcome-to-om": "Bienvenue dans {{brandName}} !", "welcome-to-open-metadata": "Bienvenue dans {{brandName}} !", "what-should-ai-remember": "Que devrait retenir l'IA ?", @@ -5996,6 +5999,7 @@ "write-your-text": "Ecrivez votre {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Vous pouvez également configurer l'ingestion de métadonnées.", "you-can-edit-memories-you-created": "Vous pouvez modifier les souvenirs que vous avez créés", + "your-platform-is-ready": "Votre {{platform}} est <0>prête", "yours-and-followed-empty-description": "Les actifs dont vous êtes propriétaire et ceux que vous suivez apparaissent ici avec leur dernier état. Suivez un actif pour commencer à le surveiller.", "yours-and-followed-widget-description": "Les actifs dont vous êtes propriétaire et ceux que vous suivez, avec leur dernier état." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json index 71a722ecac23..42fa801b18cd 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json @@ -619,6 +619,7 @@ "conflict-resolution": "Resolución de Conflitos", "conflicts-with-published-value": "Entra en conflito co valor publicado", "connect": "Conectar", + "connect-a-data-source": "Conectar unha fonte de datos", "connected": "Conectado", "connection": "Conexión", "connection-condition": "Condición de conexión", @@ -648,6 +649,7 @@ "context": "Contexto", "context-budget-used": "Orzamento de contexto usado", "context-center": "Centro de contexto", + "context-platform": "Plataforma de contexto", "context-sections": "Seccións do contexto", "continue-editing": "Continue Editing", "contract": "Contrato", @@ -2689,6 +2691,7 @@ "refresh-entity": "Refrescar {{entity}}", "refresh-frequency": "Frecuencia de actualización", "refresh-log": "Actualizar rexistro", + "refresh-page": "Actualizar a páxina", "regenerate": "Rexenerar", "regenerate-registration-token": "Rexerar o token de rexistro", "region": "Rexión", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Dispoñible na vista global", "bot-email-confirmation": "{{email}} para o bot {{botName}}", "bounds-learned-automatically": "Os límites apréndense automaticamente", + "brand-updated-refresh-page": "Actualizamos {{brandName}} coas últimas melloras. Actualiza a páxina para continuar.", "browse-estate-query-placeholder": "Explorando todo o seu patrimonio de datos — seleccione un filtro arriba ou unha localización á esquerda e acumularanse aquí.", "build-your-business-dictionary": "Crea o teu dicionario de negocio", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Selecciona ou introduce o código de cor HEX.", "hex-color-validation": "A entrada non é un código HEX válido.", "hi-user": "Ola {{user}}", - "hi-user-welcome-to": "Ola {{user}}, benvido a", "hide-raw-connection-log-lines": "Ocultar rexistro de conexión en bruto ({{count}})", "home-landing-page-subtitle": "Isto é o que require a túa atención nos teus datos.", "icon-aspect-ratio": "A relación de aspecto da icona debe ser 1:1 e o tamaño recomendado debe ser 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Intentos permitidos tras fallos consecutivos de inicio de sesión na aplicación.", "logout-confirmation": "Estás seguro de que queres pechar a sesión?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Parece que actualizaches {{brandName}}", + "look-like-upgraded-om": "Agárdate unha mellor experiencia con {{brandName}}!", "made-announcement": "fixo un anuncio", "manage-airflow-api": "{{brandName}} - APIs de Airflow Xestionadas", "manage-airflow-api-failed": "Non se atoparon {{brandName}} - APIs de Airflow Xestionadas", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Filas: {{count}}. As filas baleiras elimínanse ao gardar.", "tag-update-confirmation": "Desexas proceder coa actualización das etiquetas?", "tailor-experience-for-persona": "¡Adapta a experiencia especificamente para o persona {{persona}}, proba!", - "take-quick-product-tour": "Fai un tour rápido polo produto para comezar!", + "take-quick-product-tour": "Facer un percorrido polo produto", "target-value-formatted": "Obxectivo {{value}}", "task-asked": "{{user}} preguntou {{time}}", "task-event-approved": "{{user}} aprobou esta tarefa", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Escolle que buscar e como se relaciona. O SPARQL xérase mentres avanzas.", "webhook-listing-message": "O webhook permite que servizos externos sexan notificados sobre os eventos de cambio de metadatos que ocorren na túa organización a través de APIs. Rexistra URLs de callback coa integración de webhook para recibir notificacións de eventos de metadatos. Podes engadir, listar, actualizar e eliminar webhooks.", "webhook-type-listing-message": "Proporciona actualizacións oportunas aos produtores e consumidores de metadatos a través de notificacións {{webhookType}}. Usa webhooks {{webhookType}} para enviar notificacións sobre os eventos de cambio de metadatos na túa organización a través de APIs. Podes engadir, listar, actualizar e eliminar estes webhooks.", - "welcome-screen-message": "Descobre todos os teus datos nun só lugar e colabora sen problemas co teu equipo en datos nos que podes confiar.", + "welcome-screen-message": "Descubre, comprende e colabora en todos os teus datos nun só lugar.", "welcome-to-om": "Benvido a {{brandName}}!", "welcome-to-open-metadata": "Benvido a {{brandName}}!", "what-should-ai-remember": "Que debe lembrar a IA?", @@ -5996,6 +5999,7 @@ "write-your-text": "Escribe o teu {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Tamén podes configurar a inxestión de metadatos.", "you-can-edit-memories-you-created": "Podes editar os recordos que creaches", + "your-platform-is-ready": "A túa {{platform}} está <0>lista", "yours-and-followed-empty-description": "Os activos que posúes e os que segues aparecen aquí co seu estado máis recente. Segue calquera activo para comezar a vixialo.", "yours-and-followed-widget-description": "Activos que posúes e segues, co seu estado máis recente." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json index 87618dc30e60..a4da28dcfa40 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json @@ -619,6 +619,7 @@ "conflict-resolution": "פתרון קונפליקטים", "conflicts-with-published-value": "מתנגש עם הערך שפורסם", "connect": "התחבר", + "connect-a-data-source": "חיבור מקור נתונים", "connected": "מחובר", "connection": "חיבור", "connection-condition": "תנאי חיבור", @@ -648,6 +649,7 @@ "context": "הקשר", "context-budget-used": "תקציב הקשר בשימוש", "context-center": "מרכז הקשר", + "context-platform": "פלטפורמת הקשר", "context-sections": "מקטעי הקשר", "continue-editing": "Continue Editing", "contract": "חוזה", @@ -2689,6 +2691,7 @@ "refresh-entity": "רענון {{entity}}", "refresh-frequency": "תדירות ריענון", "refresh-log": "רענון לוג", + "refresh-page": "רענון הדף", "regenerate": "צור מחדש", "regenerate-registration-token": "הפק מחדש את אסימון הרישום", "region": "אזור", @@ -3995,6 +3998,7 @@ "available-on-global-view": "זמין בתצוגה הגלובלית", "bot-email-confirmation": "{{email}} לבוט {{botName}}", "bounds-learned-automatically": "הגבולות נלמדים אוטומטית", + "brand-updated-refresh-page": "עדכנו את {{brandName}} עם השיפורים האחרונים. רעננו את הדף כדי לחזור לעבודה.", "browse-estate-query-placeholder": "עיון במלוא מאגר הנתונים שלך — בחר מסנן מלמעלה או מיקום משמאל והם יצטברו כאן.", "build-your-business-dictionary": "בנו את מילון המונחים העסקי שלכם", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "בחר או הזן קוד צבע HEX.", "hex-color-validation": "הקלט אינו קוד HEX תקין.", "hi-user": "שלום {{user}}", - "hi-user-welcome-to": "שלום {{user}}, ברוך הבא אל", "hide-raw-connection-log-lines": "הסתר יומן חיבור גולמי ({{count}})", "home-landing-page-subtitle": "הנה מה שדורש את תשומת לבך בנתונים שלך.", "icon-aspect-ratio": "יחס הגובה-רוחב של האייקון צריך להיות 1:1 והגודל המומלץ צריך להיות 64 x 64 פיקסלים", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "ניתן עדיין לנסות במקרה של כמה ניסיונות כושלים רצופים להתחבר ליישום.", "logout-confirmation": "האם אתה בטוח שברצונך להתנתק?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "נראה שעדכנת את {{brandName}}", + "look-like-upgraded-om": "חוויית {{brandName}} טובה יותר מחכה לך!", "made-announcement": "פרסם הודעה", "manage-airflow-api": "{{brandName}} - ממונה APIs ל-Airflow", "manage-airflow-api-failed": "נכשל במציאת {{brandName}} - Managed Airflow APIs", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "שורות: {{count}}. שורות ריקות יוסרו בעת השמירה.", "tag-update-confirmation": "האם ברצונך להמשיך בעדכון התגים?", "tailor-experience-for-persona": "התאם את החוויה במיוחד עבור אישיות {{persona}}, נסה את זה!", - "take-quick-product-tour": "התחל סיור במוצר כדי להתחיל!", + "take-quick-product-tour": "סיור במוצר", "target-value-formatted": "יעד {{value}}", "task-asked": "{{user}} שאל {{time}}", "task-event-approved": "{{user}} אישר משימה זו", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "בחרו מה לחפש ואיך הוא קשור. ה-SPARQL נוצר תוך כדי.", "webhook-listing-message": "ה-webhook מאפשר לשירותים חיצוניים לקבל התראות על אירועי שינוי בנתוני המטה-דאטה המתרחשים בארגונך דרך API. רשום כתובות URL עם אינטגרציית webhook כדי לקבל התראות על אירועים במטה-דאטה. אפשר להוסיף, לרשום, לעדכן ולמחוק webhooks.", "webhook-type-listing-message": "ספק עדכונים בזמן אמת ליצרנים ולצרכנים של מטה-דאטה דרך {{webhookType}} התראות. השתמש ב-webhooks של {{webhookType}} כדי לשלוח התראות על אירועי שינוי בנתוני המטה-דאטה בארגונך דרך API. אפשר להוסיף, לרשום, לעדכן ולמחוק את אלה webhooks.", - "welcome-screen-message": "גלה את כל הנתונים שלך במקום אחד ושתף פעולה בצורה חלקה עם הצוות שלך על נתונים שאתה יכול לסמוך עליו.", + "welcome-screen-message": "גלו, הבינו ושתפו פעולה על כל הנתונים שלכם במקום אחד.", "welcome-to-om": "ברוך הבא ל-{{brandName}}!", "welcome-to-open-metadata": "ברוך הבא ל-{{brandName}}!", "what-should-ai-remember": "מה בינה מלאכותית צריכה לזכור?", @@ -5996,6 +5999,7 @@ "write-your-text": "כתוב את ה-{{text}} שלך", "you-can-also-set-up-the-metadata-ingestion": "תוכל גם להגדיר את ההזנה של המטה-דאטה.", "you-can-edit-memories-you-created": "אתה יכול לערוך זיכרונות שיצרת", + "your-platform-is-ready": "{{platform}} שלך <0>מוכנה", "yours-and-followed-empty-description": "נכסים שבבעלותכם ונכסים שאתם עוקבים אחריהם מופיעים כאן עם הסטטוס העדכני שלהם. עקבו אחר נכס כלשהו כדי להתחיל לעקוב אחריו.", "yours-and-followed-widget-description": "נכסים שבבעלותכם ושאתם עוקבים אחריהם, עם הסטטוס העדכני שלהם." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/it-it.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/it-it.json index 7c796433a624..b17711d82ab9 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/it-it.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/it-it.json @@ -619,6 +619,7 @@ "conflict-resolution": "Risoluzione dei Conflitti", "conflicts-with-published-value": "In conflitto con il valore pubblicato", "connect": "Connetti", + "connect-a-data-source": "Collega una fonte dati", "connected": "Connesso", "connection": "Connessione", "connection-condition": "Condizione di Connessione", @@ -648,6 +649,7 @@ "context": "Contesto", "context-budget-used": "Budget di contesto utilizzato", "context-center": "Context Center", + "context-platform": "Piattaforma di contesto", "context-sections": "Sezioni del contesto", "continue-editing": "Continua a Modificare", "contract": "Contratto", @@ -2689,6 +2691,7 @@ "refresh-entity": "Aggiorna {{entity}}", "refresh-frequency": "Frequenza di Aggiornamento", "refresh-log": "Aggiorna log", + "refresh-page": "Aggiorna la pagina", "regenerate": "Rigenera", "regenerate-registration-token": "Rigenera token di registrazione", "region": "Regione", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Disponibile nella vista globale", "bot-email-confirmation": "{{email}} per il bot {{botName}}", "bounds-learned-automatically": "Limiti appresi automaticamente", + "brand-updated-refresh-page": "Abbiamo aggiornato {{brandName}} con gli ultimi miglioramenti. Aggiorna la pagina per riprendere da dove eri rimasto.", "browse-estate-query-placeholder": "Stai esplorando l'intero patrimonio di dati — scegli un filtro qui sopra o una posizione a sinistra e verranno aggiunti qui.", "build-your-business-dictionary": "Crea il tuo dizionario di business", "bulk-edit-add-metric-hint": "Crea una metrica completamente nuova in questo batch. I nomi delle metriche esistenti sono bloccati.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Seleziona o inserisci un codice colore HEX.", "hex-color-validation": "Il valore inserito non è un codice HEX valido.", "hi-user": "Ciao {{user}}", - "hi-user-welcome-to": "Ciao {{user}}, Benvenuto in", "hide-raw-connection-log-lines": "Nascondi il log di connessione grezzo ({{count}})", "home-landing-page-subtitle": "Ecco cosa richiede la tua attenzione nei tuoi dati.", "icon-aspect-ratio": "Le proporzioni dell'icona devono essere 1:1 e la dimensione consigliata è 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Tentativi consentiti di login consecutivi non riusciti all'applicazione.", "logout-confirmation": "Vuoi davvero uscire?", "long-form-authored-versioned": "Testi estesi, con autore, versionati.", - "look-like-upgraded-om": "Sembra che tu abbia aggiornato {{brandName}}", + "look-like-upgraded-om": "Ti aspetta un'esperienza {{brandName}} migliore!", "made-announcement": "ha fatto un annuncio", "manage-airflow-api": "{{brandName}} - API Airflow gestite", "manage-airflow-api-failed": "Impossibile trovare {{brandName}} - API Airflow gestite", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Righe: {{count}}. Le righe vuote vengono rimosse al salvataggio.", "tag-update-confirmation": "Vuoi procedere con l'aggiornamento dei tag?", "tailor-experience-for-persona": "Adatta l'esperienza su misura per la persona {{persona}}, provala subito!", - "take-quick-product-tour": "Fai un tour del prodotto per iniziare!", + "take-quick-product-tour": "Fai un tour del prodotto", "target-value-formatted": "Obiettivo {{value}}", "task-asked": "{{user}} ha chiesto {{time}}", "task-event-approved": "{{user}} ha approvato questo task", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Scegli cosa cercare e come è correlato. Lo SPARQL viene generato man mano.", "webhook-listing-message": "Il webhook permette di notificare ai servizi esterni, tramite API, gli eventi di modifica dei metadati che avvengono nella tua organizzazione. Registra gli URL di callback con l'integrazione webhook per ricevere le notifiche sugli eventi dei metadati. Puoi aggiungere, elencare, aggiornare ed eliminare i webhook.", "webhook-type-listing-message": "Fornisci aggiornamenti tempestivi a produttori e consumatori di metadati tramite notifiche {{webhookType}}. Usa i webhook {{webhookType}} per inviare, tramite API, notifiche sugli eventi di modifica dei metadati nella tua organizzazione. Puoi aggiungere, elencare, aggiornare ed eliminare questi webhook.", - "welcome-screen-message": "Scopri tutti i tuoi dati in un unico posto e collabora senza intoppi con il tuo team su dati di cui ti puoi fidare.", + "welcome-screen-message": "Scopri, comprendi e collabora su tutti i tuoi dati in un unico posto.", "welcome-to-om": "Benvenuto in {{brandName}}!", "welcome-to-open-metadata": "Benvenuto in {{brandName}}!", "what-should-ai-remember": "Cosa deve ricordare l'AI?", @@ -5996,6 +5999,7 @@ "write-your-text": "Scrivi {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Puoi anche configurare l'ingestion dei metadati.", "you-can-edit-memories-you-created": "Puoi modificare le memorie che hai creato", + "your-platform-is-ready": "La tua {{platform}} è <0>pronta", "yours-and-followed-empty-description": "Gli asset di cui sei proprietario e quelli che segui appaiono qui con il loro stato più recente. Segui un asset per iniziare a monitorarlo.", "yours-and-followed-widget-description": "Asset di cui sei proprietario e che segui, con il loro stato più recente." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json index 8ccce00ef9a2..a157ee66483a 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json @@ -619,6 +619,7 @@ "conflict-resolution": "競合解決", "conflicts-with-published-value": "公開中の値と競合しています", "connect": "接続", + "connect-a-data-source": "データソースを接続", "connected": "接続済み", "connection": "接続", "connection-condition": "接続条件", @@ -648,6 +649,7 @@ "context": "コンテキスト", "context-budget-used": "使用済みコンテキスト予算", "context-center": "コンテキストセンター", + "context-platform": "コンテキストプラットフォーム", "context-sections": "コンテキストのセクション", "continue-editing": "Continue Editing", "contract": "契約", @@ -2689,6 +2691,7 @@ "refresh-entity": "{{entity}} を更新", "refresh-frequency": "更新頻度", "refresh-log": "ログを更新", + "refresh-page": "ページを更新", "regenerate": "再生成", "regenerate-registration-token": "登録用トークンを再生成", "region": "リージョン", @@ -3995,6 +3998,7 @@ "available-on-global-view": "グローバルビューで利用可能", "bot-email-confirmation": "{{botName}} ボットのメールアドレス:{{email}}", "bounds-learned-automatically": "境界値は自動的に学習されます", + "brand-updated-refresh-page": "{{brandName}}を最新の改善内容で更新しました。ページを更新して再開してください。", "browse-estate-query-placeholder": "データ基盤全体を参照中 — 上のフィルターまたは左の場所を選択すると、ここに積み重なります。", "build-your-business-dictionary": "ビジネス用語辞典を構築", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "HEX カラーコードを選択または入力してください", "hex-color-validation": "有効な HEX コードではありません", "hi-user": "こんにちは {{user}}", - "hi-user-welcome-to": "{{user}} さん、ようこそ", "hide-raw-connection-log-lines": "生の接続ログを非表示 ({{count}})", "home-landing-page-subtitle": "データ全体で対応が必要な項目です。", "icon-aspect-ratio": "アイコンのアスペクト比は1:1で、推奨サイズは64 x 64 pxです", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "アプリケーションへの連続ログイン失敗に対して許可される試行回数。", "logout-confirmation": "ログアウトしてもよろしいですか?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "{{brandName}} がアップグレードされたようです", + "look-like-upgraded-om": "より良い{{brandName}}の体験が待っています!", "made-announcement": "お知らせを投稿しました", "manage-airflow-api": "{{brandName}} - 管理された Airflow API", "manage-airflow-api-failed": "{{brandName}} - 管理された Airflow API が見つかりませんでした", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "行数: {{count}}。空の行は保存時に削除されます。", "tag-update-confirmation": "タグを更新しますか?", "tailor-experience-for-persona": "{{persona}}向けに最適化された体験をカスタマイズしてご利用ください!", - "take-quick-product-tour": "クイックツアーで製品を体験しましょう!", + "take-quick-product-tour": "製品ツアーを見る", "target-value-formatted": "目標{{value}}", "task-asked": "{{user}}が{{time}}に質問しました", "task-event-approved": "{{user}} がこのタスクを承認しました", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "検索対象と関係を選択してください。SPARQL は選択に合わせて生成されます。", "webhook-listing-message": "Webhookを使用すると、組織内で発生するメタデータ変更イベントを外部サービスにAPI経由で通知できます。Webhook連携でコールバックURLを登録し、通知を受け取れるようにしてください。Webhookの追加、一覧表示、更新、削除が可能です。", "webhook-type-listing-message": "{{webhookType}} 通知を使用して、メタデータの提供者および利用者にタイムリーな更新を提供します。Webhookを使って、メタデータ変更イベントをAPI経由で通知できます。Webhookの追加、一覧表示、更新、削除が可能です。", - "welcome-screen-message": "すべてのデータを一か所で見つけ、信頼できるデータでチームとシームレスにコラボレーションしましょう。", + "welcome-screen-message": "すべてのデータを一か所で発見、理解し、共同作業できます。", "welcome-to-om": "{{brandName}}へようこそ!", "welcome-to-open-metadata": "{{brandName}}へようこそ!", "what-should-ai-remember": "AI に何を記憶させますか?", @@ -5996,6 +5999,7 @@ "write-your-text": "{{text}}を入力してください", "you-can-also-set-up-the-metadata-ingestion": "メタデータ取り込みの設定も行えます。", "you-can-edit-memories-you-created": "作成したメモリは編集できます", + "your-platform-is-ready": "{{platform}}の<0>準備が整いました", "yours-and-followed-empty-description": "所有しているアセットとフォロー中のアセットが、最新ステータスとともにここに表示されます。アセットをフォローして監視を始めましょう。", "yours-and-followed-widget-description": "所有およびフォロー中のアセットと、その最新ステータス。" }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json index f615e788f82f..159a7137fb26 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json @@ -619,6 +619,7 @@ "conflict-resolution": "충돌 해결", "conflicts-with-published-value": "게시된 값과 충돌", "connect": "Connect", + "connect-a-data-source": "데이터 소스 연결", "connected": "연결됨", "connection": "연결", "connection-condition": "연결 조건", @@ -648,6 +649,7 @@ "context": "컨텍스트", "context-budget-used": "사용된 컨텍스트 예산", "context-center": "컨텍스트 센터", + "context-platform": "컨텍스트 플랫폼", "context-sections": "컨텍스트 섹션", "continue-editing": "Continue Editing", "contract": "계약", @@ -2689,6 +2691,7 @@ "refresh-entity": "{entity}} 새로고침", "refresh-frequency": "새로 고침 빈도", "refresh-log": "로그 새로고침", + "refresh-page": "페이지 새로고침", "regenerate": "Regenerate", "regenerate-registration-token": "등록 토큰 재생성", "region": "리전", @@ -3995,6 +3998,7 @@ "available-on-global-view": "글로벌 보기에서 사용 가능", "bot-email-confirmation": "{{botName}} 봇의 {{email}}", "bounds-learned-automatically": "경계값이 자동으로 학습됩니다", + "brand-updated-refresh-page": "{{brandName}}이 최신 개선 사항으로 업데이트되었습니다. 페이지를 새로고침하여 다시 시작하세요.", "browse-estate-query-placeholder": "전체 데이터 에스테이트 탐색 중 — 위에서 필터를 선택하거나 왼쪽에서 위치를 선택하면 여기에 쌓입니다.", "build-your-business-dictionary": "비즈니스 용어 사전을 구축하세요", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "HEX 색상 코드를 선택하거나 입력하세요.", "hex-color-validation": "입력이 유효한 HEX 코드가 아닙니다.", "hi-user": "안녕하세요 {{user}}님", - "hi-user-welcome-to": "안녕하세요 {{user}}님, 환영합니다", "hide-raw-connection-log-lines": "원시 연결 로그 숨기기 ({{count}})", "home-landing-page-subtitle": "데이터 전반에서 확인이 필요한 항목입니다.", "icon-aspect-ratio": "아이콘 종횡비는 1:1이어야 하며 권장 크기는 64 x 64 px입니다", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "애플리케이션에 연속 로그인 실패 시 허용된 시도 횟수입니다.", "logout-confirmation": "로그아웃하시겠습니까?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "{{brandName}}를 업그레이드한 것 같습니다", + "look-like-upgraded-om": "더 나은 {{brandName}} 경험이 기다리고 있습니다!", "made-announcement": "공지사항을 작성했습니다", "manage-airflow-api": "{{brandName}} - 관리형 Airflow API", "manage-airflow-api-failed": "{{brandName}} - 관리형 Airflow API를 찾지 못했습니다", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "행: {{count}}. 빈 행은 저장 시 제거됩니다.", "tag-update-confirmation": "새 태그를 추가하시겠습니까?", "tailor-experience-for-persona": "{{persona}} 페르소나에 맞게 경험을 맞춤 설정하고 시도해보세요!", - "take-quick-product-tour": "시작하려면 제품 투어를 진행하세요!", + "take-quick-product-tour": "제품 둘러보기", "target-value-formatted": "목표 {{value}}", "task-asked": "{{user}}님이 {{time}} 질문함", "task-event-approved": "{{user}}님이 이 작업을 승인했습니다", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "찾을 대상과 관계를 선택하세요. SPARQL은 선택하는 대로 생성됩니다.", "webhook-listing-message": "웹훅을 사용하면 외부 서비스가 API를 통해 조직에서 발생하는 메타데이터 변경 이벤트에 대해 알림을 받을 수 있습니다. 메타데이터 이벤트 알림을 받으려면 웹훅 통합으로 콜백 URL을 등록하세요. 웹훅을 추가, 나열, 업데이트 및 삭제할 수 있습니다.", "webhook-type-listing-message": "{{webhookType}} 알림을 통해 메타데이터의 생산자와 소비자에게 시기적절한 업데이트를 제공합니다. {{webhookType}} 웹훅을 사용하여 API를 통해 조직의 메타데이터 변경 이벤트에 대한 알림을 보내세요. 이러한 웹훅을 추가, 나열, 업데이트 및 삭제할 수 있습니다.", - "welcome-screen-message": "모든 데이터를 한 곳에서 발견하고 신뢰할 수 있는 데이터로 팀과 원활하게 협업하세요.", + "welcome-screen-message": "모든 데이터를 한곳에서 발견하고, 이해하고, 협업하세요.", "welcome-to-om": "{{brandName}}에 오신 것을 환영합니다!", "welcome-to-open-metadata": "{{brandName}}에 오신 것을 환영합니다!", "what-should-ai-remember": "AI가 무엇을 기억해야 합니까?", @@ -5996,6 +5999,7 @@ "write-your-text": "{{text}} 작성", "you-can-also-set-up-the-metadata-ingestion": "메타데이터 수집을 설정할 수도 있습니다.", "you-can-edit-memories-you-created": "직접 만든 메모리는 편집할 수 있습니다", + "your-platform-is-ready": "{{platform}}이 <0>준비되었습니다", "yours-and-followed-empty-description": "내가 소유한 자산과 팔로우하는 자산이 최신 상태와 함께 여기에 표시됩니다. 자산을 팔로우하여 지켜보기 시작하세요.", "yours-and-followed-widget-description": "내가 소유하고 팔로우하는 자산과 최신 상태입니다." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json index f16c1a7904e5..08824274ba43 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json @@ -619,6 +619,7 @@ "conflict-resolution": "विवाद निवारण", "conflicts-with-published-value": "प्रकाशित मूल्याशी संघर्ष", "connect": "Connect", + "connect-a-data-source": "डेटा स्रोत कनेक्ट करा", "connected": "जोडलेले", "connection": "कनेक्शन", "connection-condition": "जोडणी अट", @@ -648,6 +649,7 @@ "context": "संदर्भ", "context-budget-used": "वापरलेले संदर्भ बजेट", "context-center": "संदर्भ केंद्र", + "context-platform": "संदर्भ प्लॅटफॉर्म", "context-sections": "संदर्भ विभाग", "continue-editing": "Continue Editing", "contract": "करार", @@ -2689,6 +2691,7 @@ "refresh-entity": "{{entity}} चे पुनरावलोकन करा", "refresh-frequency": "रीफ्रेश वारंवारता", "refresh-log": "लॉग ताजेतवाने करा", + "refresh-page": "पृष्ठ रीफ्रेश करा", "regenerate": "Regenerate", "regenerate-registration-token": "नोंदणी टोकन पुन्हा व्युत्पन्न करा", "region": "प्रदेश", @@ -3995,6 +3998,7 @@ "available-on-global-view": "जागतिक दृश्यात उपलब्ध", "bot-email-confirmation": "{{botName}} बॉटसाठी {{email}}", "bounds-learned-automatically": "मर्यादा स्वयंचलितपणे शिकल्या जातात", + "brand-updated-refresh-page": "आम्ही {{brandName}} नवीनतम सुधारणांसह अद्यतनित केले आहे. पुन्हा सुरू करण्यासाठी तुमचे पृष्ठ रीफ्रेश करा.", "browse-estate-query-placeholder": "तुमच्या संपूर्ण डेटा संपदेचे ब्राउझिंग — वर एक फिल्टर किंवा डाव्या बाजूला एक स्थान निवडा आणि ते इथे एकत्र होतात.", "build-your-business-dictionary": "तुमचा व्यावसायिक शब्दकोश तयार करा", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "HEX रंग कोड निवडा किंवा प्रविष्ट करा.", "hex-color-validation": "इनपुट वैध HEX कोड नाही.", "hi-user": "नमस्कार {{user}}", - "hi-user-welcome-to": "नमस्कार {{user}}, स्वागत आहे", "hide-raw-connection-log-lines": "कच्ची कनेक्शन नोंद लपवा ({{count}})", "home-landing-page-subtitle": "तुमच्या डेटामध्ये कशाकडे लक्ष देणे आवश्यक आहे ते येथे आहे.", "icon-aspect-ratio": "आयकॉनचे आस्पेक्ट रेशो 1:1 असावे आणि शिफारसीत आकार 64 x 64 px असावा", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "अनुप्रयोगावर सलग अयशस्वी लॉगिनवर अनुमत प्रयत्न.", "logout-confirmation": "तुम्हाला खात्री आहे की तुम्ही लॉगआउट करू इच्छिता?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "असे दिसते की तुम्ही {{brandName}} अपग्रेड केले आहे", + "look-like-upgraded-om": "एक उत्तम {{brandName}} अनुभव तुमची वाट पाहत आहे!", "made-announcement": "घोषणा केली", "manage-airflow-api": "{{brandName}} - व्यवस्थापित एअरफ्लो API", "manage-airflow-api-failed": "{{brandName}} - व्यवस्थापित एअरफ्लो API शोधण्यात अयशस्वी", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "पंक्ती: {{count}}. रिकाम्या पंक्ती जतन करताना काढल्या जातात.", "tag-update-confirmation": "नवीन टॅग जोडण्यासाठी तुम्हाला पुढे जायचे आहे का?", "tailor-experience-for-persona": "{{persona}} पर्सोनासाठी अनुभव अनुकूलित करा, प्रयत्न करा!", - "take-quick-product-tour": "प्रारंभ करण्यासाठी एक उत्पादन टूर घ्या!", + "take-quick-product-tour": "उत्पादनाचा फेरफटका घ्या", "target-value-formatted": "लक्ष्य {{value}}", "task-asked": "{{user}} यांनी {{time}} विचारले", "task-event-approved": "{{user}} यांनी हे कार्य मंजूर केले", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "काय शोधायचे आणि ते कसे संबंधित आहे ते निवडा. तुम्ही निवडताच SPARQL तयार होते.", "webhook-listing-message": "वेबहुक तुमच्या संस्थेत घडणाऱ्या मेटाडेटा बदल इव्हेंट्सची API द्वारे बाह्य सेवांना सूचना देण्याची परवानगी देते. मेटाडेटा इव्हेंट सूचना प्राप्त करण्यासाठी वेबहुक एकत्रीकरणासह कॉलबॅक URL नोंदणी करा. तुम्ही वेबहुक जोडू, सूचीबद्ध करू, अद्यतनित करू आणि हटवू शकता.", "webhook-type-listing-message": "{{webhookType}} सूचना द्वारे मेटाडेटा उत्पादक आणि ग्राहकांना वेळेवर अद्यतने प्रदान करा. तुमच्या संस्थेत मेटाडेटा बदल इव्हेंट्सबद्दल सूचना पाठवण्यासाठी {{webhookType}} वेबहुक वापरा. तुम्ही हे वेबहुक जोडू, सूचीबद्ध करू, अद्यतनित करू आणि हटवू शकता.", - "welcome-screen-message": "सर्व डेटा एका ठिकाणी शोधा आणि तुमच्या टीमसह विश्वासार्ह डेटावर अखंडपणे सहयोग करा.", + "welcome-screen-message": "तुमचा सर्व डेटा एकाच ठिकाणी शोधा, समजून घ्या आणि त्यावर सहयोग करा.", "welcome-to-om": "{{brandName}} मध्ये स्वागत आहे!", "welcome-to-open-metadata": "{{brandName}} मध्ये स्वागत आहे!", "what-should-ai-remember": "AI ने काय लक्षात ठेवावे?", @@ -5996,6 +5999,7 @@ "write-your-text": "तुमचा {{text}} लिहा", "you-can-also-set-up-the-metadata-ingestion": "तुम्ही मेटाडेटा अंतर्ग्रहण देखील सेट करू शकता.", "you-can-edit-memories-you-created": "तुम्ही तयार केलेल्या स्मृती संपादित करू शकता", + "your-platform-is-ready": "तुमचा {{platform}} <0>तयार आहे", "yours-and-followed-empty-description": "तुमच्या मालकीच्या आणि तुम्ही फॉलो करत असलेल्या मालमत्ता त्यांच्या नवीनतम स्थितीसह येथे दिसतात. लक्ष ठेवण्यासाठी कोणतीही मालमत्ता फॉलो करा.", "yours-and-followed-widget-description": "तुमच्या मालकीच्या आणि तुम्ही फॉलो करत असलेल्या मालमत्ता, त्यांच्या नवीनतम स्थितीसह." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json index e1e916002b72..fb1c33690867 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json @@ -619,6 +619,7 @@ "conflict-resolution": "Conflictoplossing", "conflicts-with-published-value": "Conflicteert met de gepubliceerde waarde", "connect": "Verbinden", + "connect-a-data-source": "Een gegevensbron koppelen", "connected": "Verbonden", "connection": "Verbinding", "connection-condition": "Verbindingsvoorwaarde", @@ -648,6 +649,7 @@ "context": "Context", "context-budget-used": "Gebruikt contextbudget", "context-center": "Contextcentrum", + "context-platform": "Contextplatform", "context-sections": "Contextsecties", "continue-editing": "Continue Editing", "contract": "Contract", @@ -2689,6 +2691,7 @@ "refresh-entity": "{{entity}} vernieuwen", "refresh-frequency": "Vernieuwfrequentie", "refresh-log": "Vernieuw logboek", + "refresh-page": "Pagina vernieuwen", "regenerate": "Opnieuw genereren", "regenerate-registration-token": "Opnieuw genereren registratietoken", "region": "Regio", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Beschikbaar in de globale weergave", "bot-email-confirmation": "{{email}} voor {{botName}} bot", "bounds-learned-automatically": "Grenswaarden worden automatisch geleerd", + "brand-updated-refresh-page": "We hebben {{brandName}} bijgewerkt met de nieuwste verbeteringen. Vernieuw je pagina om verder te gaan.", "browse-estate-query-placeholder": "U doorzoekt uw volledige databestand — kies boven een filter of links een locatie en ze worden hier gestapeld.", "build-your-business-dictionary": "Bouw uw bedrijfswoordenboek", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Selecteer of voer de HEX-kleurcode in.", "hex-color-validation": "Invoer is geen geldige HEX-code.", "hi-user": "Hallo {{user}}", - "hi-user-welcome-to": "Hoi {{user}}, welkom bij", "hide-raw-connection-log-lines": "Ruwe verbindingslog verbergen ({{count}})", "home-landing-page-subtitle": "Dit vraagt om uw aandacht binnen uw gegevens.", "icon-aspect-ratio": "De beeldverhouding van het pictogram moet 1:1 zijn en de aanbevolen grootte moet 64 x 64 px zijn", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Toegestane poging bij opeenvolgende mislukte aanmelding bij de toepassing.", "logout-confirmation": "Weet je zeker dat je wilt uitloggen?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Het lijkt erop dat u {{brandName}} heeft bijgewerkt", + "look-like-upgraded-om": "Een betere {{brandName}}-ervaring wacht op je!", "made-announcement": "heeft een aankondiging gedaan", "manage-airflow-api": "{{brandName}} - Beheerde Airflow API's", "manage-airflow-api-failed": "Kan {{brandName}} - Beheerde Airflow API's niet vinden", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Rijen: {{count}}. Lege rijen worden bij opslaan verwijderd.", "tag-update-confirmation": "Wilt u doorgaan met het bijwerken van de tags?", "tailor-experience-for-persona": "Pas de ervaring specifiek aan voor de {{persona}} persona, probeer het eens!", - "take-quick-product-tour": "Maak een producttour om aan de slag te gaan!", + "take-quick-product-tour": "Productrondleiding volgen", "target-value-formatted": "Doel {{value}}", "task-asked": "{{user}} heeft {{time}} een vraag gesteld", "task-event-approved": "{{user}} heeft deze taak goedgekeurd", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Kies wat je wilt vinden en hoe het samenhangt. De SPARQL wordt gaandeweg gegenereerd.", "webhook-listing-message": "De webhook maakt het mogelijk externe services op de hoogte te stellen van de metadata-wijzigingsgebeurtenissen die zich voordoen in je organisatie via API's. Registreer callback-URL's met webhook-integratie om meldingen van metadata-gebeurtenissen te ontvangen. Je kunt Webhooks toevoegen, weergeven, updaten en verwijderen.", "webhook-type-listing-message": "Bied tijdige updates aan producenten en consumenten van metadata via {{webhookType}}-meldingen. Gebruik {{webhookType}} Webhooks om meldingen te verzenden over de metadata-wijzigingsgebeurtenissen in je organisatie via API's. Je kunt deze Webhooks toevoegen, weergeven, updaten en verwijderen.", - "welcome-screen-message": "Ontdek al je data op één plek en werk naadloos samen met je team aan data waarop je kunt vertrouwen.", + "welcome-screen-message": "Ontdek, begrijp en werk samen aan al je data op één plek.", "welcome-to-om": "Welkom bij {{brandName}}!", "welcome-to-open-metadata": "Welkom bij {{brandName}}!", "what-should-ai-remember": "Wat moet AI onthouden?", @@ -5996,6 +5999,7 @@ "write-your-text": "Schrijf je {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Je kunt ook de metadataingestie instellen.", "you-can-edit-memories-you-created": "U kunt herinneringen bewerken die u hebt gemaakt", + "your-platform-is-ready": "Je {{platform}} is <0>klaar", "yours-and-followed-empty-description": "Assets waarvan je eigenaar bent en assets die je volgt, verschijnen hier met hun laatste status. Volg een asset om het in de gaten te houden.", "yours-and-followed-widget-description": "Assets waarvan je eigenaar bent en die je volgt, met hun laatste status." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json index 5f57f948195e..6d2f2513d19c 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json @@ -619,6 +619,7 @@ "conflict-resolution": "حل تعارض", "conflicts-with-published-value": "با مقدار منتشرشده تعارض دارد", "connect": "اتصال", + "connect-a-data-source": "اتصال یک منبع داده", "connected": "متصل", "connection": "اتصال", "connection-condition": "شرط اتصال", @@ -648,6 +649,7 @@ "context": "زمینه", "context-budget-used": "بودجه زمینه استفاده‌شده", "context-center": "Centro De Contexto", + "context-platform": "پلتفرم زمینه", "context-sections": "بخش‌های زمینه", "continue-editing": "ادامهٔ ویرایش", "contract": "قرارداد", @@ -2689,6 +2691,7 @@ "refresh-entity": "تازه‌سازی {{entity}}", "refresh-frequency": "فرکانس تازه‌سازی", "refresh-log": "تازه‌سازی لاگ", + "refresh-page": "بارگذاری مجدد صفحه", "regenerate": "ایجاد مجدد", "regenerate-registration-token": "بازسازی توکن ثبت‌نام", "region": "منطقه", @@ -3995,6 +3998,7 @@ "available-on-global-view": "در نمای کلی موجود است", "bot-email-confirmation": "{{email}} برای ربات {{botName}}", "bounds-learned-automatically": "حدود به‌طور خودکار آموخته می‌شوند", + "brand-updated-refresh-page": "{{brandName}} را با آخرین بهبودها به‌روزرسانی کرده‌ایم. برای ادامه، صفحه را بارگذاری مجدد کنید.", "browse-estate-query-placeholder": "مرور کل مجموعه داده شما — یک فیلتر از بالا یا یک مکان از چپ انتخاب کنید و اینجا روی هم انباشته می‌شوند.", "build-your-business-dictionary": "فرهنگ اصطلاحات کسب‌وکار خود را بسازید", "bulk-edit-add-metric-hint": "در این دسته یک معیار کاملاً جدید ایجاد کنید. نام معیارهای موجود قفل است.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "انتخاب یا وارد کردن کد رنگ HEX.", "hex-color-validation": "ورودی کد HEX معتبر نیست.", "hi-user": "سلام {{user}}", - "hi-user-welcome-to": "سلام {{user}}، خوش آمدید به", "hide-raw-connection-log-lines": "پنهان کردن گزارش خام اتصال ({{count}})", "home-landing-page-subtitle": "این موارد در داده‌های شما نیاز به توجه شما دارند.", "icon-aspect-ratio": "نسبت ابعاد آیکون باید 1:1 باشد و اندازه توصیه شده باید 64 x 64 پیکسل باشد", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "تعداد تلاش‌های مجاز برای ورود ناموفق متوالی به برنامه.", "logout-confirmation": "آیا مطمئنید که می‌خواهید خارج شوید؟", "long-form-authored-versioned": "بلند، نگارش‌شده و نسخه‌بندی‌شده.", - "look-like-upgraded-om": "به نظر می‌رسد شما {{brandName}} را ارتقاء داده‌اید.", + "look-like-upgraded-om": "تجربه‌ای بهتر از {{brandName}} در انتظار شماست!", "made-announcement": "یک اعلامیه صادر کرد.", "manage-airflow-api": "{{brandName}} - API‌های مدیریت‌شده Airflow", "manage-airflow-api-failed": "عدم موفقیت در یافتن {{brandName}} - API‌های مدیریت‌شده Airflow", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "ردیف‌ها: {{count}}. ردیف‌های خالی هنگام ذخیره حذف می‌شوند.", "tag-update-confirmation": "آیا می‌خواهید به‌روزرسانی برچسب‌ها را ادامه دهید؟", "tailor-experience-for-persona": "تجربه را به‌طور خاص برای شخصیت {{persona}} تنظیم کنید، حتماً امتحانش کنید!", - "take-quick-product-tour": "یک تور محصولی برای شروع بگذارید!", + "take-quick-product-tour": "گشتی در محصول بزنید", "target-value-formatted": "هدف {{value}}", "task-asked": "{{user}} {{time}} پرسید", "task-event-approved": "{{user}} این وظیفه را تأیید کرد", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "انتخاب کنید چه چیزی را پیدا کنید و چگونه مرتبط است. SPARQL همزمان ساخته می‌شود.", "webhook-listing-message": "Webhook به خدمات خارجی این امکان را می‌دهد که از تغییرات متادیتا در سازمان شما از طریق API‌ها مطلع شوند. آدرس‌های URL را با ادغام وب‌هوک ثبت کنید تا اعلان‌های رویداد متادیتا را دریافت کنید. می‌توانید وب‌هوک‌ها را اضافه، لیست، به‌روزرسانی و حذف کنید.", "webhook-type-listing-message": "برای ارسال به‌روز رسانی‌های به موقع به تولیدکنندگان و مصرف‌کنندگان متادیتا از اعلان‌های {{webhookType}} استفاده کنید. از وب‌هوک‌های {{webhookType}} برای ارسال اعلان‌های مربوط به رویدادهای تغییر متادیتا در سازمان خود از طریق API‌ها استفاده کنید. می‌توانید این وب‌هوک‌ها را اضافه، لیست، به‌روزرسانی و حذف کنید.", - "welcome-screen-message": "تمام داده‌های خود را در یک مکان کشف کنید و به طور هماهنگ با تیم خود روی داده‌هایی که می‌توانید به آن‌ها اعتماد کنید، همکاری کنید.", + "welcome-screen-message": "همه داده‌های خود را در یک مکان کشف کنید، بفهمید و روی آن‌ها همکاری کنید.", "welcome-to-om": "به {{brandName}} خوش آمدید!", "welcome-to-open-metadata": "به {{brandName}} خوش آمدید!", "what-should-ai-remember": "هوش مصنوعی چه چیزی را باید به خاطر بسپارد؟", @@ -5996,6 +5999,7 @@ "write-your-text": "نوشتن {{text}} خود", "you-can-also-set-up-the-metadata-ingestion": "همچنین می‌توانید ورود متادیتا را راه‌اندازی کنید.", "you-can-edit-memories-you-created": "شما می‌توانید خاطراتی را که ایجاد کرده‌اید ویرایش کنید", + "your-platform-is-ready": "{{platform}} شما <0>آماده است", "yours-and-followed-empty-description": "دارایی‌هایی که مالک آن‌ها هستید و دارایی‌هایی که دنبال می‌کنید همراه با آخرین وضعیتشان در اینجا نمایش داده می‌شوند. هر دارایی را دنبال کنید تا پایش آن را آغاز کنید.", "yours-and-followed-widget-description": "دارایی‌هایی که مالک آن‌ها هستید و دنبالشان می‌کنید، همراه با آخرین وضعیتشان." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json index f27abeaa186e..433d73814733 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json @@ -619,6 +619,7 @@ "conflict-resolution": "Resolução de Conflitos", "conflicts-with-published-value": "Em conflito com o valor publicado", "connect": "Conectar", + "connect-a-data-source": "Conectar uma fonte de dados", "connected": "Conectado", "connection": "Conexão", "connection-condition": "Condição de Conexão", @@ -648,6 +649,7 @@ "context": "Contexto", "context-budget-used": "Orçamento de contexto usado", "context-center": "Central de contexto", + "context-platform": "Plataforma de contexto", "context-sections": "Seções do contexto", "continue-editing": "Continue Editing", "contract": "Contrato", @@ -2689,6 +2691,7 @@ "refresh-entity": "Atualizar {{entity}}", "refresh-frequency": "Frequência de Atualização", "refresh-log": "Atualizar log", + "refresh-page": "Atualizar página", "regenerate": "Regenerar", "regenerate-registration-token": "Regenerar token de registro", "region": "Região", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Disponível na visão global", "bot-email-confirmation": "{{email}} para o bot {{botName}}", "bounds-learned-automatically": "Os limites são aprendidos automaticamente", + "brand-updated-refresh-page": "Atualizamos o {{brandName}} com as melhorias mais recentes. Atualize a página para continuar.", "browse-estate-query-placeholder": "Navegando por todo o seu acervo de dados — escolha um filtro acima ou uma localização à esquerda e eles se acumularão aqui.", "build-your-business-dictionary": "Crie seu dicionário de negócio", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Selecione ou insira o código de cor HEX.", "hex-color-validation": "A entrada não é um código HEX válido.", "hi-user": "Olá {{user}}", - "hi-user-welcome-to": "Olá {{user}}, Bem-vindo(a) ao", "hide-raw-connection-log-lines": "Ocultar log de conexão bruto ({{count}})", "home-landing-page-subtitle": "Veja o que precisa da sua atenção nos seus dados.", "icon-aspect-ratio": "A proporção do ícone deve ser 1:1 e o tamanho recomendado deve ser 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Tentativa permitida após falhas consecutivas de login no aplicativo.", "logout-confirmation": "Você tem certeza de que deseja sair?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Parece que você atualizou o {{brandName}}", + "look-like-upgraded-om": "Uma experiência melhor com o {{brandName}} espera por você!", "made-announcement": "fez um anúncio", "manage-airflow-api": "{{brandName}} - APIs Gerenciadas de Airflow", "manage-airflow-api-failed": "Falha ao encontrar {{brandName}} - APIs Gerenciadas de Airflow", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Linhas: {{count}}. Linhas vazias são removidas ao salvar.", "tag-update-confirmation": "Você gostaria de continuar com a atualização das tags?", "tailor-experience-for-persona": "Adapte a experiência especificamente para o persona {{persona}}, experimente!", - "take-quick-product-tour": "Faça um tour pelo produto para começar!", + "take-quick-product-tour": "Fazer um tour pelo produto", "target-value-formatted": "Meta {{value}}", "task-asked": "{{user}} perguntou {{time}}", "task-event-approved": "{{user}} aprovou esta tarefa", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Escolha o que encontrar e como se relaciona. O SPARQL é gerado à medida que você avança.", "webhook-listing-message": "O webhook permite que serviços externos sejam notificados dos eventos de mudança de metadados que ocorrem em sua organização por meio de APIs. Registre URLs de retorno de chamada com integração de webhook para receber notificações de eventos de metadados. Você pode adicionar, listar, atualizar e excluir webhooks.", "webhook-type-listing-message": "Forneça atualizações oportunas aos produtores e consumidores de metadados por meio de notificações {{webhookType}}. Use webhooks {{webhookType}} para enviar notificações sobre eventos de mudança de metadados em sua organização por meio de APIs. Você pode adicionar, listar, atualizar e excluir esses webhooks.", - "welcome-screen-message": "Descubra todos os seus dados em um só lugar e colabore perfeitamente com sua equipe em dados em que você pode confiar.", + "welcome-screen-message": "Descubra, entenda e colabore em todos os seus dados em um só lugar.", "welcome-to-om": "Bem-vindo ao {{brandName}}!", "welcome-to-open-metadata": "Bem-vindo ao {{brandName}}!", "what-should-ai-remember": "O que a IA deve lembrar?", @@ -5996,6 +5999,7 @@ "write-your-text": "Escreva o seu {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Você também pode configurar a ingestão de metadados.", "you-can-edit-memories-you-created": "Você pode editar as memórias que você criou", + "your-platform-is-ready": "Sua {{platform}} está <0>pronta", "yours-and-followed-empty-description": "Os ativos que você possui e os que segue aparecem aqui com o status mais recente. Siga qualquer ativo para começar a acompanhá-lo.", "yours-and-followed-widget-description": "Ativos que você possui e segue, com o status mais recente." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json index ab7925250e4b..0fc99ab16815 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json @@ -619,6 +619,7 @@ "conflict-resolution": "Resolução de Conflitos", "conflicts-with-published-value": "Em conflito com o valor publicado", "connect": "Ligar", + "connect-a-data-source": "Ligar uma fonte de dados", "connected": "Ligado", "connection": "Conexão", "connection-condition": "Condição de ligação", @@ -648,6 +649,7 @@ "context": "Contexto", "context-budget-used": "Orçamento de contexto utilizado", "context-center": "Centro de contexto", + "context-platform": "Plataforma de contexto", "context-sections": "Secções do contexto", "continue-editing": "Continue Editing", "contract": "Contrato", @@ -2689,6 +2691,7 @@ "refresh-entity": "Atualizar {{entity}}", "refresh-frequency": "Frequência de atualização", "refresh-log": "Atualizar log", + "refresh-page": "Atualizar página", "regenerate": "Regenerar", "regenerate-registration-token": "Regenerar token de registo", "region": "Região", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Disponível na vista global", "bot-email-confirmation": "{{email}} para o bot {{botName}}", "bounds-learned-automatically": "Os limites são aprendidos automaticamente", + "brand-updated-refresh-page": "Atualizámos o {{brandName}} com as melhorias mais recentes. Atualize a página para continuar.", "browse-estate-query-placeholder": "A navegar por todo o seu acervo de dados — selecione um filtro acima ou uma localização à esquerda e estes acumular-se-ão aqui.", "build-your-business-dictionary": "Crie o seu dicionário de negócio", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Selecione ou insira o código de cor HEX.", "hex-color-validation": "A entrada não é um código HEX válido.", "hi-user": "Olá {{user}}", - "hi-user-welcome-to": "Olá {{user}}, Bem-vindo(a) ao", "hide-raw-connection-log-lines": "Ocultar registo de ligação bruto ({{count}})", "home-landing-page-subtitle": "Eis o que precisa da sua atenção nos seus dados.", "icon-aspect-ratio": "A proporção do ícone deve ser 1:1 e o tamanho recomendado deve ser 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Tentativa permitida após falhas consecutivas de login no aplicativo.", "logout-confirmation": "Você tem certeza de que deseja sair?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "Parece que atualizou o {{brandName}}", + "look-like-upgraded-om": "Uma experiência melhor com o {{brandName}} aguarda-o!", "made-announcement": "fez um anúncio", "manage-airflow-api": "{{brandName}} - APIs Gerenciadas de Airflow", "manage-airflow-api-failed": "Falha ao encontrar {{brandName}} - APIs Gerenciadas de Airflow", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Linhas: {{count}}. As linhas vazias são removidas ao guardar.", "tag-update-confirmation": "Deseja prosseguir com a atualização das etiquetas?", "tailor-experience-for-persona": "Adapte a experiência especificamente para o persona {{persona}}, experimente!", - "take-quick-product-tour": "Faça um tour pelo produto para começar!", + "take-quick-product-tour": "Fazer uma visita guiada ao produto", "target-value-formatted": "Meta {{value}}", "task-asked": "{{user}} perguntou {{time}}", "task-event-approved": "{{user}} aprovou esta tarefa", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Escolha o que pretende encontrar e como se relaciona. O SPARQL é gerado à medida que avança.", "webhook-listing-message": "O webhook permite que serviços externos sejam notificados dos eventos de mudança de metadados que ocorrem em sua organização por meio de APIs. Registe URLs de retorno de chamada com integração de webhook para receber notificações de eventos de metadados. Você pode adicionar, listar, atualizar e excluir webhooks.", "webhook-type-listing-message": "Forneça atualizações oportunas aos produtores e consumidores de metadados por meio de notificações {{webhookType}}. Use webhooks {{webhookType}} para enviar notificações sobre eventos de mudança de metadados em sua organização por meio de APIs. Você pode adicionar, listar, atualizar e excluir esses webhooks.", - "welcome-screen-message": "Descubra todos os seus dados em um só lugar e colabore perfeitamente com sua equipa em dados em que você pode confiar.", + "welcome-screen-message": "Descubra, compreenda e colabore em todos os seus dados num só local.", "welcome-to-om": "Bem-vindo ao {{brandName}}!", "welcome-to-open-metadata": "Bem-vindo ao {{brandName}}!", "what-should-ai-remember": "O que deve a IA lembrar?", @@ -5996,6 +5999,7 @@ "write-your-text": "Escreva o seu {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Você também pode configurar a ingestão de metadados.", "you-can-edit-memories-you-created": "Pode editar as memórias que criou", + "your-platform-is-ready": "A sua {{platform}} está <0>pronta", "yours-and-followed-empty-description": "Os ativos de que é proprietário e os que segue aparecem aqui com o estado mais recente. Siga qualquer ativo para começar a acompanhá-lo.", "yours-and-followed-widget-description": "Ativos de que é proprietário e que segue, com o estado mais recente." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json index d00e6c27045a..6ac86ccf1444 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json @@ -619,6 +619,7 @@ "conflict-resolution": "Разрешение Конфликтов", "conflicts-with-published-value": "Конфликтует с опубликованным значением", "connect": "Подключить", + "connect-a-data-source": "Подключить источник данных", "connected": "Подключено", "connection": "Соединение", "connection-condition": "Условие Подключения", @@ -648,6 +649,7 @@ "context": "Контекст", "context-budget-used": "Использованный бюджет контекста", "context-center": "Центр контекста", + "context-platform": "Контекстная платформа", "context-sections": "Разделы контекста", "continue-editing": "Продолжить редактирование", "contract": "Контракт", @@ -2689,6 +2691,7 @@ "refresh-entity": "Обновить объект «{{entity}}»", "refresh-frequency": "Частота обновления", "refresh-log": "Обновить логи", + "refresh-page": "Обновить страницу", "regenerate": "Создать заново", "regenerate-registration-token": "Восстановить регистрационный токен", "region": "Регион", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Доступно в глобальном представлении", "bot-email-confirmation": "{{email}} для бота {{botName}}", "bounds-learned-automatically": "Границы определяются автоматически", + "brand-updated-refresh-page": "Мы обновили {{brandName}}, добавив последние улучшения. Обновите страницу, чтобы продолжить работу.", "browse-estate-query-placeholder": "Просмотр всего массива данных — выберите фильтр сверху или местоположение слева, и они накапливаются здесь.", "build-your-business-dictionary": "Создайте бизнес-словарь", "bulk-edit-add-metric-hint": "Создайте новую метрику в этом пакете. Имена существующих метрик заблокированы.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Выберите или введите шестнадцатеричный код цвета.", "hex-color-validation": "Введен недопустимый hex-код", "hi-user": "Здравствуйте, {{user}}", - "hi-user-welcome-to": "Привет, {{user}}! Добро пожаловать в", "hide-raw-connection-log-lines": "Скрыть необработанный журнал соединения ({{count}})", "home-landing-page-subtitle": "Вот что требует вашего внимания в ваших данных.", "icon-aspect-ratio": "Соотношение сторон иконки должно быть 1:1, рекомендуемый размер - 64 x 64 пикселя", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Допустимое количество попыток входа после сбоя.", "logout-confirmation": "Вы уверены, что хотите выйти из системы?", "long-form-authored-versioned": "Развёрнутый, авторский, версионируемый.", - "look-like-upgraded-om": "Похоже, вы обновили {{brandName}}.", + "look-like-upgraded-om": "Вас ждёт ещё более удобный {{brandName}}!", "made-announcement": "сделано объявление", "manage-airflow-api": "{{brandName}} — управляемые API Airflow", "manage-airflow-api-failed": "Не удалось найти {{brandName}} - Managed Airflow APIs", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Строк: {{count}}. Пустые строки удаляются при сохранении.", "tag-update-confirmation": "Продолжить добавление нового тега?", "tailor-experience-for-persona": "Настройте опыт специально для персонажа {{persona}}, попробуйте!", - "take-quick-product-tour": "Ознакомьтесь с продуктом, чтобы начать работу!", + "take-quick-product-tour": "Пройти обзор продукта", "target-value-formatted": "Цель {{value}}", "task-asked": "Вопрос от {{user}} {{time}}", "task-event-approved": "{{user}} подтвердил эту задачу", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Выберите, что искать и как это связано. SPARQL формируется по ходу выбора.", "webhook-listing-message": "Веб-перехватчик позволяет внешним службам получать уведомления о событиях изменения метаданных, происходящих в вашей организации, через API. Зарегистрируйте URL-адреса обратного вызова с интеграцией веб-перехватчика, чтобы получать уведомления о событиях метаданных. Вы можете добавлять, перечислять, обновлять и удалять веб-перехватчики.", "webhook-type-listing-message": "Предоставляйте своевременные обновления создателям и потребителям метаданных с помощью уведомлений {{webhookType}}. Используйте веб-перехватчики {{webhookType}} для отправки уведомлений о событиях изменения метаданных в вашей организации через API. Вы можете добавлять, перечислять, обновлять и удалять эти веб-перехватчики.", - "welcome-screen-message": "Находите все свои данные в одном месте и беспрепятственно работайте со своей командой над данными, которым вы можете доверять.", + "welcome-screen-message": "Находите, изучайте и совместно работайте со всеми своими данными в одном месте.", "welcome-to-om": "Добро пожаловать в {{brandName}}!", "welcome-to-open-metadata": "Добро пожаловать в {{brandName}}!", "what-should-ai-remember": "Что должен запомнить ИИ?", @@ -5996,6 +5999,7 @@ "write-your-text": "Напишите {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Вы также можете настроить прием метаданных.", "you-can-edit-memories-you-created": "Вы можете редактировать созданные вами воспоминания", + "your-platform-is-ready": "Ваша {{platform}} <0>готова", "yours-and-followed-empty-description": "Здесь появляются активы, которыми вы владеете и за которыми следите, с их последним статусом. Подпишитесь на любой актив, чтобы начать за ним следить.", "yours-and-followed-widget-description": "Активы, которыми вы владеете и за которыми следите, с их последним статусом." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/sv-se.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/sv-se.json index 12ba36df6b8c..ef375af98a1c 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/sv-se.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/sv-se.json @@ -619,6 +619,7 @@ "conflict-resolution": "Konfliktlösning", "conflicts-with-published-value": "I konflikt med det publicerade värdet", "connect": "Anslut", + "connect-a-data-source": "Anslut en datakälla", "connected": "Ansluten", "connection": "Anslutning", "connection-condition": "Anslutningsvillkor", @@ -648,6 +649,7 @@ "context": "Kontext", "context-budget-used": "Använd kontextbudget", "context-center": "Kontextcenter", + "context-platform": "Kontextplattform", "context-sections": "Kontextavsnitt", "continue-editing": "Fortsätt redigera", "contract": "Kontrakt", @@ -2689,6 +2691,7 @@ "refresh-entity": "Uppdatera {{entity}}", "refresh-frequency": "Uppdateringsfrekvens", "refresh-log": "Uppdatera logg", + "refresh-page": "Uppdatera sidan", "regenerate": "Regenerate", "regenerate-registration-token": "Generera om registreringstoken", "region": "Region", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Tillgänglig i den globala vyn", "bot-email-confirmation": "{{email}} för boten {{botName}}", "bounds-learned-automatically": "Gränsvärden lärs in automatiskt", + "brand-updated-refresh-page": "Vi har uppdaterat {{brandName}} med de senaste förbättringarna. Uppdatera sidan för att fortsätta.", "browse-estate-query-placeholder": "Browsing your whole data estate — pick a filter above or a location on the left and they stack here.", "build-your-business-dictionary": "Bygg din affärsordlista", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "Välj eller ange HEX-färgkod.", "hex-color-validation": "Indata är inte en giltig HEX-kod.", "hi-user": "Hej {{user}}", - "hi-user-welcome-to": "Hej {{user}}, välkommen till", "hide-raw-connection-log-lines": "Dölj rå anslutningslogg ({{count}})", "home-landing-page-subtitle": "Här är vad som behöver din uppmärksamhet i dina data.", "icon-aspect-ratio": "Ikonens bildförhållande bör vara 1:1 och rekommenderad storlek bör vara 64 x 64 px", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Tillåtna försök vid på varandra följande misslyckade inloggningar till applikationen.", "logout-confirmation": "Är du säker på att du vill logga ut?", "long-form-authored-versioned": "Långformat, författat, versionerat.", - "look-like-upgraded-om": "Det verkar som att du har uppgraderat {{brandName}}", + "look-like-upgraded-om": "En bättre {{brandName}}-upplevelse väntar!", "made-announcement": "gjorde ett tillkännagivande", "manage-airflow-api": "{{brandName}} - Managed Airflow APIs", "manage-airflow-api-failed": "Det gick inte att hitta {{brandName}} - Managed Airflow APIs", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Rader: {{count}}. Tomma rader tas bort när du sparar.", "tag-update-confirmation": "Vill du fortsätta med att uppdatera taggarna?", "tailor-experience-for-persona": "Skräddarsy upplevelsen specifikt för personan {{persona}}, prova bara!", - "take-quick-product-tour": "Ta en produktrundtur för att komma igång!", + "take-quick-product-tour": "Ta en produktrundtur", "target-value-formatted": "Mål {{value}}", "task-asked": "{{user}} frågade {{time}}", "task-event-approved": "{{user}} godkände denna uppgift", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Välj vad som ska hittas och hur det hänger ihop. SPARQL-koden genereras medan du väljer.", "webhook-listing-message": "Webhook gör det möjligt att meddela externa tjänster om händelser vid metadataändringar som sker i din organisation via API:er. Registrera callback-URL:er med Webhook-integrationen för att ta emot notiser om metadatahändelser. Du kan lägga till, lista, uppdatera och ta bort webhooks.", "webhook-type-listing-message": "Ge producenter och konsumenter av metadata aktuella uppdateringar via {{webhookType}}-notiser. Använd {{webhookType}}-webhooks för att skicka notiser om händelser vid metadataändringar i din organisation via API:er. Du kan lägga till, lista, uppdatera och ta bort dessa webhooks.", - "welcome-screen-message": "Upptäck all din data på ett ställe och samarbeta sömlöst med ditt team kring data du kan lita på.", + "welcome-screen-message": "Upptäck, förstå och samarbeta kring all din data på ett ställe.", "welcome-to-om": "Välkommen till {{brandName}}!", "welcome-to-open-metadata": "Välkommen till {{brandName}}!", "what-should-ai-remember": "Vad ska AI komma ihåg?", @@ -5996,6 +5999,7 @@ "write-your-text": "Skriv din {{text}}", "you-can-also-set-up-the-metadata-ingestion": "Du kan också konfigurera metadatainmatningen.", "you-can-edit-memories-you-created": "Du kan redigera minnen som du skapat", + "your-platform-is-ready": "Din {{platform}} är <0>redo", "yours-and-followed-empty-description": "Tillgångar du äger och tillgångar du följer visas här med sin senaste status. Följ valfri tillgång för att börja bevaka den.", "yours-and-followed-widget-description": "Tillgångar du äger och följer, med deras senaste status." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json index 767243eb1c90..666c0f3a1f31 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json @@ -619,6 +619,7 @@ "conflict-resolution": "การแก้ไขข้อขัดแย้ง", "conflicts-with-published-value": "ขัดแย้งกับค่าที่เผยแพร่", "connect": "เชื่อมต่อ", + "connect-a-data-source": "เชื่อมต่อแหล่งข้อมูล", "connected": "เชื่อมต่อแล้ว", "connection": "การเชื่อมต่อ", "connection-condition": "เงื่อนไขการเชื่อมต่อ", @@ -648,6 +649,7 @@ "context": "บริบท", "context-budget-used": "งบประมาณบริบทที่ใช้", "context-center": "ศูนย์บริบท", + "context-platform": "แพลตฟอร์มบริบท", "context-sections": "ส่วนของบริบท", "continue-editing": "Continue Editing", "contract": "สัญญา", @@ -2689,6 +2691,7 @@ "refresh-entity": "รีเฟรช {{entity}}", "refresh-frequency": "ความถี่ในการรีเฟรช", "refresh-log": "รีเฟรชบันทึก", + "refresh-page": "รีเฟรชหน้า", "regenerate": "สร้างใหม่", "regenerate-registration-token": "สร้างโทเค็นการลงทะเบียนใหม่", "region": "ภูมิภาค", @@ -3995,6 +3998,7 @@ "available-on-global-view": "ใช้ได้ในมุมมองรวม", "bot-email-confirmation": "{{email}} สำหรับบอท {{botName}}", "bounds-learned-automatically": "ระบบเรียนรู้ขอบเขตโดยอัตโนมัติ", + "brand-updated-refresh-page": "เราได้อัปเดต {{brandName}} ด้วยการปรับปรุงล่าสุด รีเฟรชหน้าเพื่อกลับไปใช้งานต่อ", "browse-estate-query-placeholder": "กำลังเรียกดูคลังข้อมูลทั้งหมดของคุณ — เลือกตัวกรองด้านบนหรือตำแหน่งด้านซ้าย และจะแสดงที่นี่", "build-your-business-dictionary": "สร้างพจนานุกรมธุรกิจของคุณ", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "เลือกหรือตั้งรหัสสี HEX", "hex-color-validation": "ข้อมูลนำเข้าคือรหัส HEX ที่ไม่ถูกต้อง", "hi-user": "สวัสดี {{user}}", - "hi-user-welcome-to": "สวัสดี {{user}}, ยินดีต้อนรับสู่", "hide-raw-connection-log-lines": "ซ่อนบันทึกการเชื่อมต่อดิบ ({{count}})", "home-landing-page-subtitle": "นี่คือสิ่งที่ต้องการความสนใจจากคุณในข้อมูลของคุณ", "icon-aspect-ratio": "อัตราส่วนของไอคอนควรเป็น 1:1 และขนาดที่แนะนำควรเป็น 64 x 64 พิกเซล", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "จำนวนครั้งที่อนุญาตในการเข้าสู่ระบบที่ล้มเหลวติดต่อกัน", "logout-confirmation": "คุณแน่ใจว่าต้องการออกจากระบบหรือไม่?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "ดูเหมือนว่าคุณได้อัปเกรด {{brandName}}", + "look-like-upgraded-om": "ประสบการณ์ {{brandName}} ที่ดียิ่งขึ้นรอคุณอยู่!", "made-announcement": "ได้ทำประกาศ", "manage-airflow-api": "{{brandName}} - API Airflow ที่จัดการแล้ว", "manage-airflow-api-failed": "ไม่สามารถค้นหา {{brandName}} - Managed Airflow APIs ได้", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "แถว: {{count}} แถวว่างจะถูกลบออกเมื่อบันทึก", "tag-update-confirmation": "คุณต้องการดำเนินการอัปเดตแท็กหรือไม่?", "tailor-experience-for-persona": "ปรับแต่งประสบการณ์เฉพาะสำหรับบุคลิกภาพ {{persona}} ลองดูสิ!", - "take-quick-product-tour": "เข้าร่วมทัวร์ผลิตภัณฑ์เพื่อเริ่มต้น!", + "take-quick-product-tour": "ชมทัวร์ผลิตภัณฑ์", "target-value-formatted": "เป้าหมาย {{value}}", "task-asked": "{{user}} ถามเมื่อ {{time}}", "task-event-approved": "{{user}} อนุมัติงานนี้", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "เลือกสิ่งที่ต้องการค้นหาและความสัมพันธ์ ระบบจะสร้าง SPARQL ให้ระหว่างที่คุณเลือก", "webhook-listing-message": "Webhook ช่วยให้บริการภายนอกได้รับการแจ้งเตือนเกี่ยวกับเหตุการณ์การเปลี่ยนแปลงข้อมูลเมตาที่เกิดขึ้นในองค์กรของคุณผ่าน APIs ลงทะเบียน URL คืนค่ากับการรวม webhook เพื่อตรับการแจ้งเตือนเหตุการณ์ข้อมูลเมตา คุณสามารถเพิ่ม, แสดง, อัปเดต และลบ webhook ได้", "webhook-type-listing-message": "ให้การอัปเดตที่ทันเวลาแก่ผู้ผลิตและผู้บริโภคข้อมูลเมตาผ่านการแจ้งเตือน {{webhookType}} ใช้ webhook {{webhookType}} เพื่อส่งการแจ้งเตือนเกี่ยวกับเหตุการณ์การเปลี่ยนแปลงข้อมูลเมตาในองค์กรของคุณผ่าน APIs คุณสามารถเพิ่ม, แสดง, อัปเดต และลบ webhook เหล่านี้ได้", - "welcome-screen-message": "ค้นพบข้อมูลทั้งหมดของคุณในที่เดียวและร่วมมือกับทีมของคุณบนข้อมูลที่คุณไว้วางใจอย่างราบรื่น", + "welcome-screen-message": "ค้นพบ ทำความเข้าใจ และทำงานร่วมกันกับข้อมูลทั้งหมดของคุณในที่เดียว", "welcome-to-om": "ยินดีต้อนรับสู่ {{brandName}}!", "welcome-to-open-metadata": "ยินดีต้อนรับสู่ {{brandName}}!", "what-should-ai-remember": "AI ควรจำอะไร?", @@ -5996,6 +5999,7 @@ "write-your-text": "เขียน {{text}} ของคุณ", "you-can-also-set-up-the-metadata-ingestion": "คุณยังสามารถตั้งค่าการนำเข้าข้อมูลเมตาได้", "you-can-edit-memories-you-created": "คุณสามารถแก้ไขความทรงจำที่คุณสร้างขึ้น", + "your-platform-is-ready": "{{platform}} ของคุณ<0>พร้อมแล้ว", "yours-and-followed-empty-description": "สินทรัพย์ที่คุณเป็นเจ้าของและที่คุณติดตามจะแสดงที่นี่พร้อมสถานะล่าสุด ติดตามสินทรัพย์ใดก็ได้เพื่อเริ่มเฝ้าดู", "yours-and-followed-widget-description": "สินทรัพย์ที่คุณเป็นเจ้าของและติดตาม พร้อมสถานะล่าสุด" }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json index b58934a866ba..6e45450f0da7 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json @@ -619,6 +619,7 @@ "conflict-resolution": "Çakışma Çözümü", "conflicts-with-published-value": "Yayınlanan değerle çakışıyor", "connect": "Connect", + "connect-a-data-source": "Bir veri kaynağı bağla", "connected": "Bağlı", "connection": "Bağlantı", "connection-condition": "Bağlantı Koşulu", @@ -648,6 +649,7 @@ "context": "Bağlam", "context-budget-used": "Kullanılan bağlam bütçesi", "context-center": "Bağlam Merkezi", + "context-platform": "Bağlam Platformu", "context-sections": "Bağlam bölümleri", "continue-editing": "Continue Editing", "contract": "Sözleşme", @@ -2689,6 +2691,7 @@ "refresh-entity": "{{entity}} Yenile", "refresh-frequency": "Yenileme Sıklığı", "refresh-log": "Günlüğü yenile", + "refresh-page": "Sayfayı yenile", "regenerate": "Regenerate", "regenerate-registration-token": "Kayıt anahtarını yeniden oluştur", "region": "Bölge", @@ -3995,6 +3998,7 @@ "available-on-global-view": "Genel görünümde kullanılabilir", "bot-email-confirmation": "{{botName}} botu için {{email}}", "bounds-learned-automatically": "Sınırlar otomatik olarak öğrenilir", + "brand-updated-refresh-page": "{{brandName}} en son iyileştirmelerle güncellendi. Kaldığınız yerden devam etmek için sayfayı yenileyin.", "browse-estate-query-placeholder": "Tüm veri mirasınıza göz atıyorsunuz — yukarıdan bir filtre veya soldan bir konum seçin ve bunlar burada birikir.", "build-your-business-dictionary": "İş sözlüğünüzü oluşturun", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "HEX renk kodunu seçin veya girin.", "hex-color-validation": "Giriş geçerli bir HEX kodu değil.", "hi-user": "Merhaba {{user}}", - "hi-user-welcome-to": "Merhaba {{user}}, Hoş Geldiniz", "hide-raw-connection-log-lines": "Ham bağlantı günlüğünü gizle ({{count}})", "home-landing-page-subtitle": "Verilerinizde dikkatinizi gerektiren konular burada.", "icon-aspect-ratio": "Simge en boy oranı 1:1 olmalı ve önerilen boyut 64 x 64 piksel olmalıdır", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Uygulamaya art arda başarısız giriş denemelerinde izin verilen deneme sayısı.", "logout-confirmation": "Çıkış yapmak istediğinizden emin misiniz?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "{{brandName}}'yı yükseltmiş görünüyorsunuz", + "look-like-upgraded-om": "Daha iyi bir {{brandName}} deneyimi sizi bekliyor!", "made-announcement": "bir duyuru yaptı", "manage-airflow-api": "{{brandName}} - Yönetilen Airflow API'leri", "manage-airflow-api-failed": "{{brandName}} - Yönetilen Airflow API'leri bulunamadı", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "Satır: {{count}}. Boş satırlar kaydedilirken kaldırılır.", "tag-update-confirmation": "Etiketleri güncellemekle devam etmek istiyor musunuz?", "tailor-experience-for-persona": "Deneyimi özellikle {{persona}} kişiliği için uyarlayın, deneyin!", - "take-quick-product-tour": "Başlamak için hızlı bir ürün turuna katılın!", + "take-quick-product-tour": "Ürün turuna katıl", "target-value-formatted": "Hedef {{value}}", "task-asked": "{{user}} {{time}} sordu", "task-event-approved": "{{user}} bu görevi onayladı", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "Neyi bulacağınızı ve nasıl ilişkili olduğunu seçin. SPARQL siz seçtikçe oluşturulur.", "webhook-listing-message": "Web kancası, harici servislerin API'ler aracılığıyla kuruluşunuzda meydana gelen metadata değişikliği olaylarından haberdar olmasını sağlar. Metadata olayı bildirimlerini almak için geri arama URL'lerini web kancası entegrasyonuyla kaydedin. Web kancalarını ekleyebilir, listeleyebilir, güncelleyebilir ve silebilirsiniz.", "webhook-type-listing-message": "{{webhookType}} bildirimleri aracılığıyla metadata üreticilerine ve tüketicilerine zamanında güncellemeler sağlayın. Kuruluşunuzdaki metadata değişikliği olaylarıyla ilgili bildirimler göndermek için {{webhookType}} web kancalarını kullanın. Bu web kancalarını ekleyebilir, listeleyebilir, güncelleyebilir ve silebilirsiniz.", - "welcome-screen-message": "Tüm verilerinizi tek bir yerde keşfedin ve güvenebileceğiniz veriler üzerinde ekibinizle sorunsuz bir şekilde işbirliği yapın.", + "welcome-screen-message": "Tüm verilerinizi tek bir yerde keşfedin, anlayın ve üzerinde iş birliği yapın.", "welcome-to-om": "{{brandName}}'ya Hoş Geldiniz!", "welcome-to-open-metadata": "{{brandName}}'ya Hoş Geldiniz!", "what-should-ai-remember": "AI neyi hatırlamalı?", @@ -5996,6 +5999,7 @@ "write-your-text": "{{text}} yazın", "you-can-also-set-up-the-metadata-ingestion": "Metadata alımını da ayarlayabilirsiniz.", "you-can-edit-memories-you-created": "Oluşturduğunuz anıları düzenleyebilirsiniz", + "your-platform-is-ready": "{{platform}} <0>hazır", "yours-and-followed-empty-description": "Sahibi olduğunuz ve takip ettiğiniz varlıklar en son durumlarıyla burada görünür. İzlemeye başlamak için herhangi bir varlığı takip edin.", "yours-and-followed-widget-description": "Sahibi olduğunuz ve takip ettiğiniz varlıklar, en son durumlarıyla." }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json index 38d71df9f49f..ddb70a4fceed 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json @@ -619,6 +619,7 @@ "conflict-resolution": "冲突解决", "conflicts-with-published-value": "与已发布的值冲突", "connect": "连接", + "connect-a-data-source": "连接数据源", "connected": "已连接", "connection": "连接", "connection-condition": "连接条件", @@ -648,6 +649,7 @@ "context": "上下文", "context-budget-used": "已用上下文预算", "context-center": "上下文中心", + "context-platform": "上下文平台", "context-sections": "上下文部分", "continue-editing": "Continue Editing", "contract": "合同", @@ -2689,6 +2691,7 @@ "refresh-entity": "刷新 {{entity}}", "refresh-frequency": "刷新频率", "refresh-log": "刷新日志", + "refresh-page": "刷新页面", "regenerate": "重新生成", "regenerate-registration-token": "重新产生注册令牌", "region": "区域", @@ -3995,6 +3998,7 @@ "available-on-global-view": "在全局视图中可用", "bot-email-confirmation": "{{botName}}机器人的邮箱{{email}}", "bounds-learned-automatically": "自动学习边界值", + "brand-updated-refresh-page": "我们已为 {{brandName}} 带来最新改进。刷新页面即可继续使用。", "browse-estate-query-placeholder": "正在浏览整个数据资产 — 在上方选择筛选条件或在左侧选择位置,它们将在此处叠加。", "build-your-business-dictionary": "构建你的业务词典", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "选择或输入 HEX 颜色代码", "hex-color-validation": "输入不是有效的 HEX 颜色代码", "hi-user": "你好 {{user}}", - "hi-user-welcome-to": "Hi {{user}}, 欢迎来到", "hide-raw-connection-log-lines": "隐藏原始连接日志 ({{count}})", "home-landing-page-subtitle": "以下是您的数据中需要您关注的内容。", "icon-aspect-ratio": "图标宽高比应为1:1,建议尺寸为64 x 64像素", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "Allowed attampt on consicutive failed login to application.", "logout-confirmation": "您确定要注销登录吗?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "看起来您已经升级了 {{brandName}}", + "look-like-upgraded-om": "更好的 {{brandName}} 体验等着您!", "made-announcement": "发布公告", "manage-airflow-api": "{{brandName}} 管理的 Airflow APIs", "manage-airflow-api-failed": "未找到 {{brandName}} 管理的 Airflow APIs", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "行数:{{count}}。空行将在保存时移除。", "tag-update-confirmation": "您要继续更新标签吗?", "tailor-experience-for-persona": "为{{persona}}角色量身定制体验,试试看!", - "take-quick-product-tour": "快速查看产品导览", + "take-quick-product-tour": "产品导览", "target-value-formatted": "目标 {{value}}", "task-asked": "{{user}} {{time}}提问", "task-event-approved": "{{user}} 批准了此任务", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "选择要查找的内容及其关系。SPARQL 会随之生成。", "webhook-listing-message": "组织内发生的元数据更改事件, 可以通过 Webhook API 通知外部服务。请注册回调 URL 以接收元数据事件通知。您还可以添加、列表、更新和删除 Webhook。", "webhook-type-listing-message": "通过{{webhookType}}通知及时向元数据的生产者和使用者提供更新。使用{{webhookType}} Webhook 通过 API 发送组织内元数据更改事件的通知。您还可以添加、列表、更新和删除这些 Webhook。", - "welcome-screen-message": "统一的元数据管理平台, 和您信赖的数据团队无缝进行数据探索和数据合作。", + "welcome-screen-message": "在一个地方发现、理解并协作处理您的所有数据。", "welcome-to-om": "欢迎使用 {{brandName}}!", "welcome-to-open-metadata": "欢迎使用 {{brandName}}!", "what-should-ai-remember": "AI 应该记住什么?", @@ -5996,6 +5999,7 @@ "write-your-text": "请编写您的{{text}}", "you-can-also-set-up-the-metadata-ingestion": "您还可以设置元数据提取作业", "you-can-edit-memories-you-created": "您可以编辑您创建的记忆", + "your-platform-is-ready": "您的{{platform}}已<0>就绪", "yours-and-followed-empty-description": "您拥有的资产和关注的资产会连同最新状态显示在这里。关注任意资产即可开始跟踪。", "yours-and-followed-widget-description": "您拥有和关注的资产及其最新状态。" }, diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-tw.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-tw.json index 352a2028ceee..5c46d5a774de 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-tw.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-tw.json @@ -619,6 +619,7 @@ "conflict-resolution": "冲突解决", "conflicts-with-published-value": "與已發布的值衝突", "connect": "Connect", + "connect-a-data-source": "連接資料來源", "connected": "已連線", "connection": "連線", "connection-condition": "连接条件", @@ -648,6 +649,7 @@ "context": "上下文", "context-budget-used": "已用上下文預算", "context-center": "上下文中心", + "context-platform": "情境平台", "context-sections": "上下文章節", "continue-editing": "Continue Editing", "contract": "合約", @@ -2689,6 +2691,7 @@ "refresh-entity": "重新整理 {{entity}}", "refresh-frequency": "重新整理頻率", "refresh-log": "重新整理日誌", + "refresh-page": "重新整理頁面", "regenerate": "Regenerate", "regenerate-registration-token": "重新產生註冊權杖", "region": "區域", @@ -3995,6 +3998,7 @@ "available-on-global-view": "在全域檢視中可用", "bot-email-confirmation": "{{botName}} 機器人的 {{email}}", "bounds-learned-automatically": "自動學習邊界值", + "brand-updated-refresh-page": "我們已為 {{brandName}} 帶來最新改進。重新整理頁面即可繼續使用。", "browse-estate-query-placeholder": "正在瀏覽整個資料資產 — 在上方選擇篩選條件或在左側選擇位置,它們將在此處堆疊。", "build-your-business-dictionary": "建立你的商業詞典", "bulk-edit-add-metric-hint": "Create a brand-new metric in this batch. Existing metric names are locked.", @@ -4761,7 +4765,6 @@ "hex-code-placeholder": "選取或輸入 HEX 色碼。", "hex-color-validation": "輸入不是有效的 HEX 色碼。", "hi-user": "{{user}},您好", - "hi-user-welcome-to": "嗨 {{user}},歡迎來到", "hide-raw-connection-log-lines": "隱藏原始連線日誌 ({{count}})", "home-landing-page-subtitle": "以下是您的資料中需要您留意的項目。", "icon-aspect-ratio": "圖示長寬比應為1:1,建議大小應為64 x 64像素", @@ -4933,7 +4936,7 @@ "login-fail-attempt-message": "連續登入應用程式失敗的允許嘗試次數。", "logout-confirmation": "您確定要登出嗎?", "long-form-authored-versioned": "Long-form, authored, versioned.", - "look-like-upgraded-om": "看來您已升級 {{brandName}}", + "look-like-upgraded-om": "更好的 {{brandName}} 體驗正等著您!", "made-announcement": "發布了一則公告", "manage-airflow-api": "{{brandName}} - 受管理的 Airflow API", "manage-airflow-api-failed": "找不到 {{brandName}} - 受管理的 Airflow API", @@ -5758,7 +5761,7 @@ "table-rows-empty-removed-on-save": "資料列:{{count}}。儲存時將移除空白資料列。", "tag-update-confirmation": "您想繼續更新標籤嗎?", "tailor-experience-for-persona": "專為 {{persona}} 角色量身打造體驗,試試看吧!", - "take-quick-product-tour": "進行產品導覽以開始!", + "take-quick-product-tour": "產品導覽", "target-value-formatted": "目標 {{value}}", "task-asked": "{{user}} {{time}}提問", "task-event-approved": "{{user}} 核准了此任務", @@ -5969,7 +5972,7 @@ "visual-query-builder-hint": "選擇要尋找的內容及其關係。SPARQL 會隨之產生。", "webhook-listing-message": "webhook 允許外部服務透過 API 獲知您組織中發生的元資料變更事件。使用 webhook 整合註冊回呼 URL 以接收元資料事件通知。您可以新增、列出、更新和刪除 webhook。", "webhook-type-listing-message": "透過 {{webhookType}} 通知,及時向元資料的生產者和消費者提供更新。使用 {{webhookType}} webhook 透過 API 發送有關您組織中元資料變更事件的通知。您可以新增、列出、更新和刪除這些 webhook。", - "welcome-screen-message": "在一個地方探索您的所有資料,並與您的團隊在可信賴的資料上無縫協作。", + "welcome-screen-message": "在同一個地方探索、理解並協作處理您的所有資料。", "welcome-to-om": "歡迎來到 {{brandName}}!", "welcome-to-open-metadata": "歡迎來到 {{brandName}}!", "what-should-ai-remember": "AI 應該記住什麼?", @@ -5996,6 +5999,7 @@ "write-your-text": "撰寫您的 {{text}}", "you-can-also-set-up-the-metadata-ingestion": "您也可以設定元資料擷取。", "you-can-edit-memories-you-created": "您可以編輯您創建的記憶", + "your-platform-is-ready": "您的{{platform}}已<0>就緒", "yours-and-followed-empty-description": "您擁有的資產和關注的資產會連同最新狀態顯示在這裡。關注任意資產即可開始追蹤。", "yours-and-followed-widget-description": "您擁有和關注的資產及其最新狀態。" }, diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/MyDataPage/MyDataPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/MyDataPage/MyDataPage.component.tsx index 2bfcd53f0c7e..4d6f7e84ba6c 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/MyDataPage/MyDataPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/MyDataPage/MyDataPage.component.tsx @@ -11,17 +11,13 @@ * limitations under the License. */ -import { lazy, useEffect, useMemo, useState } from 'react'; +import { lazy } from 'react'; import { useTranslation } from 'react-i18next'; import withSuspenseFallback from '../../components/AppRouter/withSuspenseFallback'; import DocumentTitle from '../../components/common/DocumentTitle/DocumentTitle'; import HomeLandingPage from '../../components/MyData/HomeLandingPage/HomeLandingPage'; -import PageLayoutV1 from '../../components/PageLayoutV1/PageLayoutV1'; -import { LOGGED_IN_USER_STORAGE_KEY } from '../../constants/constants'; -import { useTourProvider } from '../../context/TourProvider/TourProvider'; import LimitWrapper from '../../hoc/LimitWrapper'; -import { useApplicationStore } from '../../hooks/useApplicationStore'; -import { useWelcomeStore } from '../../hooks/useWelcomeStore'; +import { useFirstLoginWelcome } from '../../hooks/useFirstLoginWelcome'; const WelcomeScreen = withSuspenseFallback( lazy( @@ -40,48 +36,16 @@ const WelcomeScreen = withSuspenseFallback( */ const MyDataPage = () => { const { t } = useTranslation(); - const { currentUser } = useApplicationStore(); - const { isWelcomeVisible } = useWelcomeStore(); - const { isTourPage } = useTourProvider(); + const { showWelcome, closeWelcome } = useFirstLoginWelcome(); - const [showWelcomeScreen, setShowWelcomeScreen] = useState(false); - - const storageData = useMemo( - () => localStorage.getItem(LOGGED_IN_USER_STORAGE_KEY), - [] - ); - const loggedInUserName = currentUser?.name ?? ''; - const usernameExistsInCookie = useMemo( - () => - storageData ? storageData.split(',').includes(loggedInUserName) : false, - [storageData, loggedInUserName] - ); - - const updateWelcomeScreen = (show: boolean) => { - if (loggedInUserName) { - const seen = storageData ? storageData.split(',') : []; - if (!seen.includes(loggedInUserName)) { - seen.push(loggedInUserName); - localStorage.setItem(LOGGED_IN_USER_STORAGE_KEY, seen.join(',')); - } - } - setShowWelcomeScreen(show); - }; - - useEffect(() => { - // The welcome screen replaces the landing page, so on the tour it would hide the step targets. - updateWelcomeScreen( - !usernameExistsInCookie && isWelcomeVisible && !isTourPage - ); - - return () => updateWelcomeScreen(false); - }, []); - - if (showWelcomeScreen) { + if (showWelcome) { return ( - - updateWelcomeScreen(false)} /> - + <> + +
+ +
+ ); } diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/BrandData/BrandClassBase.ts b/openmetadata-ui/src/main/resources/ui/src/utils/BrandData/BrandClassBase.ts index 2d8189341e73..d2ff1b03aa44 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/BrandData/BrandClassBase.ts +++ b/openmetadata-ui/src/main/resources/ui/src/utils/BrandData/BrandClassBase.ts @@ -10,11 +10,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import WelcomeScreenSrc from '../../assets/img/welcome-screen.png'; +import UpgradeScreenDarkSrc from '../../assets/img/upgrade-screen-dark.svg'; +import UpgradeScreenLightSrc from '../../assets/img/upgrade-screen-light.svg'; +import WelcomeScreenDarkSrc from '../../assets/img/welcome-screen-dark.svg'; +import WelcomeScreenLightSrc from '../../assets/img/welcome-screen-light.svg'; import MonogramSrc, { ReactComponent as Monogram, } from '../../assets/svg/logo-monogram.svg'; import LogoSrc, { ReactComponent as Logo } from '../../assets/svg/logo.svg'; +import { Theme } from '../../context/UntitledUIThemeProvider/theme-provider.interface'; +import { t } from '../i18next/LocalUtil'; class BrandClassBase { public getMonogram() { @@ -55,8 +60,17 @@ class BrandClassBase { return 'https://blog.open-metadata.org/announcing-openmetadata-1-13-123d66609468'; } - public getWelcomeScreenImg() { - return WelcomeScreenSrc; + public getWelcomeScreenImg(theme: Theme) { + return theme === 'dark' ? WelcomeScreenDarkSrc : WelcomeScreenLightSrc; + } + + public getUpgradeScreenImg(theme: Theme) { + return theme === 'dark' ? UpgradeScreenDarkSrc : UpgradeScreenLightSrc; + } + + /** Product name in the welcome screen's "Your {{platform}} is ready". */ + public getPlatformName() { + return t('label.context-platform'); } }