37 lines
951 B
TypeScript
37 lines
951 B
TypeScript
import { useTranslation } from "react-i18next";
|
|
|
|
export function useTranslate() {
|
|
const { t: tBase, i18n } = useTranslation("common");
|
|
|
|
const changeLanguage = (lang: string) => {
|
|
i18n.changeLanguage(lang);
|
|
};
|
|
|
|
const t = (translationKey: string, values?: { [key: string]: number | string }) => {
|
|
if (values && Object.keys(values).length > 0) {
|
|
const translatedText = tBase(translationKey, values);
|
|
|
|
const placeholderRegex = new RegExp(`(\{${Object.keys(values).join("}|{")}\})`, "g");
|
|
|
|
const parts = translatedText.split(placeholderRegex);
|
|
return parts
|
|
.map((part) => {
|
|
const key = part.replace(/[{}]/g, "");
|
|
if (values[key] !== undefined) {
|
|
return values[key];
|
|
}
|
|
return part;
|
|
})
|
|
.join("");
|
|
}
|
|
return tBase(translationKey, values);
|
|
};
|
|
|
|
return {
|
|
t,
|
|
i18n,
|
|
changeLanguage,
|
|
currentLanguage: i18n.language,
|
|
};
|
|
}
|