https://github.com/opentable/accept-language-parser
It parses the accept-language header from an HTTP request
https://github.com/opentable/accept-language-parser
accept-language i18n
Last synced: 4 months ago
JSON representation
It parses the accept-language header from an HTTP request
- Host: GitHub
- URL: https://github.com/opentable/accept-language-parser
- Owner: opentable
- License: mit
- Created: 2014-03-31T13:05:52.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2022-01-29T01:12:05.000Z (over 3 years ago)
- Last Synced: 2025-01-31T07:36:58.511Z (4 months ago)
- Topics: accept-language, i18n
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/accept-language-parser
- Size: 40 KB
- Stars: 164
- Watchers: 9
- Forks: 23
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
accept-language-parser
======================[](https://travis-ci.org/opentable/accept-language-parser) [](http://badge.fury.io/js/accept-language-parser) 
Parses the accept-language header from an HTTP request and produces an array of language objects sorted by quality.
### Installation:
```bash
npm install accept-language-parser
```### API
#### parser.parse(acceptLanguageHeader)
```
var parser = require('accept-language-parser');var languages = parser.parse('en-GB,en;q=0.8');
console.log(languages);
```Output will be:
```
[
{
code: "en",
region: "GB",
quality: 1.0
},
{
code: "en",
region: undefined,
quality: 0.8
}
];
```Output is always sorted in quality order from highest -> lowest. As per the HTTP spec, omitting the quality value implies 1.0.
#### parser.pick(supportedLangugagesArray, acceptLanguageHeader, options = {})
*Alias*: parser.pick(supportedLanguagesArray, parsedAcceptLanguageHeader)
```javascript
var parser = require('accept-language-parser');var language = parser.pick(['fr-CA', 'fr-FR', 'fr'], 'en-GB,en-US;q=0.9,fr-CA;q=0.7,en;q=0.8');
console.log(language);
```Output will be:
```javascript
"fr-CA"
```The `options` currently supports only the `loose` option which allows partial matching on supported languages.
For example:
```javascript
parser.pick(['fr', 'en'], 'en-GB,en-US;q=0.9,fr-CA;q=0.7,en;q=0.8', { loose: true });
```Would return:
```javascript
"fr"
```In loose mode the order of `supportedLanguagesArray` matters, as it is the first partially matching language that is returned. It means that if you want to pick more specific langauges first, you should list it first as well.
For example:
```javascript
['fr-CA', 'fr']
```### Running test
```bash
npm install
npm test
```### License
MIT