Skip to content

Commit cbe89a7

Browse files
author
InfinitiesLoop
committed
Added support for language quality settings in culture string
1 parent 08eb8f4 commit cbe89a7

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

jquery.glob.js

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,53 @@ $.extend({
1717
match = name;
1818
}
1919
else {
20-
var cultures = $.cultures,
21-
list = $.isArray( name ) ? name : [ name ],
22-
i, l = list.length;
20+
var lang,
21+
cultures = $.cultures,
22+
list = $.isArray( name ) ? name : name.split( ',' ),
23+
i, l = list.length,
24+
prioritized = [];
2325
for ( i = 0; i < l; i++ ) {
24-
name = list[ i ];
25-
match = cultures[ name ];
26+
name = trim( list[ i ] );
27+
var pri, parts = name.split( ';' );
28+
lang = trim( parts[ 0 ] );
29+
if ( parts.length === 1 ) {
30+
pri = 1;
31+
}
32+
else {
33+
name = trim( parts[ 1 ] );
34+
if ( name.indexOf("q=") === 0 ) {
35+
name = name.substr( 2 );
36+
pri = parseFloat( name, 10 );
37+
pri = isNaN( pri ) ? 0 : pri;
38+
}
39+
else {
40+
pri = 1;
41+
}
42+
}
43+
prioritized.push( { lang: lang, pri: pri } );
44+
}
45+
prioritized.sort(function(a, b) {
46+
return a.pri < b.pri ? 1 : -1;
47+
});
48+
for ( i = 0; i < l; i++ ) {
49+
lang = prioritized[ i ].lang;
50+
match = cultures[ lang ];
51+
// exact match?
2652
if ( match ) {
2753
return match;
2854
}
2955
}
3056
for ( i = 0; i < l; i++ ) {
31-
name = list[ i ];
57+
lang = prioritized[ i ].lang;
58+
// for each entry try its neutral language
3259
do {
33-
var index = name.lastIndexOf( "-" );
60+
var index = lang.lastIndexOf( "-" );
3461
if ( index === -1 ) {
3562
break;
3663
}
3764
// strip off the last part. e.g. en-US => en
38-
name = name.substr( 0, index );
39-
match = cultures[ name ];
65+
lang = lang.substr( 0, index );
66+
match = cultures[ lang ];
4067
if ( match ) {
4168
return match;
4269
}

0 commit comments

Comments
 (0)