1
0
Fork 0
mirror of https://github.com/sussy-code/smov.git synced 2024-12-30 16:17:41 +01:00
smov/src/hooks/useRandomTranslation.ts
2023-12-31 16:35:10 +01:00

32 lines
970 B
TypeScript

import { useCallback, useMemo } from "react";
import { useTranslation } from "react-i18next";
// 10% chance of getting a joke title
const shouldGiveJokeTitle = () => Math.floor(Math.random() * 10) === 0;
export function useRandomTranslation() {
const { t } = useTranslation();
const shouldJoke = useMemo(() => shouldGiveJokeTitle(), []);
const seed = useMemo(() => Math.random(), []);
const getRandomTranslation = useCallback(
(key: string): string => {
const defaultTitle = t(`${key}.default`) ?? "";
if (!shouldJoke) return defaultTitle;
const keys = t(`${key}.extra`, {
returnObjects: true,
defaultValue: defaultTitle,
});
if (Array.isArray(keys)) {
if (keys.length === 0) return defaultTitle;
return keys[Math.floor(seed * keys.length)];
}
return typeof keys === "string" ? keys : defaultTitle;
},
[t, seed, shouldJoke],
);
return { t: getRandomTranslation };
}