What does it do?
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.
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 For multi-lingual page caching see the cache branch of the merb_global fork at <http://github.com/giom/merb_global> , I’ll post a write-up about this later.
Syntax:
set_from_accept_language $lang en ja pl;
$langis the variable in which to store the localeen ja plare 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)
Caveat
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 <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html>). 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 your_domain.com; set_from_accept_language $lang en ja zh; rewrite ^/(.*) http://$lang.your_domain.com 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; } }
Where to get it?
It’s available on github at http://github.com/giom/nginx_accept_language_module
Installation
Download the module source from github: http://github.com/giom/nginx_accept_language_module or clone it with git clone git://github.com/giom/nginx_accept_language_module.git
Unpack, and then compile nginx with:
`./configure --add-module=path/to/nginx_accept_language_module`
I’m currently available for hire on a contract basis.