langparser

3.1.0 • Public • Published

Langparser

npm package

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

npm install langparser

Usage

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:

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:

server.use(restify.plugins.bodyParser())
server.use(langParser())

Fastify

If you use Fastify, you need the @fastify/Express plugin:

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

Readme

Keywords

none

Package Sidebar

Install

npm i langparser

Weekly Downloads

0

Version

3.1.0

License

MIT

Unpacked Size

7.31 kB

Total Files

7

Last publish

Collaborators

  • rotsee