# parseAcceptLanguage

**Kind:** Function

**Source:** [`src/middleware/language/language.ts`](https://github.com/honojs/hono/blob/main/src/middleware/language/language.ts#L74)

**Part of:** [Middleware](subsystem-src-middleware)

Parse Accept-Language header values with quality scores

`parseAcceptLanguage` parses an `Accept-Language` header into language preferences and accounts for quality-score parameters. It is used by language middleware to determine the client’s preferred language order before locale selection.

## Signature

```ts
function parseAcceptLanguage(header: string): Array<{ lang: string; q: number }>
```

## Parameters

| Name | Type |
|---|---|
| `header` | `string` |

**Returns:** `Array<{ lang: string; q: number }>`

## Diagram

```mermaid
graph LR
  Header[Accept-Language header] --> Parse[parseAcceptLanguage]
  Parse --> Entries[Language entries with quality scores]
  Entries --> Ordered[Preferred language order]
  Ordered --> Middleware[Language middleware]
```

## Usage

```ts
import { parseAcceptLanguage } from "./middleware/language/language";

const header = request.headers.get("accept-language") ?? "";
const preferredLanguages = parseAcceptLanguage(header);

// Pass the parsed preferences to locale-selection logic.
const locale = selectSupportedLocale(preferredLanguages);
```

## AI Coding Instructions

- Keep parsing aligned with the `Accept-Language` header format: comma-separated language ranges with optional quality parameters.
- Preserve quality-score ordering when changing parsing logic, since downstream locale selection depends on preference order.
- Handle missing or empty header values before calling the function when integrating with request middleware.
- Keep locale matching separate from header parsing; this function should only interpret client preferences.
