()
| 6 | import { USER_LANGUAGE_COOKIE_NAME } from '../../lib/constants.js' |
| 7 | |
| 8 | export function useUserLanguage() { |
| 9 | const { locale } = useRouter() |
| 10 | const [userLanguage, setUserLanguage] = useState<string>('en') |
| 11 | const { languages } = useLanguages() |
| 12 | |
| 13 | useEffect(() => { |
| 14 | const languagePreferred = [ |
| 15 | Cookies.get(USER_LANGUAGE_COOKIE_NAME), |
| 16 | navigator.language, |
| 17 | ...navigator.languages, |
| 18 | ] |
| 19 | .filter(Boolean) |
| 20 | // If it comes from `navigator.language` it most likely will contain |
| 21 | // the region. E.g. `en-US` but in our application, we don't use |
| 22 | // the region. |
| 23 | .map((lang) => lang && lang.slice(0, 2).toLowerCase()) |
| 24 | .find((lang) => lang && lang in languages) |
| 25 | |
| 26 | if (languagePreferred) { |
| 27 | setUserLanguage(languagePreferred) |
| 28 | } |
| 29 | }, [locale]) |
| 30 | |
| 31 | return { userLanguage } |
| 32 | } |
no test coverage detected