https://github.com/jplusplus/langparser
Restify middleware for parsing language/locale url parameters
https://github.com/jplusplus/langparser
Last synced: about 1 year ago
JSON representation
Restify middleware for parsing language/locale url parameters
- Host: GitHub
- URL: https://github.com/jplusplus/langparser
- Owner: jplusplus
- License: mit
- Created: 2018-06-25T12:10:30.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-07-18T20:09:36.000Z (almost 3 years ago)
- Last Synced: 2025-03-29T09:46:24.492Z (about 1 year ago)
- Language: JavaScript
- Size: 376 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Langparser
[](https://nodei.co/npm/langparser/)
A middleware for parsing language/locale url parameters in Express, Fastify or Restify (or derivatives).
This middleware looks for a language tag in the query string (by default in `lang=XX` or `language=XX`), and tries to parse out locale and language, according to BCP 47.
Parsed values will be available for any following routes in `res.locals.lang` and `res.locals.locale`
respectively.
# Installation
``` sh
npm install langparser
```
# Usage
```js
const langParser = require("langparser")
server.use(langParser())
server.get("/my/route", (req, res, next) => {
console.log(req.locals.lang)
// Visiting /my/route?lang=sv-AX will print 'sv'
// Visiting /my/route?lang=i-klingon will print 'tlh'
console.log(req.locals.locale)
// Visiting /my/route?lang=sv-AX will print 'sv-AX'
// Visiting /my/route?lang=i-klingon will print 'tlh'
})
```
The following options are available:
```js
server.use(langParser({
defaultLang: "en-GB", // Fallback language/locale if none found
params: ["sprache", "lingua"] // URL param(s) to look for
}))
```
By default we will look for the url parameters `lang` and `language`.
## Restify
If you want this middleware to work with post requests in Restify, you need to call the bodyParser middleware before this one.
For Restify 5.0 and newer:
```js
server.use(restify.plugins.bodyParser())
server.use(langParser())
```
## Fastify
If you use Fastify, you need the `@fastify/Express` plugin:
```js
import express from "@fastify/express"
await fastify.register(express)
fastify.use(langParser())
```
In the Fastify routes, parsed paramerters will be available under `req.raw.locals`
# Changelog
+ 3.1.0
- Look in both `req.query` and `req.params`, as `query` is used by e.g. Fastify.
+ 3.0.0
- Parse locale data moved from `res` to `req`
- Document Express and Fastify usage
+ 2.0.1
- Specify engine requirement to NodeJS >= 12.20.0, as we are now ESM only
- rename .eslintrc.js > .eslintrc.cjs
+ 2.0.0
- Convert to ESM
+ 1.1.1
- Dependency upgrades
+ 1.1.0
- Add Restify 8 to peerDependencies, and require NodeJS >= 8
+ 1.0.1
- Documentation fixes
+ 1.0.0
- First version