AcceptLanguageModule

= nginx_accept_language_module =

''This module is not distributed with the Nginx source. See the installation instructions.''

Available on github at

Description
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.

Example configuration
set_from_accept_language $lang en ja pl;

where  is the variable in which to store the locale and   are the locales supported by your website

If none of the locales from  is available on your website, it sets the variable to the first locale of your website's supported locales (in this case  ). Note: 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 :-)

Installation
Download the module source from github.

Unpack, and then compile nginx with:

./configure --add-module=path/to/nginx_accept_language_module

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 http://gom-jabbar.org

Bugs
Send Bugs to Guillaume Maury (dev@gom-jabbar.org)

Credits
Thanks to Evan Miller for his guide on writing nginx modules.

Alternative
You can manage $language_suffix by this setting when you cannot add this module into your system.

set $first_language $http_accept_language; if ($http_accept_language ~* '^(.+?),') { set $first_language $1; }
 * 1) accept-language: en,en-US;q=0.8,ja;q=0.6

set $language_suffix 'en'; if ($first_language ~* 'ja') { set $language_suffix 'ja'; }