language-management-lib
Version:
A TypeScript library for managing language translations in applications with URL parameter support.
38 lines (37 loc) • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useTranslation = useTranslation;
const react_1 = require("react");
function useTranslation(languageManager) {
const [currentLanguage, setCurrentLanguage] = (0, react_1.useState)(languageManager.getCurrentLanguage());
const t = (0, react_1.useCallback)((key) => {
return languageManager.translate(key);
}, [languageManager, currentLanguage]);
const changeLanguage = (0, react_1.useCallback)((language, updateURL = true) => {
languageManager.setLanguage(language, updateURL);
setCurrentLanguage(languageManager.getCurrentLanguage());
}, [languageManager]);
const addTranslations = (0, react_1.useCallback)((language, translations) => {
languageManager.addTranslations(language, translations);
}, [languageManager]);
// Listen for URL changes
(0, react_1.useEffect)(() => {
const handleURLChange = () => {
const urlParams = new URLSearchParams(window.location.search);
const urlLanguage = urlParams.get("lng") || urlParams.get("language");
if (urlLanguage && urlLanguage !== currentLanguage) {
languageManager.setLanguage(urlLanguage, false); // Don't update URL to avoid infinite loop
setCurrentLanguage(languageManager.getCurrentLanguage());
}
};
window.addEventListener("popstate", handleURLChange);
return () => window.removeEventListener("popstate", handleURLChange);
}, [languageManager, currentLanguage]);
return {
t,
currentLanguage,
changeLanguage,
addTranslations,
availableLanguages: languageManager.getAvailableLanguages(),
};
}