// Copyright 2018 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React from 'react'; import type { LocalizerType, ICUJSXMessageParamsByKeyType, } from '../types/Util'; import * as log from '../logging/log'; export type Props = { /** The translation string id */ id: Key; i18n: LocalizerType; } & (ICUJSXMessageParamsByKeyType[Key] extends undefined ? { components?: ICUJSXMessageParamsByKeyType[Key]; } : { components: ICUJSXMessageParamsByKeyType[Key]; }); export function I18n({ components, id, // Indirection for linter/migration tooling i18n: localizer, }: Props): JSX.Element | null { if (!id) { log.error('Error: id prop not provided'); return null; } const intl = localizer.getIntl(); return <>{intl.formatMessage({ id }, components, {})}; }