* @param {string} browserLang Language tags from RFC5646 (`[lang]-[script]-[region]-[variant]`, all parts are optional) * @param {string} locale ` `, ` - `
(browserLang, metaLocale)
| 13 | * @param {string} locale `<lang>`, `<lang>-<region>` |
| 14 | */ |
| 15 | function localeMatch(browserLang, metaLocale) { |
| 16 | const bParts = browserLang.toLowerCase().split('-'); |
| 17 | const mParts = metaLocale.toLowerCase().split('-'); |
| 18 | let bi = 0; |
| 19 | let mi = 0; |
| 20 | while (bi < bParts.length && mi < mParts.length) { |
| 21 | if (bParts[bi] === mParts[mi]) mi += 1; |
| 22 | bi += 1; |
| 23 | } |
| 24 | return mi === mParts.length; |
| 25 | } |
| 26 | |
| 27 | /** |
| 28 | * Get locale attributes such as `@name:zh-CN` |