refactor(i18n): add better types to our custom defineMessages (#1192)

This commit is contained in:
Gauthier
2024-12-28 23:22:26 +01:00
committed by GitHub
parent 9a595296db
commit 66948b420f
3 changed files with 24 additions and 13 deletions

View File

@@ -7,7 +7,9 @@ import defineMessages from '@app/utils/defineMessages';
import type { TvResult } from '@server/models/Search';
import { useIntl } from 'react-intl';
const messages = defineMessages('components.DiscoverTvUpcoming', {});
const messages = defineMessages('components.DiscoverTvUpcoming', {
upcomingtv: 'Upcoming Series',
});
const DiscoverTvUpcoming = () => {
const intl = useIntl();

View File

@@ -100,6 +100,7 @@
"components.Discover.StudioSlider.studios": "Studios",
"components.Discover.TvGenreList.seriesgenres": "Series Genres",
"components.Discover.TvGenreSlider.tvgenres": "Series Genres",
"components.DiscoverTvUpcoming.upcomingtv": "Upcoming Series",
"components.Discover.createnewslider": "Create New Slider",
"components.Discover.customizediscover": "Customize Discover",
"components.Discover.discover": "Discover",

View File

@@ -1,18 +1,26 @@
import { defineMessages as intlDefineMessages } from 'react-intl';
export default function defineMessages(
type Messages<T extends Record<string, string>> = {
[K in keyof T]: {
id: string;
defaultMessage: T[K];
};
};
export default function defineMessages<T extends Record<string, string>>(
prefix: string,
messages: Record<string, string>
) {
const modifiedMessages: Record<
string,
{ id: string; defaultMessage: string }
> = {};
for (const key of Object.keys(messages)) {
modifiedMessages[key] = {
id: prefix + '.' + key,
messages: T
): Messages<T> {
const keys: (keyof T)[] = Object.keys(messages);
const modifiedMessagesEntries = keys.map((key) => [
key,
{
id: `${prefix}.${key as string}`,
defaultMessage: messages[key],
};
}
},
]);
const modifiedMessages: Messages<T> = Object.fromEntries(
modifiedMessagesEntries
);
return intlDefineMessages(modifiedMessages);
}