FAQ

Page Discussion History

Difference between revisions of "AcceptLanguageModule"

(correct Evan Miller's domain)
 
(Add "Alternative" section)
 
Line 37: Line 37:
 
== Credits ==
 
== Credits ==
 
Thanks to Evan Miller for his [http://evanmiller.org/nginx-modules-guide.html guide on writing nginx modules].
 
Thanks to Evan Miller for his [http://evanmiller.org/nginx-modules-guide.html guide on writing nginx modules].
 +
 +
 +
== Alternative ==
 +
You can manage $language_suffix by this setting when you cannot add this module into your system.
 +
 +
<pre>
 +
# accept-language: en,en-US;q=0.8,ja;q=0.6
 +
set $first_language $http_accept_language;
 +
if ($http_accept_language ~* '^(.+?),') {
 +
    set $first_language $1;
 +
}
 +
 +
set $language_suffix 'en';
 +
if ($first_language ~* 'ja') {
 +
    set $language_suffix 'ja';
 +
}
 +
</pre>

Latest revision as of 04:23, 31 October 2013

Contents

nginx_accept_language_module

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

Available on github at [1]

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 $lang is the variable in which to store the locale and 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).

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 [2]). 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.

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

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