See the [internationalization' concepts](../concepts/concepts.md#internationalization) 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).
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`.
> Please refer to the [language configuration](../configurations/configurations.md#language)
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.
Translating content from a language to another has been requested by many of you. As you may have seen on our website, the [Internationalization plugin](https://strapi.io/marketplace/internationalization) is not available yet because we need to go out of alpha before developing new plugins.
But, no worries, we have a good **work around to help you internationalize your content**!
The solution is simple: **suffix your fields**.
For example if you are building a blog with posts, you may have a Content Type `post` with two fields: `title` and `content`. To make them available in english and french for example, simply replace them by `title_en`, `title_fr`, `content_en` and `content_fr`.
Then, when you request your API, you will get all these fields in your response payload. If you want to select only some of them (in a specific language) we recommend you to use the [GraphQL plugin](graphql.md).