The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Dancer::Plugin::Locale::Detect;

our $VERSION = '0.0101';

use strict;
use warnings;
use Dancer::Plugin;
use Dancer qw(:syntax);
use Locale::Util;

my $setting = plugin_setting;
my $param = exists $setting->{param} ? $setting->{param} : 'locale';
my $parse_http_accept = exists $setting->{parse_http_accept} ? $setting->{parse_http_accept} : 1;

if ($param || $parse_http_accept) {
    hook before => sub {
        if ($param and my $loc = params->{$param}) {
            Locale::Util::web_set_locale([$loc]);
        } elsif ($parse_http_accept) {
            Locale::Util::web_set_locale(request->env->{HTTP_ACCEPT_LANGUAGE});
        }
    };
}

register_plugin;

1;