The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Plack::Middleware::I18N - language detection

SYNOPSIS

    use Plack::Builder;

    builder {
        enable 'I18N', i18n => $i18n;

        ...
    };

DESCRIPTION

Plack::Middleware::I18N detects client's languages and set $env variables.

Language detection

All detected languages are validated against available languages.

From path

When PATH_INFO contains something like /en/path/to, then en is detected as a language and PATH_INFO is changed to /path/to.

From session

When psgix.session contains plack.i18n.language then it is used as a language. Session option is set after every detection.

From HTTP_ACCEPT

Detects language from HTTP_ACCEPT header using I18N::AcceptLanguage.

From custom callback

Sometimes a more sophisticated language detection is needed. Thus a custom callback can be provided. For example:

    enable 'I18N', custom_cb => sub {
        my ($env, $lang) = @_;

        return 'de';
    };

$env parameters

Plack::Middleware::I18N registers the following $env parameters:

plack.i18n

Holds Plack::I18N instance.

plack.i18n.language

Current detected language. A shortcut for $env-{'plack.i18n'}->language>.

plack.i18n.handle

A shortcut for $env-{'plack.i18n'}->handle($env->{'plack.i18n.language'})>.

OPTIONS

i18n

Plack::I18N instance.

use_path

Whether detect language from URL.

use_session

Whether detect language from session.

use_header

Whether detect language from HTTP_ACCEPT.

custom_cb

Whether detect language from a custom callback.

LICENSE

Copyright (C) Viacheslav Tykhanovskyi.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

vti <viacheslav.t@gmail.com>