arosemena/localechooser

Locale chooser based on common browser headers

1.0.1 2015-02-23 22:30 UTC

This package is not auto-updated.

Last update: 2024-05-01 04:26:25 UTC


README

This is a simple class to detect the locale that the user preffers.

Installation

The easiest way to install this is through composer, inside your composer.json require block add

"arosemena/localechooser": "1.0.1"

and then do composer update, otherwise you could grab the class itself and autoload it with the method of your choosing.

Usage

You will need an instance of the LocaleChooser class, the constructor takes 3 parameters, first an array of the available language, ['en', 'es', 'fr'] for example, the second parameter is a string of the default language in case nothing can be matched, the third parameter is the name of the cookie that contains the language that overrides all the normal priority.

    $chooser = new Arosemena\LanguageChooser\LanguageChooser(['en', 'es'], 'en', 'language');

After the class has been instanciated do $chooser->obtain() to get the appropiate locale.

Examples

    $chooser = new Arosemena\LanguageChooser\LanguageChooser(['en', 'es', 'fr'], 'es', 'language');
    // if the browser says that the user prefers french (fr)
    $chooser->obtain(); // returns 'fr'
    // if the browser says that the user prefers german (de)
    $chooser->obtain(); // returns 'es' because it is the default language and german isn't supported
    // if the browser says that the user prefers spanish (es) and sends a cookie named language with the value 'fr'
    $chooser->obtain(); // returns 'fr' because the cookie overrides the browser preferred language

How does it work?

The class will read the $_SERVER['HTTP_ACCEPT_LANGUAGE'] variable which is a header sent by most modern browsers and it will be parsed and evaluated against the available languages to determine the most appropiate one.