Home / Function/ parseLocale() — astro Function Reference

parseLocale() — astro Function Reference

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

Entity Profile

Dependency Diagram

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

Relationship Graph

Source Code

packages/astro/src/i18n/utils.ts lines 17–61

export function parseLocale(header: string): BrowserLocale[] {
	// Any language, early return
	if (header === '*') {
		return [{ locale: header, qualityValue: undefined }];
	}
	const result: BrowserLocale[] = [];
	// we split by `,` and trim the white spaces
	const localeValues = header.split(',').map((str) => str.trim());

	for (const localeValue of localeValues) {
		// split the locale name from the quality value
		const split = localeValue.split(';').map((str) => str.trim());
		const localeName: string = split[0];
		const qualityValue: string | undefined = split[1];

		if (!split) {
			// invalid value
			continue;
		}

		// we check if the quality value is present, and it is actually `q=`
		if (qualityValue && qualityValue.startsWith('q=')) {
			const qualityValueAsFloat = Number.parseFloat(qualityValue.slice('q='.length));
			// The previous operation can return a `NaN`, so we check if it is a safe operation
			if (Number.isNaN(qualityValueAsFloat) || qualityValueAsFloat > 1) {
				result.push({
					locale: localeName,
					qualityValue: undefined,
				});
			} else {
				result.push({
					locale: localeName,
					qualityValue: qualityValueAsFloat,
				});
			}
		} else {
			result.push({
				locale: localeName,
				qualityValue: undefined,
			});
		}
	}

	return result;
}

Domain

Subdomains

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free