Use translation

Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
This commit is contained in:
Dominika Zemanovicova
2025-02-04 10:39:01 +01:00
parent 4c76f05826
commit af8ec87576
9 changed files with 148 additions and 25 deletions
+16 -3
View File
@@ -10,9 +10,7 @@
]
},
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
"types": "dist/index.d.ts"
"access": "public"
},
"keywords": [
"backstage",
@@ -26,8 +24,23 @@
},
"license": "Apache-2.0",
"sideEffects": false,
"exports": {
".": "./src/index.ts",
"./alpha": "./src/alpha.ts",
"./package.json": "./package.json"
},
"main": "src/index.ts",
"types": "src/index.ts",
"typesVersions": {
"*": {
"alpha": [
"src/alpha.ts"
],
"package.json": [
"package.json"
]
}
},
"files": [
"dist"
],
@@ -0,0 +1,18 @@
## API Report File for "@backstage/plugin-kubernetes-cluster"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { TranslationRef } from '@backstage/core-plugin-api/alpha';
// @alpha (undocumented)
export const kubernetesClusterTranslationRef: TranslationRef<
'kubernetes-cluster',
{
readonly 'kubernetesClusterContentPage.permissionAlert.message': "To view Kubernetes objects, contact your portal administrator to give you the 'kubernetes.clusters.read' permission.";
readonly 'kubernetesClusterContentPage.permissionAlert.title': 'Permission required';
}
>;
// (No @packageDocumentation comment for this package)
```
+17
View File
@@ -0,0 +1,17 @@
/*
* Copyright 2025 The Backstage Authors
*
* 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.
*/
export { kubernetesClusterTranslationRef } from './translation';
@@ -26,6 +26,8 @@ import {
import { WarningPanel } from '@backstage/core-components';
import { kubernetesClustersReadPermission } from '@backstage/plugin-kubernetes-common';
import { RequirePermission } from '@backstage/plugin-permission-react';
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
import { kubernetesClusterTranslationRef } from '../../translation';
const ContentGrid = () => {
const { error } = useKubernetesClusterError();
@@ -59,14 +61,15 @@ const ContentGrid = () => {
* @public
*/
export const KubernetesClusterContent = () => {
const { t } = useTranslationRef(kubernetesClusterTranslationRef);
return (
<RequirePermission
permission={kubernetesClustersReadPermission}
errorPage={
<WarningPanel
title="Permission required"
message={`To view Kubernetes objects, contact your portal administrator to give you the
'${kubernetesClustersReadPermission.name}' permission.`}
title={t('kubernetesClusterContentPage.permissionAlert.title')}
message={t('kubernetesClusterContentPage.permissionAlert.message')}
/>
}
>
@@ -0,0 +1,30 @@
/*
* Copyright 2025 The Backstage Authors
*
* 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 { createTranslationRef } from '@backstage/core-plugin-api/alpha';
/** @alpha */
export const kubernetesClusterTranslationRef = createTranslationRef({
id: 'kubernetes-cluster',
messages: {
kubernetesClusterContentPage: {
permissionAlert: {
title: 'Permission required',
message:
"To view Kubernetes objects, contact your portal administrator to give you the 'kubernetes.clusters.read' permission.",
},
},
},
});
+25 -15
View File
@@ -13,6 +13,7 @@ import { ExtensionDefinition } from '@backstage/frontend-plugin-api';
import { FrontendPlugin } from '@backstage/frontend-plugin-api';
import { JSX as JSX_2 } from 'react';
import { RouteRef } from '@backstage/frontend-plugin-api';
import { TranslationRef } from '@backstage/core-plugin-api/alpha';
// @public (undocumented)
const _default: FrontendPlugin<
@@ -47,21 +48,6 @@ const _default: FrontendPlugin<
routeRef?: RouteRef<AnyRouteRefParams> | undefined;
};
}>;
'api:kubernetes': ExtensionDefinition<{
kind: 'api';
name: undefined;
config: {};
configInput: {};
output: ConfigurableExtensionDataRef<
AnyApiFactory,
'core.api.factory',
{}
>;
inputs: {};
params: {
factory: AnyApiFactory;
};
}>;
'entity-content:kubernetes/kubernetes': ExtensionDefinition<{
kind: 'entity-content';
name: 'kubernetes';
@@ -113,6 +99,21 @@ const _default: FrontendPlugin<
filter?: string | ((entity: Entity) => boolean) | undefined;
};
}>;
'api:kubernetes': ExtensionDefinition<{
kind: 'api';
name: undefined;
config: {};
configInput: {};
output: ConfigurableExtensionDataRef<
AnyApiFactory,
'core.api.factory',
{}
>;
inputs: {};
params: {
factory: AnyApiFactory;
};
}>;
'api:kubernetes/proxy': ExtensionDefinition<{
kind: 'api';
name: 'proxy';
@@ -162,5 +163,14 @@ const _default: FrontendPlugin<
>;
export default _default;
// @alpha (undocumented)
export const kubernetesTranslationRef: TranslationRef<
'kubernetes',
{
readonly 'kubernetesContentPage.permissionAlert.message': "To view Kubernetes objects, contact your portal administrator to give you the 'kubernetes.clusters.read' and 'kubernetes.resources.read' permission.";
readonly 'kubernetesContentPage.permissionAlert.title': 'Permission required';
}
>;
// (No @packageDocumentation comment for this package)
```
@@ -20,6 +20,8 @@ import {
} from '@backstage/plugin-kubernetes-common';
import { usePermission } from '@backstage/plugin-permission-react';
import { WarningPanel } from '@backstage/core-components';
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
import { kubernetesTranslationRef } from './alpha/translation';
export type RequireKubernetesPermissionProps = {
children: ReactNode;
@@ -34,6 +36,7 @@ export function RequireKubernetesPermissions(
const kubernetesResourcesPermissionResult = usePermission({
permission: kubernetesResourcesReadPermission,
});
const { t } = useTranslationRef(kubernetesTranslationRef);
if (
kubernetesClustersPermissionResult.loading ||
@@ -51,9 +54,8 @@ export function RequireKubernetesPermissions(
return (
<WarningPanel
title="Permission required"
message={`To view Kubernetes objects, contact your portal administrator to give you the
'${kubernetesClustersReadPermission.name}' and '${kubernetesResourcesReadPermission.name}' permission.`}
title={t('kubernetesContentPage.permissionAlert.title')}
message={t('kubernetesContentPage.permissionAlert.message')}
/>
);
}
+1 -1
View File
@@ -13,5 +13,5 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export { kubernetesTranslationRef } from './translation';
export { default } from './plugin';
@@ -0,0 +1,30 @@
/*
* Copyright 2025 The Backstage Authors
*
* 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 { createTranslationRef } from '@backstage/core-plugin-api/alpha';
/** @alpha */
export const kubernetesTranslationRef = createTranslationRef({
id: 'kubernetes',
messages: {
kubernetesContentPage: {
permissionAlert: {
title: 'Permission required',
message:
"To view Kubernetes objects, contact your portal administrator to give you the 'kubernetes.clusters.read' and 'kubernetes.resources.read' permission.",
},
},
},
});