mirror of
https://github.com/strapi/strapi.git
synced 2025-08-01 05:17:14 +00:00
69 lines
1.9 KiB
Markdown
69 lines
1.9 KiB
Markdown
# Internationalization
|
|
|
|
See the [internationalization' concepts](../concepts/concepts.md#internationalization-and-localization) for details.
|
|
|
|
Because an API may need to send different data based on the language of the user, Strapi provides a built-in strategy to handle the internationalization (i18n).
|
|
|
|
## Usage
|
|
|
|
The `i18n` method that will allow you to retrieve the right string based on the language is accessible through the request's context.
|
|
|
|
There are many strategies to define the language that the server should use to return the correct translation. It can be based on the `locale` query parameter, the `cookie` or the `Accept-Language` header.
|
|
|
|
- Query: Add the `locale` parameter in the URL `GET /hello/John?locale=en_US`.
|
|
- Cookie: Set the `locale` field in the cookie `locale=en\-US;`.
|
|
- Header: Set the `Accept-Language` header with the value `en_US`.
|
|
|
|
::: note
|
|
Please refer to the [language configuration](../configurations/configurations.md#language)
|
|
:::
|
|
|
|
#### Example
|
|
|
|
Let's say we want to say `Hello John` in english and `Bonjour Tom` in french. We need to use the built-in `i18n` feature and replace the string based on the received name.
|
|
|
|
**Path —** `./api/hello/config/routes.json`.
|
|
|
|
```json
|
|
{
|
|
"routes": [
|
|
{
|
|
"method": "GET",
|
|
"path": "/hello/:name",
|
|
"handler": "Hello.sayHello"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**Path —** `./api/hello/controllers/Hello.js`.
|
|
|
|
```js
|
|
module.exports = {
|
|
// GET /hello/:name
|
|
sayHello: async ctx => {
|
|
ctx.send(ctx.i18n.__('Hello %s', ctx.params.name));
|
|
},
|
|
};
|
|
```
|
|
|
|
You need to define the english and french translation for this key.
|
|
|
|
**Path —** `./config/locales/en_US.json`.
|
|
|
|
```json
|
|
{
|
|
"Hello %s": "Hello %s"
|
|
}
|
|
```
|
|
|
|
**Path —** `./config/locales/fr_FR.json`.
|
|
|
|
```json
|
|
{
|
|
"Hello %s": "Bonjour %s"
|
|
}
|
|
```
|
|
|
|
That's all! The request `GET /hello/John?locale=en_US` will return `Hello John` and `GET /hello/Tom?locale=fr_FR` will return `Bonjour Tom`
|