gatsby-plugin-intl
Internationalize your Gatsby site.
Features
-
Turn your gatsby site into an internationalization-framework out of the box powered by react-intl.
-
Support automatic redirection based on the user's preferred language in browser provided by browser-lang.
-
Support multi-language url routes in a single page component. This means you don't have to create separate pages such as pages/en/index.js
or pages/ko/index.js
.
Why?
When you build multilingual sites, Google recommends using different URLs for each language version of a page rather than using cookies or browser settings to adjust the content language on the page. (read more)
Starters
Demo: http://gatsby-starter-default-intl.netlify.com
Source: https://github.com/wiziple/gatsby-plugin-intl/tree/master/examples/gatsby-starter-default-intl
Showcase
https://picpick.app
How to use
Install package
npm install --save gatsby-plugin-intl
Add a plugin to your gatsby-config.js
plugins: [
{
resolve: `gatsby-plugin-intl`,
options: {
path: `${__dirname}/src/intl`,
languages: [`en`, `ko`, `de`],
defaultLanguage: `ko`,
redirect: true,
},
},
]
You'll also need to add language JSON resources to the project.
For example,
Change your page component
import React from "react"
import { withIntl, Link, FormattedMessage } from "gatsby-plugin-intl"
const IndexPage = ({ intl }) => {
return (
<Layout>
<SEO
title={intl.formatMessage({ id: "title" })}
/>
<Link to="/page-2/">
{intl.formatMessage({ id: "go_page2" })}
{/* OR <FormattedMessage id="go_page2" /> */}
</Link>
</Layout>
)
}
export default withIntl(IndexPage)
How It Works
Let's say you have two pages (index.js
and page-2.js
) in your pages
directory. The plugin will create static pages for every language.
src/pages/index.js | /en | /ko | /de | / |
src/pages/page-2.js | /en/page-2 | /ko/page-2 | /de/page-2 | /page-2 |
*Default Pages and Redirection
If redirect option is true
, /
or /page-2
will be redirected to the user's preferred language router. e.g) /ko
or /ko/page-2
. Otherwise, the pages will render defaultLangugage
language. You can also specify additional component to be rendered on redirection page by adding redirectComponent
option.
Plugin Options
path | string | language JSON resource path |
languages | string[] | supported language keys |
defaultLanguage | string | default language when visiting /page instead of ko/page |
redirect | boolean | if the value is true , / or /page-2 will be redirected to the user's preferred language router. e.g) /ko or /ko/page-2 . Otherwise, the pages will render defaultLangugage language. |
redirectComponent | string (Optional) | additional component file path to be rendered on with a redirection component for SEO. |
Components
To make it easy to handle i18n with multi-language url routes, the plugin provides several components.
To use it, simply import it from gatsby-plugin-intl
.
License
MIT © Daewoong Moon