diff --git a/.betterer.results b/.betterer.results index 1f388c86a06..0fad192cedb 100644 --- a/.betterer.results +++ b/.betterer.results @@ -1134,127 +1134,25 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"] ], - "public/app/features/admin/AdminEditOrgPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] - ], "public/app/features/admin/AdminFeatureTogglesTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] - ], - "public/app/features/admin/AdminOrgsTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] - ], - "public/app/features/admin/OrgRolePicker.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/admin/UpgradePage.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "8"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "9"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "10"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "11"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "12"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "13"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "14"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "15"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "16"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "17"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "18"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "19"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "20"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "21"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "22"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "23"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "24"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "25"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "26"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "27"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "28"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "29"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "30"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "31"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "32"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "33"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "34"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "35"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "36"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "37"] - ], - "public/app/features/admin/UserCreatePage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"] - ], - "public/app/features/admin/UserLdapSyncInfo.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/admin/UserListAdminPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/admin/UserListAnonymousPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/admin/UserListPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"] - ], - "public/app/features/admin/UserOrgs.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] - ], - "public/app/features/admin/UserProfile.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"] - ], - "public/app/features/admin/UserSessions.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] ], "public/app/features/admin/Users/OrgUsersTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/admin/Users/UsersTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] - ], - "public/app/features/admin/ldap/LdapConnectionStatus.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/admin/ldap/LdapDrawer.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] ], - "public/app/features/admin/ldap/LdapPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/admin/ldap/LdapSettingsPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"] - ], "public/app/features/alerting/routes.tsx:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], @@ -2710,15 +2608,6 @@ exports[`better eslint`] = { "public/app/features/browse-dashboards/api/browseDashboardsAPI.ts:5381": [ [0, 0, 0, "Do not re-export imported variable (\`@reduxjs/toolkit/query/react\`)", "0"] ], - "public/app/features/browse-dashboards/components/BrowseActions/DescendantCount.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/browse-dashboards/components/BrowseView.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], - "public/app/features/browse-dashboards/components/NameCell.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], "public/app/features/browse-dashboards/state/index.ts:5381": [ [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"], [0, 0, 0, "Do not use export all (\`export * from ...\`)", "1"], @@ -4604,39 +4493,17 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "9"], [0, 0, 0, "No untranslated strings. Wrap text with ", "10"] ], - "public/app/features/library-panels/components/AddLibraryPanelModal/AddLibraryPanelModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/library-panels/components/DeleteLibraryPanelModal/DeleteLibraryPanelModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] - ], - "public/app/features/library-panels/components/LibraryPanelCard/LibraryPanelCard.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], "public/app/features/library-panels/components/LibraryPanelInfo/LibraryPanelInfo.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch.tsx:5381": [ - [0, 0, 0, "\'VerticalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] + [0, 0, 0, "\'VerticalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"] ], "public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx:5381": [ - [0, 0, 0, "\'VerticalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "\'VerticalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"] ], "public/app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/live/LiveConnectionWarning.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] @@ -4785,29 +4652,13 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/org/NewOrgPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] - ], - "public/app/features/org/OrgProfile.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/org/SelectOrgPage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/org/UserInviteForm.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "7"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "8"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/org/UserInvitePage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -4862,16 +4713,7 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] ], "public/app/features/playlist/StartModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "8"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "9"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/plugins/admin/__mocks__/index.ts:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./localPlugin.mock\`)", "0"], @@ -5356,11 +5198,7 @@ exports[`better eslint`] = { ], "public/app/features/teams/CreateTeam.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] ], "public/app/features/teams/TeamGroupSync.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], @@ -5368,31 +5206,17 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "7"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "8"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "9"], - [0, 0, 0, "Unexpected any. Specify a different type.", "10"], - [0, 0, 0, "Unexpected any. Specify a different type.", "11"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], + [0, 0, 0, "Unexpected any. Specify a different type.", "6"], + [0, 0, 0, "Unexpected any. Specify a different type.", "7"] ], "public/app/features/teams/TeamList.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] ], "public/app/features/teams/TeamSettings.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "7"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/teams/state/reducers.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] diff --git a/public/app/features/admin/AdminEditOrgPage.tsx b/public/app/features/admin/AdminEditOrgPage.tsx index 815b96815c8..bc3690d43c3 100644 --- a/public/app/features/admin/AdminEditOrgPage.tsx +++ b/public/app/features/admin/AdminEditOrgPage.tsx @@ -7,7 +7,7 @@ import { NavModelItem } from '@grafana/data'; import { Field, Input, Button, Legend, Alert } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { contextSrv } from 'app/core/core'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { OrgUser, AccessControlAction, OrgRole } from 'app/types'; import { OrgUsersTable } from './Users/OrgUsersTable'; @@ -56,7 +56,10 @@ const AdminEditOrgPage = () => { }; const renderMissingPermissionMessage = () => ( - + You do not have permission to see users in this organization. To update this organization, contact your server administrator. @@ -93,7 +96,12 @@ const AdminEditOrgPage = () => { {orgState.value && (
- + -
GA
+
+ GA +
); case 'privatePreview': case 'preview': case 'experimental': - return 'Beta'; + return t('admin.admin-feature-toggles-table.get-stage-cell.beta', 'Beta'); case 'deprecated': - return 'Deprecated'; + return t('admin.admin-feature-toggles-table.get-stage-cell.deprecated', 'Deprecated'); default: return stage; } @@ -156,7 +159,10 @@ export function AdminFeatureTogglesTable({ featureToggles, allowEditing, onUpdat

diff --git a/public/app/features/admin/AdminOrgsTable.tsx b/public/app/features/admin/AdminOrgsTable.tsx index 02a2de9cc6b..e842150f31c 100644 --- a/public/app/features/admin/AdminOrgsTable.tsx +++ b/public/app/features/admin/AdminOrgsTable.tsx @@ -6,7 +6,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { Button, ConfirmModal, useStyles2 } from '@grafana/ui'; import { SkeletonComponent, attachSkeleton } from '@grafana/ui/unstable'; import { contextSrv } from 'app/core/core'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { AccessControlAction, Organization } from 'app/types'; interface Props { @@ -51,7 +51,7 @@ function AdminOrgsTableComponent({ orgs, onDelete }: Props) { size="sm" icon="times" onClick={() => setDeleteOrg(org)} - aria-label="Delete org" + aria-label={t('admin.admin-orgs-table.aria-label-delete-org', 'Delete org')} disabled={!canDeleteOrgs} /> @@ -62,7 +62,7 @@ function AdminOrgsTableComponent({ orgs, onDelete }: Props) { diff --git a/public/app/features/admin/OrgRolePicker.tsx b/public/app/features/admin/OrgRolePicker.tsx index 3e637d05e0a..1c89a6fe74b 100644 --- a/public/app/features/admin/OrgRolePicker.tsx +++ b/public/app/features/admin/OrgRolePicker.tsx @@ -1,5 +1,6 @@ import { OrgRole } from '@grafana/data'; import { Select } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; interface Props { value: OrgRole; @@ -21,7 +22,7 @@ export function OrgRolePicker({ value, onChange, 'aria-label': ariaLabel, inputI value={value} options={options} onChange={(val) => onChange(val.value ?? OrgRole.None)} - placeholder="Choose role..." + placeholder={t('admin.org-role-picker.placeholder-choose-role', 'Choose role...')} aria-label={ariaLabel} autoFocus={autoFocus} {...restProps} diff --git a/public/app/features/admin/UpgradePage.tsx b/public/app/features/admin/UpgradePage.tsx index 2ba5d8476bc..d9873f2ed0d 100644 --- a/public/app/features/admin/UpgradePage.tsx +++ b/public/app/features/admin/UpgradePage.tsx @@ -5,7 +5,7 @@ import { connect } from 'react-redux'; import { GrafanaTheme2, NavModel } from '@grafana/data'; import { LinkButton, useStyles2 } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { getNavModel } from '../../core/selectors/navModel'; import { StoreState } from '../../types'; @@ -110,9 +110,18 @@ const ServiceInfo = () => { - - - + + + 24 x 7 x 365 support via @@ -154,26 +163,34 @@ const FeatureInfo = () => { const FeatureListing = () => { return ( - - - - - + + + + + LDAP, GitHub OAuth, Auth Proxy, Okta - - - - + + + + - - - - + + + + - + + {/* eslint-disable @grafana/no-untranslated-strings */} @@ -189,6 +206,7 @@ const FeatureListing = () => { + {/* eslint-enable @grafana/no-untranslated-strings */} diff --git a/public/app/features/admin/UserCreatePage.tsx b/public/app/features/admin/UserCreatePage.tsx index b4f22b4c071..4c08caa2825 100644 --- a/public/app/features/admin/UserCreatePage.tsx +++ b/public/app/features/admin/UserCreatePage.tsx @@ -6,7 +6,7 @@ import { NavModelItem } from '@grafana/data'; import { getBackendSrv } from '@grafana/runtime'; import { Button, Input, Field } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; interface UserDTO { name: string; @@ -45,19 +45,24 @@ const UserCreatePage = () => { - + - + - + { - + diff --git a/public/app/features/admin/UserListAdminPage.tsx b/public/app/features/admin/UserListAdminPage.tsx index 5263019b883..827eb178619 100644 --- a/public/app/features/admin/UserListAdminPage.tsx +++ b/public/app/features/admin/UserListAdminPage.tsx @@ -75,7 +75,10 @@ const UserListAdminPageUnConnected = ({

setView(TabView.ADMIN)} data-testid={selectors.tabs.allUsers} /> setView(TabView.ORG)} data-testid={selectors.tabs.orgUsers} /> {config.anonymousEnabled && ( setView(TabView.ANON)} data-testid={selectors.tabs.anonUserDevices} @@ -94,7 +94,7 @@ export default function UserListPage() { isEmailSharingEnabled() && ( setView(TabView.ORG)} data-testid={selectors.tabs.users} diff --git a/public/app/features/admin/UserOrgs.tsx b/public/app/features/admin/UserOrgs.tsx index 2e384aa51de..de65bdca315 100644 --- a/public/app/features/admin/UserOrgs.tsx +++ b/public/app/features/admin/UserOrgs.tsx @@ -363,14 +363,14 @@ export class AddToOrgModal extends PureComponent - + - + - + { )} ) : ( onRoleChange(newRole, original)} @@ -254,7 +254,7 @@ export const OrgUsersTable = ({ { setUserToRemove(null); }} diff --git a/public/app/features/admin/Users/UsersTable.tsx b/public/app/features/admin/Users/UsersTable.tsx index c397dccf6b7..23fbf4b763f 100644 --- a/public/app/features/admin/Users/UsersTable.tsx +++ b/public/app/features/admin/Users/UsersTable.tsx @@ -16,7 +16,7 @@ import { Tooltip, } from '@grafana/ui'; import { TagBadge } from 'app/core/components/TagFilter/TagBadge'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { UserDTO } from 'app/types'; import { OrgUnits } from './OrgUnits'; @@ -55,7 +55,12 @@ export const UsersTable = ({ header: 'Login', cell: ({ row: { original } }: Cell<'login'>) => { return ( - + {original.login} ); diff --git a/public/app/features/admin/ldap/LdapConnectionStatus.tsx b/public/app/features/admin/ldap/LdapConnectionStatus.tsx index 281013fe76b..aa1d608a9c8 100644 --- a/public/app/features/admin/ldap/LdapConnectionStatus.tsx +++ b/public/app/features/admin/ldap/LdapConnectionStatus.tsx @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import { Alert, CellProps, Column, Icon, InteractiveTable, Stack, Text, Tooltip } from '@grafana/ui'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { AppNotificationSeverity, LdapConnectionInfo, LdapServerInfo } from 'app/types'; interface Props { @@ -98,7 +98,10 @@ export const LdapErrorBox = ({ ldapConnectionInfo }: LdapConnectionErrorProps) = )); return ( - + {errorElements} ); diff --git a/public/app/features/admin/ldap/LdapDrawer.tsx b/public/app/features/admin/ldap/LdapDrawer.tsx index 0533fadb634..21e49aa725b 100644 --- a/public/app/features/admin/ldap/LdapDrawer.tsx +++ b/public/app/features/admin/ldap/LdapDrawer.tsx @@ -144,6 +144,7 @@ export const LdapDrawerComponent = ({ > Test user mapping - + { */ if (!config.featureToggles.ssoSettingsLDAP) { return ( - + This page is only accessible by enabling the ssoSettingsLDAP feature flag. @@ -421,14 +421,21 @@ export const LdapSettingsPage = () => { - + } placement="bottom-start" > { const { data, isFetching, isLoading, error } = useGetAffectedItemsQuery(selectedItems); return error ? ( - + ) : ( {data && buildBreakdownString(data.folder, data.dashboard, data.libraryPanel, data.alertRule)} diff --git a/public/app/features/browse-dashboards/components/BrowseView.tsx b/public/app/features/browse-dashboards/components/BrowseView.tsx index 8c9ab64cde0..fd4dd5bfa0e 100644 --- a/public/app/features/browse-dashboards/components/BrowseView.tsx +++ b/public/app/features/browse-dashboards/components/BrowseView.tsx @@ -144,7 +144,13 @@ export function BrowseView({ folderUID, width, height, canSelect }: BrowseViewPr )} ) : ( - This folder is empty} /> + + This folder is empty + + } + /> )} ); diff --git a/public/app/features/browse-dashboards/components/NameCell.tsx b/public/app/features/browse-dashboards/components/NameCell.tsx index 6316f767cf2..6bc1b9f680b 100644 --- a/public/app/features/browse-dashboards/components/NameCell.tsx +++ b/public/app/features/browse-dashboards/components/NameCell.tsx @@ -5,7 +5,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { reportInteraction } from '@grafana/runtime'; import { Icon, IconButton, Link, Spinner, useStyles2, Text } from '@grafana/ui'; import { getSvgSize } from '@grafana/ui/internal'; -import { t } from 'app/core/internationalization'; +import { t, Trans } from 'app/core/internationalization'; import { getIconForItem } from 'app/features/search/service/utils'; import { Indent } from '../../../core/components/Indent/Indent'; @@ -42,7 +42,7 @@ export function NameCell({ row: { original: data }, onFolderClick, treeID }: Nam {item.uiKind === 'empty-folder' ? ( - No items + No items ) : ( diff --git a/public/app/features/library-panels/components/AddLibraryPanelModal/AddLibraryPanelModal.tsx b/public/app/features/library-panels/components/AddLibraryPanelModal/AddLibraryPanelModal.tsx index c04bc81e9cd..b1eb1d196b0 100644 --- a/public/app/features/library-panels/components/AddLibraryPanelModal/AddLibraryPanelModal.tsx +++ b/public/app/features/library-panels/components/AddLibraryPanelModal/AddLibraryPanelModal.tsx @@ -120,7 +120,11 @@ interface Props extends AddLibraryPanelContentsProps { export const AddLibraryPanelModal = ({ isOpen = false, panel, initialFolderUid, ...props }: Props) => { return ( - + ); diff --git a/public/app/features/library-panels/components/DeleteLibraryPanelModal/DeleteLibraryPanelModal.tsx b/public/app/features/library-panels/components/DeleteLibraryPanelModal/DeleteLibraryPanelModal.tsx index a721b2039f6..e09405e0288 100644 --- a/public/app/features/library-panels/components/DeleteLibraryPanelModal/DeleteLibraryPanelModal.tsx +++ b/public/app/features/library-panels/components/DeleteLibraryPanelModal/DeleteLibraryPanelModal.tsx @@ -2,6 +2,7 @@ import { FC, useEffect, useMemo, useReducer } from 'react'; import { LoadingState } from '@grafana/data'; import { Button, Modal, useStyles2 } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { getModalStyles } from '../../styles'; import { LibraryElementDTO } from '../../types'; @@ -30,7 +31,13 @@ export const DeleteLibraryPanelModal: FC = ({ libraryPanel, onDismiss, on const done = loadingState === LoadingState.Done; return ( - + {!done ? : null} {done ? (
@@ -39,10 +46,10 @@ export const DeleteLibraryPanelModal: FC = ({ libraryPanel, onDismiss, on
@@ -51,12 +58,20 @@ export const DeleteLibraryPanelModal: FC = ({ libraryPanel, onDismiss, on ); }; -const LoadingIndicator = () => Loading library panel...; +const LoadingIndicator = () => ( + + Loading library panel... + +); const Confirm = () => { const styles = useStyles2(getModalStyles); - return
Do you want to delete this panel?
; + return ( +
+ Do you want to delete this panel? +
+ ); }; const HasConnectedDashboards: FC<{ dashboardTitles: string[] }> = ({ dashboardTitles }) => { @@ -77,7 +92,9 @@ const HasConnectedDashboards: FC<{ dashboardTitles: string[] }> = ({ dashboardTi
- + diff --git a/public/app/features/library-panels/components/LibraryPanelCard/LibraryPanelCard.tsx b/public/app/features/library-panels/components/LibraryPanelCard/LibraryPanelCard.tsx index d213e6cbf8d..f74e3d7b121 100644 --- a/public/app/features/library-panels/components/LibraryPanelCard/LibraryPanelCard.tsx +++ b/public/app/features/library-panels/components/LibraryPanelCard/LibraryPanelCard.tsx @@ -6,6 +6,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { config } from '@grafana/runtime'; import { Icon, Link, useStyles2 } from '@grafana/ui'; import { SkeletonComponent, attachSkeleton } from '@grafana/ui/unstable'; +import { Trans } from 'app/core/internationalization'; import { getPanelPluginNotFound } from 'app/features/panel/components/PanelPluginError'; import { PanelTypeCard } from 'app/features/panel/components/VizTypePicker/PanelTypeCard'; @@ -85,7 +86,9 @@ function FolderLink({ libraryPanel }: FolderLinkProps): ReactElement | null { return ( - Dashboards + + Dashboards + ); } diff --git a/public/app/features/library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch.tsx b/public/app/features/library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch.tsx index c6813527b78..9bd9e10fed9 100644 --- a/public/app/features/library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch.tsx +++ b/public/app/features/library-panels/components/LibraryPanelsSearch/LibraryPanelsSearch.tsx @@ -4,6 +4,7 @@ import { useDebounce } from 'react-use'; import { GrafanaTheme2, PanelPluginMeta, SelectableValue } from '@grafana/data'; import { useStyles2, VerticalGroup, FilterInput } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { FolderInfo } from 'app/types'; import { FolderFilter } from '../../../../core/components/FolderFilter/FolderFilter'; @@ -66,7 +67,10 @@ export const LibraryPanelsSearch = ({ diff --git a/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx b/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx index 5d928460e20..84f9950ad27 100644 --- a/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx +++ b/public/app/features/library-panels/components/PanelLibraryOptionsGroup/PanelLibraryOptionsGroup.tsx @@ -3,6 +3,7 @@ import { useCallback, useState } from 'react'; import { PanelPluginMeta } from '@grafana/data'; import { Button, VerticalGroup } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; import { changeToLibraryPanel } from 'app/features/panel/state/actions'; @@ -48,7 +49,9 @@ export const PanelLibraryOptionsGroup = ({ panel, searchQuery }: Props) => { {!panel.libraryPanel && ( )} diff --git a/public/app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal.tsx b/public/app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal.tsx index 19c4e11d28d..14e40f08fcd 100644 --- a/public/app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal.tsx +++ b/public/app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal.tsx @@ -2,6 +2,7 @@ import { useCallback, useState } from 'react'; import { useAsync, useDebounce } from 'react-use'; import { Button, Icon, Input, Modal, useStyles2 } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { getConnectedDashboards } from '../../state/api'; import { getModalStyles } from '../../styles'; @@ -72,17 +73,26 @@ export const SaveLibraryPanelModal = ({ } - placeholder="Search affected dashboards" + placeholder={t( + 'library-panels.save-library-panel-modal.placeholder-search-affected-dashboards', + 'Search affected dashboards' + )} value={searchString} onChange={(e) => setSearchString(e.currentTarget.value)} /> {dashState.loading ? ( -

Loading connected dashboards...

+

+ + Loading connected dashboards... + +

) : (
Dashboard name + Dashboard name +
- + @@ -96,11 +106,11 @@ export const SaveLibraryPanelModal = ({ )} {isUnsavedPrompt && ( )} diff --git a/public/app/features/org/NewOrgPage.tsx b/public/app/features/org/NewOrgPage.tsx index df77d157580..14d46544b10 100644 --- a/public/app/features/org/NewOrgPage.tsx +++ b/public/app/features/org/NewOrgPage.tsx @@ -5,6 +5,7 @@ import { Button, Input, Field, FieldSet } from '@grafana/ui'; import { Form } from 'app/core/components/Form/Form'; import { Page } from 'app/core/components/Page/Page'; import { getConfig } from 'app/core/config'; +import { t, Trans } from 'app/core/internationalization'; import { createOrganization } from './state/actions'; @@ -46,16 +47,22 @@ export const NewOrgPage = ({ createOrganization }: Props) => { return ( <>
- +
- + ); }} diff --git a/public/app/features/org/OrgProfile.tsx b/public/app/features/org/OrgProfile.tsx index f70f831955c..04b8706b1d6 100644 --- a/public/app/features/org/OrgProfile.tsx +++ b/public/app/features/org/OrgProfile.tsx @@ -1,6 +1,7 @@ import { Input, Field, FieldSet, Button } from '@grafana/ui'; import { Form } from 'app/core/components/Form/Form'; import { contextSrv } from 'app/core/core'; +import { t, Trans } from 'app/core/internationalization'; import { AccessControlAction } from 'app/types'; export interface Props { @@ -18,12 +19,17 @@ const OrgProfile = ({ onSubmit, orgName }: Props) => { return ( onSubmit(orgName)}> {({ register }) => ( -
- +
+ - +
)} diff --git a/public/app/features/org/UserInviteForm.tsx b/public/app/features/org/UserInviteForm.tsx index 29906104194..a7049cb02f2 100644 --- a/public/app/features/org/UserInviteForm.tsx +++ b/public/app/features/org/UserInviteForm.tsx @@ -17,6 +17,7 @@ import { Stack, } from '@grafana/ui'; import { getConfig } from 'app/core/config'; +import { t, Trans } from 'app/core/internationalization'; import { OrgRole, useDispatch } from 'app/types'; import { Form } from '../../core/components/Form/Form'; @@ -74,19 +75,25 @@ export const UserInviteForm = () => { + {/* eslint-disable-next-line @grafana/no-untranslated-strings */} - - + + - Role + + Role + {tooltipMessage && ( @@ -102,14 +109,16 @@ export const UserInviteForm = () => { name="role" /> - +
- + - Back + Back diff --git a/public/app/features/playlist/StartModal.tsx b/public/app/features/playlist/StartModal.tsx index c652613a270..ecd2ae79b8e 100644 --- a/public/app/features/playlist/StartModal.tsx +++ b/public/app/features/playlist/StartModal.tsx @@ -3,6 +3,7 @@ import { useState } from 'react'; import { SelectableValue, UrlQueryMap, urlUtil } from '@grafana/data'; import { config, locationService, reportInteraction } from '@grafana/runtime'; import { Box, Button, Checkbox, Field, FieldSet, Modal, RadioButtonGroup, Stack } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { Playlist, PlaylistMode } from './types'; @@ -50,38 +51,52 @@ export const StartModal = ({ playlist, onDismiss }: Props) => { }; return ( - +
- + setAutofit(e.currentTarget.checked)} /> {config.featureToggles.dashboardScene && ( - + setDisplayTimePicker(e.currentTarget.checked)} /> setDisplayVariables(e.currentTarget.checked)} /> setDisplayLinks(e.currentTarget.checked)} diff --git a/public/app/features/teams/CreateTeam.tsx b/public/app/features/teams/CreateTeam.tsx index bba646823e0..7abfa59d4e0 100644 --- a/public/app/features/teams/CreateTeam.tsx +++ b/public/app/features/teams/CreateTeam.tsx @@ -9,6 +9,7 @@ import { TeamRolePicker } from 'app/core/components/RolePicker/TeamRolePicker'; import { updateTeamRoles } from 'app/core/components/RolePicker/api'; import { useRoleOptions } from 'app/core/components/RolePicker/hooks'; import { contextSrv } from 'app/core/core'; +import { t, Trans } from 'app/core/internationalization'; import { AccessControlAction, Role, TeamDTO } from 'app/types'; const pageNav: NavModelItem = { @@ -51,11 +52,16 @@ export const CreateTeam = (): JSX.Element => {
- + {contextSrv.licensedAccessControlEnabled() && ( - + { label={'Email'} description={'This is optional and is primarily used for allowing custom team avatars.'} > + {/* eslint-disable-next-line @grafana/no-untranslated-strings */}
diff --git a/public/app/features/teams/TeamGroupSync.tsx b/public/app/features/teams/TeamGroupSync.tsx index 5acc2975f90..2c01d98e6d5 100644 --- a/public/app/features/teams/TeamGroupSync.tsx +++ b/public/app/features/teams/TeamGroupSync.tsx @@ -7,6 +7,7 @@ import { SlideDown } from 'app/core/components/Animations/SlideDown'; import { CloseButton } from 'app/core/components/CloseButton/CloseButton'; import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA'; import { UpgradeBox, UpgradeContent, UpgradeContentProps } from 'app/core/components/Upgrade/UpgradeBox'; +import { Trans, t } from 'app/core/internationalization'; import { highlightTrial } from 'app/features/admin/utils'; import { StoreState, TeamGroup } from '../../types'; @@ -113,7 +114,9 @@ export class TeamGroupSync extends PureComponent {
{(!highlightTrial() || groups.length > 0) && ( <> -

External group sync

+

+ External group sync +

@@ -146,7 +149,7 @@ export class TeamGroupSync extends PureComponent { /> @@ -161,7 +164,10 @@ export class TeamGroupSync extends PureComponent { {
Dashboard name + Dashboard name +
- + diff --git a/public/app/features/teams/TeamList.tsx b/public/app/features/teams/TeamList.tsx index a3c1155ade9..135151d4b7f 100644 --- a/public/app/features/teams/TeamList.tsx +++ b/public/app/features/teams/TeamList.tsx @@ -103,7 +103,12 @@ export const TeamList = ({ } return ( - + {value} ); @@ -209,7 +214,7 @@ export const TeamList = ({ actions={ !noTeams ? ( - New Team + New Team ) : undefined } @@ -236,7 +241,11 @@ export const TeamList = ({ <>
- +
{hasFetched && teams.length === 0 ? ( diff --git a/public/app/features/teams/TeamSettings.tsx b/public/app/features/teams/TeamSettings.tsx index 2f96308d099..206b309bd08 100644 --- a/public/app/features/teams/TeamSettings.tsx +++ b/public/app/features/teams/TeamSettings.tsx @@ -5,6 +5,7 @@ import { Button, Field, FieldSet, Input, Stack } from '@grafana/ui'; import { TeamRolePicker } from 'app/core/components/RolePicker/TeamRolePicker'; import { useRoleOptions } from 'app/core/components/RolePicker/hooks'; import { SharedPreferences } from 'app/core/components/SharedPreferences/SharedPreferences'; +import { t, Trans } from 'app/core/internationalization'; import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction, Team } from 'app/types'; @@ -47,12 +48,12 @@ export const TeamSettings = ({ team, updateTeam }: Props) => { return (
-
- +
+ { {contextSrv.licensedAccessControlEnabled() && canListRoles && ( - + )} + {/* eslint-disable-next-line @grafana/no-untranslated-strings */}
diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json index c2aa6149c5b..57f0c45d75b 100644 --- a/public/locales/en-US/grafana.json +++ b/public/locales/en-US/grafana.json @@ -35,15 +35,57 @@ } }, "admin": { + "add-to-org-modal": { + "label-organization": "Organization", + "label-role": "Role", + "title-add-to-an-organization": "Add to an organization" + }, + "admin-edit-org-page": { + "label-name": "Name", + "render-missing-permission-message": { + "title-access-denied": "Access denied" + } + }, + "admin-feature-toggles-table": { + "get-stage-cell": { + "beta": "Beta", + "deprecated": "Deprecated", + "ga": "GA" + }, + "title-apply-feature-toggle-changes": "Apply feature toggle changes" + }, + "admin-orgs-table": { + "aria-label-delete-org": "Delete org", + "title-delete": "Delete" + }, "anon-users": { "not-found": "No anonymous users found." }, + "base-user-sessions": { + "title-force-logout-from-all-devices": "Force logout from all devices" + }, "edit-org": { "access-denied": "You do not have permission to see users in this organization. To update this organization, contact your server administrator.", "heading": "Edit Organization", "update-button": "Update", "users-heading": "Organization users" }, + "feature-listing": { + "title-auditing": "Auditing", + "title-dashboard-presence-indicators": "Dashboard presence indicators", + "title-dashboard-usage-stats-drawer": "Dashboard usage stats drawer", + "title-data-source-permissions": "Data source permissions", + "title-enhanced-ldap-integration": "Enhanced LDAP integration", + "title-enterprise-plugins": "Enterprise plugins", + "title-find-unused-dashboards": "Find unused dashboards", + "title-grafana-usage-insights": "Grafana usage insights", + "title-reporting": "Reporting", + "title-saml-authentication": "SAML authentication", + "title-settings-updates-at-runtime": "Settings updates at runtime", + "title-sort-dashboards-by-popularity-in-search": "Sort dashboards by popularity in search", + "title-team-sync": "Team Sync", + "title-white-labeling": "White labeling" + }, "feature-toggles": { "sub-title": "View and edit feature toggles. Read more about feature toggles at <2>grafana.com." }, @@ -61,11 +103,23 @@ "test-mapping-heading": "Test user mapping", "test-mapping-run-button": "Run" }, + "ldap-error-box": { + "title-connection-error": "Connection error" + }, + "ldap-page": { + "label-username": "Username" + }, "ldap-permissions": { "active": "<0> Active", "admin": "<0> Yes", "inactive": "<0> Inactive" }, + "ldap-settings-page": { + "label-reset-to-default-values": "Reset to default values", + "title-invalid-configuration": "Invalid configuration", + "title-more-actions": "More actions", + "tooltip-more-actions": "More actions" + }, "ldap-status": { "title": "LDAP Connection" }, @@ -87,12 +141,21 @@ "ldap-user-info": { "no-team": "No teams found via LDAP" }, + "org-role-picker": { + "placeholder-choose-role": "Choose role..." + }, "org-uers": { "last-seen-never": "Never" }, "org-users": { "not-editable": "This user's role is not editable because it is synchronized from your auth provider. Refer to the <1>Grafana authentication docs for details." }, + "org-users-table": { + "columns": { + "aria-label-role": "Role" + }, + "title-delete": "Delete" + }, "orgs": { "delete-body": "Are you sure you want to delete '{{deleteOrgName}}'?<3> <5>All dashboards for this organization will be removed!", "id-header": "ID", @@ -107,12 +170,38 @@ "title": "Instance statistics", "users-button": "Manage users" }, + "service-info": { + "title-critical-sla-hours": "Critical SLA: 2 hours", + "title-enterprise-plugins": "Enterprise Plugins", + "title-unlimited-expert-support": "Unlimited Expert Support" + }, "settings": { "info-description": "These system settings are defined in grafana.ini or custom.ini (or overridden in ENV variables). To change these you currently need to restart Grafana." }, "upgrade-info": { "title": "Enterprise license" }, + "user-create-page": { + "label-email": "Email", + "label-name": "Name", + "label-password": "Password", + "label-username": "Username" + }, + "user-ldap-sync-info": { + "label-ldap": "LDAP" + }, + "user-list-admin-page-un-connected": { + "placeholder-search-login-email": "Search user by login, email, or name." + }, + "user-list-anonymous-devices-page-un-connected": { + "placeholder-search-devices-by-ip-address": "Search devices by IP address." + }, + "user-list-page": { + "label-all-users": "All users", + "label-anonymous-devices": "Anonymous devices", + "label-organization-users": "Organization users", + "label-users": "Users" + }, "user-orgs": { "add-button": "Add user to organization", "change-role-button": "Change role", @@ -137,7 +226,14 @@ "disable-button": "Disable user", "edit-button": "Edit", "enable-button": "Enable user", - "title": "User information" + "label-email": "Email", + "label-name": "Name", + "label-numerical-identifier": "Numerical identifier", + "label-password": "Password", + "label-username": "Username", + "title": "User information", + "title-delete-user": "Delete user", + "title-disable-user": "Disable user" }, "user-sessions": { "browser-column": "Browser and OS", @@ -155,6 +251,9 @@ "create-button": "New user" }, "users-table": { + "columns": { + "title-edit-user": "Edit user" + }, "last-seen-never": "Never", "no-licensed-roles": "Not assigned" } @@ -819,6 +918,9 @@ "actions": { "button-to-recently-deleted": "Recently deleted" }, + "browse-view": { + "this-folder-is-empty": "This folder is empty" + }, "counts": { "alertRule_one": "{{count}} alert rule", "alertRule_other": "{{count}} alert rule", @@ -839,6 +941,9 @@ "select-checkbox": "Select", "tags-column": "Tags" }, + "descendant-count": { + "title-unable-to-retrieve-descendant-information": "Unable to retrieve descendant information" + }, "empty-state": { "button-title": "Create dashboard", "pro-tip": "Add/move dashboards to your folder at <2>Browse dashboards", @@ -869,6 +974,9 @@ "dashboards": "Dashboards", "panels": "Panels" }, + "name-cell": { + "no-items": "No items" + }, "new-folder-form": { "cancel-label": "Cancel", "create-label": "Create", @@ -2428,9 +2536,32 @@ } }, "library-panels": { + "add-library-panel-modal": { + "title-create-library-panel": "Create library panel" + }, + "confirm": { + "delete-panel": "Do you want to delete this panel?" + }, + "delete-library-panel-modal": { + "cancel": "Cancel", + "delete": "Delete", + "title-delete-library-panel": "Delete library panel" + }, "empty-state": { "message": "No library panels found" }, + "folder-link": { + "dashboards": "Dashboards" + }, + "has-connected-dashboards": { + "dashboard-name": "Dashboard name" + }, + "library-panels-search": { + "placeholder-search-by-name-or-description": "Search by name or description" + }, + "loading-indicator": { + "loading-library-panel": "Loading library panel..." + }, "loading-panel-text": "Loading library panel", "modal": { "body_one": "This panel is being used in {{count}} dashboard. Please choose which dashboard to view the panel in:", @@ -2443,9 +2574,20 @@ "select-placeholder": "Start typing to search for dashboard", "title": "View panel in dashboard" }, + "panel-library-options-group": { + "create-new-library-panel": "Create new library panel" + }, "save": { "error": "Error saving library panel: \"{{errorMsg}}\"", "success": "Library panel saved" + }, + "save-library-panel-modal": { + "cancel": "Cancel", + "dashboard-name": "Dashboard name", + "discard": "Discard", + "loading-connected-dashboards": "Loading connected dashboards...", + "placeholder-search-affected-dashboards": "Search affected dashboards", + "update-all": "Update all" } }, "link": { @@ -3187,6 +3329,27 @@ "error": "Login provider denied login request" } }, + "org": { + "new-org-page": { + "create": "Create", + "label-organization-name": "Organization name", + "placeholder-org-name": "Org name" + }, + "org-profile": { + "label-organization-name": "Organization name", + "label-organization-profile": "Organization profile", + "update-organization-name": "Update organization name" + }, + "user-invite-form": { + "back": "Back", + "label-email-or-username": "Email or username", + "label-name": "Name", + "label-send-invite-email": "Send invite email", + "placeholder-optional": "(optional)", + "role": "Role", + "submit": "Submit" + } + }, "panel": { "header-menu": { "copy": "Copy", @@ -3217,6 +3380,19 @@ "panel-type-filter": { "clear-button": "Clear types" }, + "playlist": { + "start-modal": { + "description-customize-dashboard-elements-visibility": "Customize dashboard elements visibility", + "description-panel-heights-adjusted-screen": "Panel heights will be adjusted to fit screen size", + "label-autofit": "Autofit", + "label-dashboard-links": "Dashboard links", + "label-display-dashboard-controls": "Display dashboard controls", + "label-mode": "Mode", + "label-time-and-refresh": "Time and refresh", + "label-variables": "Variables", + "title-start-playlist": "Start playlist" + } + }, "playlist-edit": { "error-prefix": "Error loading playlist:", "form": { @@ -4038,11 +4214,37 @@ "placeholder": "Filter by tag" }, "teams": { + "create-team": { + "create": "Create", + "label-name": "Name", + "label-role": "Role" + }, "empty-state": { "button-title": "New team", "message": "No teams found", "pro-tip": "Assign folder and dashboard permissions to teams instead of users to ease administration. <2>Learn more", "title": "You haven't created any teams yet" + }, + "team-group-sync": { + "add-group": "Add group", + "external-group-id": "External Group ID", + "external-group-sync": "External group sync", + "title-there-external-groups": "There are no external groups to sync with" + }, + "team-list": { + "columns": { + "title-edit-team": "Edit team" + }, + "new-team": "New Team", + "placeholder-search-teams": "Search teams" + }, + "team-settings": { + "label-email": "Email", + "label-name": "Name", + "label-numerical-identifier": "Numerical identifier", + "label-role": "Role", + "label-team-details": "Team details", + "save": "Save" } }, "theme-preview": {
External Group ID + External Group ID +