1.9 KiB
Internationalization
See the internationalization' concepts 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 URLGET /hello/John?locale=en_US
. - Cookie: Set the
locale
field in the cookielocale=en\-US;
. - Header: Set the
Accept-Language
header with the valueen_US
.
::: note Please refer to the language configuration :::
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
.
{
"routes": [
{
"method": "GET",
"path": "/hello/:name",
"handler": "Hello.sayHello"
}
]
}
Path — ./api/hello/controllers/Hello.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
.
{
"Hello %s": "Hello %s"
}
Path — ./config/locales/fr_FR.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