gristlabs_grist-core/app/server/lib/ServerLocale.ts
George Gevoian a6e08883e0 (core) Simple localization support and currency selector.
Summary:
- Grist document has a associated "locale" setting that affects how currency is formatted.
- Currency selector for number format.

Test Plan: not done

Reviewers: dsagal

Reviewed By: dsagal

Subscribers: paulfitz

Differential Revision: https://phab.getgrist.com/D2977
2021-08-26 13:36:49 -07:00

17 lines
624 B
TypeScript

import {parse as languageParser} from "accept-language-parser";
import {Request} from 'express';
import {locales} from 'app/common/Locales';
/**
* Returns the locale from a request, falling back to `defaultLocale`
* if unable to determine the locale.
*/
export function localeFromRequest(req: Request, defaultLocale: string = 'en-US') {
const language = languageParser(req.headers["accept-language"] as string)[0];
if (!language) { return defaultLocale; }
const locale = `${language.code}-${language.region}`;
const supports = locales.some(l => l.code === locale);
return supports ? locale : defaultLocale;
}