NAME
I18N::AcceptLanguage - Matches language preference to available languages
SYNOPSIS
use I18N::AcceptLanguage;
my $supportedLanguages = [( 'en-us', 'fr' )];
my $acceptor = I18N::AcceptLanguage->new();
my $language = $acceptor->accepts($ENV{HTTP_ACCEPT_LANGUAGE},
$supportedLanguages);
DESCRIPTION
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.
PUBLIC METHODS
- accepts( CLIENT_PREFERENCES, SUPPORTED_LANGUAGES )
-
Returns the highest priority common language between client and server. If no common language is found, 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 sotware 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 value of strict defaults to 1.
PRIVATE METHODS
- debug( [ BOOLEAN ] )
-
A get/set method that returns the value of debug, set by the optional method argument.
- defaultLanguage( [ LANGUAGE ] )
-
A get/set method that returns the value of defaultLanguage, set by the optional method argument.
- strict( [ BOOLEAN ] )
-
A get/set method that returns the value of strict, set by the optional method argument.
NOTES
- 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.
AVAILABILITY
This module is available on CPAN worldwide and requires perl version 5.6.1 or higher be installed.
AUTHORS
Christian Gilmore <cag@us.ibm.com>
SEE ALSO
RFC 2616
COPYRIGHT
Copyright (C) 2003, 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.