UNPKG

language-management-lib

Version:

A TypeScript library for managing language translations in applications with URL parameter support.

38 lines (37 loc) 1.75 kB
"use strict"; 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(), }; }