mirror of
https://github.com/sct/overseerr.git
synced 2025-12-28 16:56:19 +01:00
refactor(i18n): add better types to our custom defineMessages (#1192)
This commit is contained in:
@@ -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