diff --git a/.changeset/plenty-lamps-pump.md b/.changeset/plenty-lamps-pump.md new file mode 100644 index 0000000000..04d0f2f4f0 --- /dev/null +++ b/.changeset/plenty-lamps-pump.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-adr': patch +--- + +support for i18n feature diff --git a/plugins/adr/alpha-api-report.md b/plugins/adr/alpha-api-report.md new file mode 100644 index 0000000000..1d2b3f313d --- /dev/null +++ b/plugins/adr/alpha-api-report.md @@ -0,0 +1,16 @@ +## API Report File for "@backstage/plugin-adr" + +> 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 adrTranslationRef: TranslationRef<{ + readonly content_header_title: 'Architecture Decision Records'; + readonly failed_to_fetch: 'Failed to fetch ADRs'; + readonly no_adrs: 'No ADRs found'; +}>; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/adr/package.json b/plugins/adr/package.json index d288f92d9c..fe099823f6 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -4,10 +4,23 @@ "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.ts" + ], + "package.json": [ + "package.json" + ] + } + }, "publishConfig": { - "access": "public", - "main": "dist/index.esm.js", - "types": "dist/index.d.ts" + "access": "public" }, "backstage": { "role": "frontend-plugin" diff --git a/plugins/adr/src/alpha.ts b/plugins/adr/src/alpha.ts new file mode 100644 index 0000000000..587cfce3d6 --- /dev/null +++ b/plugins/adr/src/alpha.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 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 * from './translations'; diff --git a/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx b/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx index 32e353eba9..8081043a9f 100644 --- a/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx +++ b/plugins/adr/src/components/EntityAdrContent/EntityAdrContent.tsx @@ -59,6 +59,8 @@ import FolderIcon from '@material-ui/icons/Folder'; import { adrApiRef, AdrFileInfo } from '../../api'; import { rootRouteRef } from '../../routes'; import { AdrContentDecorator, AdrReader } from '../AdrReader'; +import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; +import { adrTranslationRef } from '../../translations'; const useStyles = makeStyles((theme: Theme) => ({ adrMenu: { @@ -169,6 +171,7 @@ export const EntityAdrContent = (props: { const scmIntegrations = useApi(scmIntegrationsApiRef); const adrApi = useApi(adrApiRef); const entityHasAdrs = isAdrAvailable(entity); + const t = useTranslationRef(adrTranslationRef); const config = useApi(configApiRef); const appSupportConfigured = config?.getOptionalConfig('app.support'); @@ -214,7 +217,7 @@ export const EntityAdrContent = (props: { return ( - + {appSupportConfigured && } @@ -225,7 +228,7 @@ export const EntityAdrContent = (props: { {loading && } {entityHasAdrs && !loading && error && ( - + )} {entityHasAdrs && @@ -252,7 +255,7 @@ export const EntityAdrContent = (props: { ) : ( - No ADRs found + {t('no_adrs')} ))} ); diff --git a/plugins/adr/src/translations.ts b/plugins/adr/src/translations.ts new file mode 100644 index 0000000000..5cef279e66 --- /dev/null +++ b/plugins/adr/src/translations.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2023 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 adrTranslationRef = createTranslationRef({ + id: 'adr', + messages: { + content_header_title: 'Architecture Decision Records', + failed_to_fetch: 'Failed to fetch ADRs', + no_adrs: 'No ADRs found', + } as const, +});