Files
Compass/web/lib/locale-cookie.ts
Martin Braquet ba9b3cfb06 Add pretty formatting (#29)
* Test

* Add pretty formatting

* Fix Tests

* Fix Tests

* Fix Tests

* Fix

* Add pretty formatting fix

* Fix

* Test

* Fix tests

* Clean typeckech

* Add prettier check

* Fix api tsconfig

* Fix api tsconfig

* Fix tsconfig

* Fix

* Fix

* Prettier
2026-02-20 17:32:27 +01:00

59 lines
1.3 KiB
TypeScript

import {defaultLocale, Locale, supportedLocales} from 'common/constants'
let cachedLocale: string | null | undefined = null
export const resetCachedLocale = () => {
cachedLocale = null
}
export function getLocale(): string {
// req?: IncomingMessage
if (cachedLocale) return cachedLocale
// console.log('cachedLocale', cachedLocale)
let cookie = null
// Server
// if (req?.headers?.cookie) {
// cookie = req.headers.cookie
// }
// Client
if (typeof document !== 'undefined') {
cookie = document.cookie
}
if (cookie) {
// console.log('Cookie', cookie)
cachedLocale = cookie
.split(' ')
.find((c) => c.startsWith('lang='))
?.split('=')[1]
?.split(' ')[0]
?.replace(';', '')
// console.log('Locale cookie', cachedLocale)
}
if (!cachedLocale) {
cachedLocale = getBrowserLocale()
}
// console.log('Locale cookie browser', getBrowserLocale())
return cachedLocale ?? defaultLocale
}
export function getBrowserLocale(): Locale | null {
if (typeof navigator === 'undefined') return null
const languages = navigator.languages ?? [navigator.language]
// console.log('Browser languages', languages, navigator.language)
for (const lang of languages) {
const base = lang.split('-')[0] as Locale
if (supportedLocales.includes(base)) {
return base
}
}
return null
}