MCPcopy
hub / github.com/github/docs / useUserLanguage

Function useUserLanguage

components/hooks/useUserLanguage.ts:8–32  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6import { USER_LANGUAGE_COOKIE_NAME } from '../../lib/constants.js'
7
8export 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}

Callers 1

HeaderNotificationsFunction · 0.90

Calls 1

useLanguagesFunction · 0.90

Tested by

no test coverage detected