I18N::AcceptLanguage - Matches language preference to available
languages
use I18N::AcceptLanguage;
my $supportedLanguages = [( 'en-us', 'fr' )];
my $acceptor = I18N::AcceptLanguage->new();
my $language = $acceptor->accepts($ENV{HTTP_ACCEPT_LANGUAGE},
$supportedLanguages);
I18N::AcceptLanguage matches language preference to
available languages per rules defined in RFC 2616, section 14.4: HTTP/1.1 -
Header Field Definitions - Accept-Language.
- accepts(
CLIENT_PREFERENCES, SUPPORTED_LANGUAGES )
- Returns the highest priority common language between client and server. If
no common language is found, the defaultLanguage is returned. If
defaultLanuage is also not set, an empty string is returned. The method
expects two arguments:
- CLIENT_PREFERENCES
- A string in the same format defined in RFC 2616, quoted here:
1#( ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) [ "'" "q" "=" qvalue ] )
Examples:
da, en-gb;q=0.8, en;q=0.7
en-us, ja, *
- SUPPORTED_LANGUAGES
- A reference to a list of language ranges supported by the server.
- new( [ OPTIONS ] )
- Returns a new I18N::AcceptLanguage object. The method accepts the
following key/value pair options:
- debug
- A boolean set to either 0 or 1. When set to 1, debug messages will be
printed to STDOUT. The value of debug defaults to 0.
- defaultLanguage
- A string representing the server's default language choice. The value of
defaultLanguage defaults to an empty string.
- strict
- A boolean set to either 0 or 1. When set to 1, the software strictly
conforms to the protocol specification. When set to 0, the software will
perform a secondary, aggressive language match regardless of country (ie,
a client asking for only en-gb will get back en-us if the server does not
accept en-gb or en but does accept en-us). The last matching language in
the supported languages list will be chosen. The value of strict defaults
to 1.
- Case Sensitivity
- Language matches are done in a case-insensitive manner but results are
case-sensitive to the value found in the SUPPORTED_LANGUAGES list.
This module is available on CPAN worldwide and requires perl
version 5.6.1 or higher be installed.
Christian Gilmore <cag@us.ibm.com>
Copyright (C) 2003, 2004 International Business Machines
Corporation and others. All Rights Reserved.
This module is free software; you can redistribute it and/or
modify it under the terms of the IBM Public License.