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 type { TvResult } from '@server/models/Search';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
const messages = defineMessages('components.DiscoverTvUpcoming', {}); const messages = defineMessages('components.DiscoverTvUpcoming', {
upcomingtv: 'Upcoming Series',
});
const DiscoverTvUpcoming = () => { const DiscoverTvUpcoming = () => {
const intl = useIntl(); const intl = useIntl();

View File

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

View File

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