Home / Function/ computePreferredLocaleList() — astro Function Reference

computePreferredLocaleList() — astro Function Reference

Architecture documentation for the computePreferredLocaleList() function in utils.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  86433feb_fb59_c31d_d344_6ab7e82d0967["computePreferredLocaleList()"]
  7b0bb4ed_570d_ff47_83a8_9e0495974e66["utils.ts"]
  86433feb_fb59_c31d_d344_6ab7e82d0967 -->|defined in| 7b0bb4ed_570d_ff47_83a8_9e0495974e66
  b7a4b27b_a1e0_4ff4_db13_350baa64114e["sortAndFilterLocales()"]
  86433feb_fb59_c31d_d344_6ab7e82d0967 -->|calls| b7a4b27b_a1e0_4ff4_db13_350baa64114e
  1a809798_395b_d867_2e96_5b1a1a9e175e["parseLocale()"]
  86433feb_fb59_c31d_d344_6ab7e82d0967 -->|calls| 1a809798_395b_d867_2e96_5b1a1a9e175e
  style 86433feb_fb59_c31d_d344_6ab7e82d0967 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/astro/src/i18n/utils.ts lines 115–144

export function computePreferredLocaleList(request: Request, locales: Locales): string[] {
	const acceptHeader = request.headers.get('Accept-Language');
	let result: string[] = [];
	if (acceptHeader) {
		const browserLocaleList = sortAndFilterLocales(parseLocale(acceptHeader), locales);

		// SAFETY: bang operator is safe because checked by the previous condition
		if (browserLocaleList.length === 1 && browserLocaleList.at(0)!.locale === '*') {
			return getAllCodes(locales);
		} else if (browserLocaleList.length > 0) {
			for (const browserLocale of browserLocaleList) {
				for (const loopLocale of locales) {
					if (typeof loopLocale === 'string') {
						if (normalizeTheLocale(loopLocale) === normalizeTheLocale(browserLocale.locale)) {
							result.push(loopLocale);
						}
					} else {
						for (const code of loopLocale.codes) {
							if (code === browserLocale.locale) {
								result.push(code);
							}
						}
					}
				}
			}
		}
	}

	return result;
}

Domain

Subdomains

Frequently Asked Questions

What does computePreferredLocaleList() do?
computePreferredLocaleList() is a function in the astro codebase, defined in packages/astro/src/i18n/utils.ts.
Where is computePreferredLocaleList() defined?
computePreferredLocaleList() is defined in packages/astro/src/i18n/utils.ts at line 115.
What does computePreferredLocaleList() call?
computePreferredLocaleList() calls 2 function(s): parseLocale, sortAndFilterLocales.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free