2 YUI 3.13.0 (build 508226d)
3 Copyright 2013 Yahoo! Inc. All rights reserved.
4 Licensed under the BSD License.
5 http://yuilibrary.com/license/
8 YUI.add('intl-base', function (Y, NAME) {
11 * The Intl utility provides a central location for managing sets of
12 * localized resources (strings and formatting patterns).
19 var SPLIT_REGEX = /[, ]/;
21 Y.mix(Y.namespace('Intl'), {
24 * Returns the language among those available that
25 * best matches the preferred language list, using the Lookup
26 * algorithm of BCP 47.
27 * If none of the available languages meets the user's preferences,
28 * then "" is returned.
29 * Extended language ranges are not supported.
31 * @method lookupBestLang
32 * @param {String[] | String} preferredLanguages The list of preferred
33 * languages in descending preference order, represented as BCP 47
34 * language tags. A string array or a comma-separated list.
35 * @param {String[]} availableLanguages The list of languages
36 * that the application supports, represented as BCP 47 language
39 * @return {String} The available language that best matches the
40 * preferred language list, or "".
43 lookupBestLang: function(preferredLanguages, availableLanguages) {
45 var i, language, result, index;
47 // check whether the list of available languages contains language;
49 function scan(language) {
51 for (i = 0; i < availableLanguages.length; i += 1) {
52 if (language.toLowerCase() ===
53 availableLanguages[i].toLowerCase()) {
54 return availableLanguages[i];
59 if (Y.Lang.isString(preferredLanguages)) {
60 preferredLanguages = preferredLanguages.split(SPLIT_REGEX);
63 for (i = 0; i < preferredLanguages.length; i += 1) {
64 language = preferredLanguages[i];
65 if (!language || language === '*') {
68 // check the fallback sequence for one language
69 while (language.length > 0) {
70 result = scan(language);
74 index = language.lastIndexOf('-');
76 language = language.substring(0, index);
77 // one-character subtags get cut along with the
79 if (index >= 2 && language.charAt(index - 2) === '-') {
80 language = language.substring(0, index - 2);
83 // nothing available for this language
95 }, '3.13.0', {"requires": ["yui-base"]});