From 49af9926611086cf90bec01b1882ca70474305fa Mon Sep 17 00:00:00 2001 From: Lucy Chen <140550297+lucychen-grafana@users.noreply.github.com> Date: Mon, 8 Jan 2024 13:30:01 -0500 Subject: [PATCH] Task: Add i18n support for public dashboards (#79659) * feat(public-dashboards): add i18n support * fix(public-dashboard): correct name convention for i18n * fix(public-dashboard): correct i18n key convention + extraction * feat(public-dashboard): mark up i18n for remaining cfg modal * fix(public-dashboard): de-dynamicize ack comps for i18n + markup i18n for missing parts * feat(public-dashboard): mark up i18n for DeletePubDashModal * feat(public-dashboard): mark up i18n for ShareModal public dashboard * chore(i18n): run yarn i18n:extract * update naming cconvention * add mark up phrases * update json file * fix import * fix title * fix url * Copy button translation * Update user admin page * escape char * interpolation * fix escape * prettier space * update naming * update setting keys * standardize key naming convention * fix radiobutton * Fix naming convention as recommended by frontend team * Prettier and fix naming * fix variables that cannot be translated * prettier check --------- Co-authored-by: hainenber --- public/app/features/admin/UserListPage.tsx | 3 +- .../DashboardsListModalButton.tsx | 54 +++++--- .../DeleteUserModalButton.tsx | 61 ++++++--- .../UserListPublicDashboardPage.tsx | 29 ++++- .../components/ShareModal/ShareModal.tsx | 2 +- .../ConfigPublicDashboard.tsx | 17 ++- .../ConfigPublicDashboard/Configuration.tsx | 32 ++++- .../EmailSharingConfiguration.tsx | 45 ++++--- .../SettingsBarHeader.tsx | 7 +- .../ConfigPublicDashboard/SettingsSummary.tsx | 28 +++- .../AcknowledgeCheckboxes.tsx | 85 ++++++++----- .../CreatePublicDashboard.tsx | 14 +- .../ModalAlerts/NoUpsertPermissionsAlert.tsx | 11 +- .../ModalAlerts/SaveDashboardChangesAlert.tsx | 6 +- .../UnsupportedDataSourcesAlert.tsx | 13 +- .../UnsupportedTemplateVariablesAlert.tsx | 10 +- .../DeletePublicDashboardButton.tsx | 43 ++++--- .../DeletePublicDashboardModal.tsx | 36 ++++-- .../PublicDashboardListTable.tsx | 24 +++- public/locales/de-DE/grafana.json | 120 ++++++++++++++++++ public/locales/en-US/grafana.json | 120 ++++++++++++++++++ public/locales/es-ES/grafana.json | 120 ++++++++++++++++++ public/locales/fr-FR/grafana.json | 120 ++++++++++++++++++ public/locales/pseudo-LOCALE/grafana.json | 120 ++++++++++++++++++ public/locales/zh-Hans/grafana.json | 120 ++++++++++++++++++ 25 files changed, 1081 insertions(+), 159 deletions(-) diff --git a/public/app/features/admin/UserListPage.tsx b/public/app/features/admin/UserListPage.tsx index 838031fe760..acf37d55c61 100644 --- a/public/app/features/admin/UserListPage.tsx +++ b/public/app/features/admin/UserListPage.tsx @@ -5,6 +5,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { config, featureEnabled } from '@grafana/runtime'; import { useStyles2, TabsBar, Tab } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { contextSrv } from 'app/core/services/context_srv'; import { isPublicDashboardsEnabled } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils'; @@ -27,7 +28,7 @@ const selectors = e2eSelectors.pages.UserListPage; const PublicDashboardsTab = ({ view, setView }: { view: TabView | null; setView: (v: TabView | null) => void }) => ( setView(TabView.PUBLIC_DASHBOARDS)} data-testid={selectors.tabs.publicDashboardsUsers} diff --git a/public/app/features/admin/UserListPublicDashboardPage/DashboardsListModalButton.tsx b/public/app/features/admin/UserListPublicDashboardPage/DashboardsListModalButton.tsx index 5a0b0c3e434..625b4075679 100644 --- a/public/app/features/admin/UserListPublicDashboardPage/DashboardsListModalButton.tsx +++ b/public/app/features/admin/UserListPublicDashboardPage/DashboardsListModalButton.tsx @@ -4,6 +4,7 @@ import React from 'react'; import { GrafanaTheme2 } from '@grafana/data/src'; import { selectors as e2eSelectors } from '@grafana/e2e-selectors/src'; import { Button, LoadingPlaceholder, Modal, ModalsController, useStyles2 } from '@grafana/ui/src'; +import { Trans, t } from 'app/core/internationalization'; import { generatePublicDashboardConfigUrl, generatePublicDashboardUrl, @@ -18,10 +19,17 @@ export const DashboardsListModal = ({ email, onDismiss }: { email: string; onDis const { data: dashboards, isLoading } = useGetActiveUserDashboardsQuery(email); return ( - + {isLoading ? (
- +
) : ( dashboards?.map((dash) => ( @@ -35,7 +43,9 @@ export const DashboardsListModal = ({ email, onDismiss }: { email: string; onDis href={generatePublicDashboardUrl(dash.publicDashboardAccessToken)} onClick={onDismiss} > - Public dashboard URL + + Public dashboard URL + • - Public dashboard settings + + Public dashboard settings +
@@ -54,20 +66,26 @@ export const DashboardsListModal = ({ email, onDismiss }: { email: string; onDis ); }; -export const DashboardsListModalButton = ({ email }: { email: string }) => ( - - {({ showModal, hideModal }) => ( -
); }; -export const DeleteUserModalButton = ({ user }: { user: SessionUser }) => ( - - {({ showModal, hideModal }) => ( -