Locale Detector

This Rails gem makes use of the HTTP_ACCEPT_LANGUAGE http header sent by web browsers with every request, to set the I18n.locale setting.

When this fails (for example if there is no such http header - as is the case for Google bot), it will try to determine the locale based on the toplevel domain suffix (so it will set 'de' for the example.de domain).

When both fail, it will fall back to I18n.default_locale, which should be set in application’s config/application.rb file ('en' by default).

The HTTP_ACCEPT_LANGUAGE header parser is based on: https://github.com/iain/http_accept_language/blob/master/lib/http_accept_language.rb

Requirements

Rails 3.0+

Example

When this gem is installed and someone visits your application using a Polish version of Firefox the following http header will be sent:

HTTP_ACCEPT_LANGUAGE: pl,en-us;q=0.7,en;q=0.3

and the I18n.locale will be set to 'pl'.

Installation

Install the gem

$ gem install locale_detector

add it to the Gemfile

gem 'locale_detector'

and bundle

$ bundle

Turning off the language autodetection

In certain cases we might want to turn off the locale/language autodetection. For example, we might want to give the user the ability to set his preferred language in his profile and respect this setting.

In order to do that, you need to set a :language session key in your app:

session[:language] = 'pl'

In consequence, regardless of the user browser’s language, the I18n.locale will be set to 'pl'.

Copyright © 2011 Exvo.com Development BV, released under the MIT license