Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Parse the Accept-Language header and sets a variable to a language you support that your user can understand

branch: master

allow use in http

latest commit 2f69842f83
Guillaume Maury authored July 27, 2013
Octocat-spinner-32 src allow use in http July 27, 2013
Octocat-spinner-32 LICENSE first commit November 11, 2008
Octocat-spinner-32 README.textile Added some examples December 17, 2008
Octocat-spinner-32 config first commit November 11, 2008

Nginx Accept Language module

This module parses the Accept-Language header and gives the most suitable locale for the user from a list of supported locales from your website.


set_from_accept_language $lang en ja pl; - `$lang` is the variable in which to store the locale - `en ja pl` are the locales supported by your website

If none of the locales from accept_language is available on your website, it sets the variable to the first locale of your website’s supported locales (in this case en)


It currently assumes that the accept-language is sorted by quality values (from my tests it’s the case for safari, firefox, opera and ie) and discards q (see In the situation where I’m using the module, this assumption works… but buyer beware :-)

Example configuration

If you have different subdomains for each languages
server { listen 80; server_name; set_from_accept_language $lang en ja zh; rewrite ^/(.*) http://$ redirect; }

Or you could do something like this, redirecting people coming to ‘/’ to /en (or /pt)

location / { set_from_accept_language $lang pt en; if ( $request_uri ~ ^/$ ) { rewrite ^/$ /$lang redirect; break; } }

Why did I create it?

I’m using page caching with merb on a multi-lingual website and I needed a way to serve the correct language page from the cache
I’ll soon put an example on


Send Bugs to Guillaume Maury (


Thanks to Evan Miller for his guide on writing nginx modules (

Something went wrong with that request. Please try again.