mirror of
https://github.com/sct/overseerr.git
synced 2025-12-26 08:25:07 +01:00
refactor(i18n): add better types to our custom defineMessages (#1192)
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user