Skip to content

Commit 44606f4

Browse files
committed
fix: add docs
1 parent 94c9c4a commit 44606f4

27 files changed

+982
-33
lines changed

.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
pnpm-lock.yaml
2+
docs

README.md

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -333,38 +333,7 @@ The advantage of this way is that it is not necessary to specify the resource sc
333333
334334
`@intlify/h3` has a concept of composable utilities & helpers.
335335
336-
### Utilities
337-
338-
`@intlify/h3` composable utilities accept event (from
339-
`eventHandler((event) => {})`) as their first argument. (Exclude `useTranslation`) return the [`Intl.Locale`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)
340-
341-
### Translations
342-
343-
- `useTranslation(event)`: use translation function, asynchronous
344-
345-
### Headers
346-
347-
- `getHeaderLocale(event, options)`: get locale from `accept-language` header
348-
- `getHeaderLocales(event, options)`: get some locales from `accept-language` header
349-
- `tryHeaderLocale(event, options)`: try to get locale from `accept-language` header
350-
- `tryHeaderLocales(event, options)`: try to get some locales from `accept-language` header
351-
352-
### Cookies
353-
354-
- `getCookieLocale(event, options)`: get locale from cookie
355-
- `tryCookieLocale(event, options)`: try to get locale from cookie
356-
- `setCookieLocale(event, options)`: set locale to cookie
357-
358-
### Misc
359-
360-
- `getPathLocale(event, options)`: get locale from path
361-
- `tryPathLocale(event, options)`: try to get locale from path
362-
- `getQueryLocale(event, options)`: get locale from query
363-
- `tryQueryLocale(event, options)`: try to get locale from query
364-
365-
## Helpers
366-
367-
- `detectLocaleFromAcceptLanguageHeader(event)`: detect locale from `accept-language` header
336+
See the [API References](./docs/index.md)
368337
369338
## 🙌 Contributing guidelines
370339
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
[**@intlify/h3**](../index.md)
2+
3+
***
4+
5+
[@intlify/h3](../index.md) / defineI18nMiddleware
6+
7+
# Function: defineI18nMiddleware()
8+
9+
```ts
10+
function defineI18nMiddleware<Schema, Locales, Message, Options>(options): I18nMiddleware;
11+
```
12+
13+
define i18n middleware for h3
14+
15+
## Type Parameters
16+
17+
| Type Parameter | Default type |
18+
| ------ | ------ |
19+
| `Schema` | `RemoveIndexSignature`\<\{ \[`key`: `string`\]: `LocaleMessageValue`\<`string`\>; `hello`: `string`; `nest`: \{ `foo`: \{ `bar`: `string`; \}; \}; `test`: `string`; \}\> |
20+
| `Locales` | `string` |
21+
| `Message` | `string` |
22+
| `Options` *extends* `CoreOptions`\<`Message`, `SchemaParams`\<`Schema`, `Message`\>, `LocaleParams`\<`Locales`\>, `LocaleParams`\<`Locales`\> *extends* `object` ? `M` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `LocaleParams`\<`Locales`\> *extends* `object` ? `D` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `LocaleParams`\<`Locales`\> *extends* `object` ? `N` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `M` : `LocaleMessage`\<`string`\>, `SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `D` : `DateTimeFormat`, `SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `N` : `NumberFormat`, `LocaleMessages`\<`SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `M` : `LocaleMessage`\<`string`\>, `LocaleParams`\<`Locales`\> *extends* `object` ? `M` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `Message`\>, `DateTimeFormats`\<`SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `D` : `DateTimeFormat`, `LocaleParams`\<`Locales`\> *extends* `object` ? `D` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`\>, `NumberFormats`\<`SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `N` : `NumberFormat`, `LocaleParams`\<`Locales`\> *extends* `object` ? `N` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`\>\> | `CoreOptions`\<`Message`, `SchemaParams`\<`Schema`, `Message`\>, `LocaleParams`\<`Locales`\>, `LocaleParams`\<`Locales`\> *extends* `object` ? `M` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `LocaleParams`\<`Locales`\> *extends* `object` ? `D` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `LocaleParams`\<`Locales`\> *extends* `object` ? `N` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `M` : `LocaleMessage`\<`string`\>, `SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `D` : `DateTimeFormat`, `SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `N` : `NumberFormat`, `LocaleMessages`\<`SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `M` : `LocaleMessage`\<`string`\>, `LocaleParams`\<`Locales`\> *extends* `object` ? `M` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`, `Message`\>, `DateTimeFormats`\<`SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `D` : `DateTimeFormat`, `LocaleParams`\<`Locales`\> *extends* `object` ? `D` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`\>, `NumberFormats`\<`SchemaParams`\<`Schema`, `Message`\> *extends* `object` ? `N` : `NumberFormat`, `LocaleParams`\<`Locales`\> *extends* `object` ? `N` : `LocaleParams`\<`Locales`\> *extends* `string` ? `string` & `LocaleParams`\<`Locales`\> : `string`\>\> |
23+
24+
## Parameters
25+
26+
| Parameter | Type | Description |
27+
| ------ | ------ | ------ |
28+
| `options` | `Options` | An i18n options like vue-i18n [`createI18n`]([https://vue-i18n.intlify.dev/guide/#javascript](https://vue-i18n.intlify.dev/guide/#javascript)), which are passed to `createCoreContext` of `@intlify/core`, see about details [`CoreOptions` of `@intlify/core`](https://github.com/intlify/vue-i18n-next/blob/6a9947dd3e0fe90de7be9c87ea876b8779998de5/packages/core-base/src/context.ts#L196-L216) |
29+
30+
## Returns
31+
32+
[`I18nMiddleware`](../interfaces/I18nMiddleware.md)
33+
34+
A defined i18n middleware, which is included `onRequest` and `onAfterResponse` options of `createApp`
35+
36+
## Example
37+
38+
```js
39+
import { defineI18nMiddleware } from '@intlify/h3'
40+
41+
const middleware = defineI18nMiddleware({
42+
messages: {
43+
en: {
44+
hello: 'Hello {name}!',
45+
},
46+
ja: {
47+
hello: 'こんにちは、{name}!',
48+
},
49+
},
50+
// your locale detection logic here
51+
locale: (event) => {
52+
// ...
53+
},
54+
})
55+
56+
const app = createApp({ ...middleware })
57+
```
58+
59+
## Description
60+
61+
Define the middleware to be specified for h3 [`createApp`]([https://www.jsdocs.io/package/h3#createApp](https://www.jsdocs.io/package/h3#createApp))
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[**@intlify/h3**](../index.md)
2+
3+
***
4+
5+
[@intlify/h3](../index.md) / detectLocaleFromAcceptLanguageHeader
6+
7+
# Function: detectLocaleFromAcceptLanguageHeader()
8+
9+
```ts
10+
function detectLocaleFromAcceptLanguageHeader(event): string;
11+
```
12+
13+
locale detection with `Accept-Language` header
14+
15+
## Parameters
16+
17+
| Parameter | Type | Description |
18+
| ------ | ------ | ------ |
19+
| `event` | `H3Event` | A h3 event |
20+
21+
## Returns
22+
23+
`string`
24+
25+
A locale string, which will be detected of **first** from `Accept-Language` header
26+
27+
## Example
28+
29+
```js
30+
import { createApp } from 'h3'
31+
import { defineI18nMiddleware, detectLocaleWithAcceeptLanguageHeader } from '@intlify/h3'
32+
33+
const middleware = defineI18nMiddleware({
34+
messages: {
35+
en: {
36+
hello: 'Hello {name}!',
37+
},
38+
ja: {
39+
hello: 'こんにちは、{name}!',
40+
},
41+
},
42+
locale: detectLocaleWithAcceeptLanguageHeader
43+
})
44+
45+
const app = createApp({ ...middleware })
46+
```

docs/functions/getCookieLocale.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
[**@intlify/h3**](../index.md)
2+
3+
***
4+
5+
[@intlify/h3](../index.md) / getCookieLocale
6+
7+
# Function: getCookieLocale()
8+
9+
```ts
10+
function getCookieLocale(event, __namedParameters?): Locale;
11+
```
12+
13+
get locale from cookie
14+
15+
## Parameters
16+
17+
| Parameter | Type | Description |
18+
| ------ | ------ | ------ |
19+
| `event` | `H3Event` | The H3Event \| H3 event |
20+
| `__namedParameters?` | \{ `lang?`: `string`; `name?`: `string`; \} | - |
21+
| `__namedParameters.lang?` | `string` | - |
22+
| `__namedParameters.name?` | `string` | - |
23+
24+
## Returns
25+
26+
`Locale`
27+
28+
The locale that resolved from cookie
29+
30+
## Example
31+
32+
example for h3:
33+
34+
```ts
35+
import { createApp, eventHandler } from 'h3'
36+
import { getCookieLocale } from '@intlify/utils/h3'
37+
38+
app.use(eventHandler(event) => {
39+
const locale = getCookieLocale(event)
40+
console.log(locale) // output `Intl.Locale` instance
41+
// ...
42+
})
43+
```
44+
45+
## Throws
46+
47+
Throws a RangeError if `lang` option or cookie name value are not a well-formed BCP 47 language tag.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[**@intlify/h3**](../index.md)
2+
3+
***
4+
5+
[@intlify/h3](../index.md) / getHeaderLanguage
6+
7+
# Function: getHeaderLanguage()
8+
9+
```ts
10+
function getHeaderLanguage(event, __namedParameters?): string;
11+
```
12+
13+
get language from header
14+
15+
## Parameters
16+
17+
| Parameter | Type | Description |
18+
| ------ | ------ | ------ |
19+
| `event` | `H3Event` | The H3Event \| H3 event |
20+
| `__namedParameters?` | `HeaderOptions` | - |
21+
22+
## Returns
23+
24+
`string`
25+
26+
The **first language tag** of header, if header is not exists, or `*` (any language), return empty string.
27+
28+
## Description
29+
30+
parse header string, default `accept-language`. if you use `accept-language`, this function retuns the **first language tag** of `accept-language` header.
31+
32+
## Example
33+
34+
example for h3:
35+
36+
```ts
37+
import { createApp, eventHandler } from 'h3'
38+
import { getAcceptLanguage } from '@intlify/utils/h3'
39+
40+
const app = createApp()
41+
app.use(eventHandler(event) => {
42+
const langTag = getHeaderLanguage(event)
43+
// ...
44+
return `accepted language: ${langTag}`
45+
})
46+
```
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[**@intlify/h3**](../index.md)
2+
3+
***
4+
5+
[@intlify/h3](../index.md) / getHeaderLanguages
6+
7+
# Function: getHeaderLanguages()
8+
9+
```ts
10+
function getHeaderLanguages(event, __namedParameters?): string[];
11+
```
12+
13+
get languages from header
14+
15+
## Parameters
16+
17+
| Parameter | Type | Description |
18+
| ------ | ------ | ------ |
19+
| `event` | `H3Event` | The H3Event \| H3 event |
20+
| `__namedParameters?` | `HeaderOptions` | - |
21+
22+
## Returns
23+
24+
`string`[]
25+
26+
The array of language tags, if you use `accept-language` header and `*` (any language) or empty string is detected, return an empty array.
27+
28+
## Description
29+
30+
parse header string, default `accept-language` header
31+
32+
## Example
33+
34+
example for h3:
35+
36+
```ts
37+
import { createApp, eventHandler } from 'h3'
38+
import { getHeaderLanguages } from '@intlify/utils/h3'
39+
40+
const app = createApp()
41+
app.use(eventHandler(event) => {
42+
const langTags = getHeaderLanguages(event)
43+
// ...
44+
return `accepted languages: ${acceptLanguages.join(', ')}`
45+
})
46+
```

docs/functions/getHeaderLocale.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
[**@intlify/h3**](../index.md)
2+
3+
***
4+
5+
[@intlify/h3](../index.md) / getHeaderLocale
6+
7+
# Function: getHeaderLocale()
8+
9+
```ts
10+
function getHeaderLocale(event, __namedParameters?): Locale;
11+
```
12+
13+
get locale from header
14+
15+
## Parameters
16+
17+
| Parameter | Type | Description |
18+
| ------ | ------ | ------ |
19+
| `event` | `H3Event` | The H3Event \| H3 event |
20+
| `__namedParameters?` | `HeaderOptions` & `object` | - |
21+
22+
## Returns
23+
24+
`Locale`
25+
26+
The first locale that resolved from header string. if you use `accept-language` header and `*` (any language) or empty string is detected, return `en-US`.
27+
28+
## Description
29+
30+
wrap language tag with Intl.Locale \| locale, languages tags will be parsed from `accept-language` header as default.
31+
32+
## Example
33+
34+
example for h3:
35+
36+
```ts
37+
import { createApp, eventHandler } from 'h3'
38+
import { getHeaderLocale } from '@intlify/utils/h3'
39+
40+
app.use(eventHandler(event) => {
41+
const locale = getHeaderLocale(event)
42+
// ...
43+
return `accepted locale: ${locale.toString()}`
44+
})
45+
```
46+
47+
## Throws
48+
49+
Throws the RangeError if `lang` option or header are not a well-formed BCP 47 language tag.

docs/functions/getHeaderLocales.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
[**@intlify/h3**](../index.md)
2+
3+
***
4+
5+
[@intlify/h3](../index.md) / getHeaderLocales
6+
7+
# Function: getHeaderLocales()
8+
9+
```ts
10+
function getHeaderLocales(event, __namedParameters?): Locale[];
11+
```
12+
13+
get locales from header
14+
15+
## Parameters
16+
17+
| Parameter | Type | Description |
18+
| ------ | ------ | ------ |
19+
| `event` | `H3Event` | The H3Event \| H3 event |
20+
| `__namedParameters?` | `HeaderOptions` | - |
21+
22+
## Returns
23+
24+
`Locale`[]
25+
26+
The locales that wrapped from header, if you use `accept-language` header and `*` (any language) or empty string is detected, return an empty array.
27+
28+
## Description
29+
30+
wrap language tags with Intl.Locale \| locale, languages tags will be parsed from `accept-language` header as default.
31+
32+
## Example
33+
34+
example for h3:
35+
36+
```ts
37+
import { createApp, eventHandler } from 'h3'
38+
import { getHeaderLocales } from '@intlify/utils/h3'
39+
40+
app.use(eventHandler(event) => {
41+
const locales = getHeaderLocales(event)
42+
// ...
43+
return `accepted locales: ${locales.map(locale => locale.toString()).join(', ')}`
44+
})
45+
```
46+
47+
## Throws
48+
49+
Throws the RangeError if header are not a well-formed BCP 47 language tag.

0 commit comments

Comments
 (0)