Skip to main content

Gasket Intl Quick Start Guide

Get up and running with internationalization in your Gasket app in minutes. These packages can be used for a variety of apps, including APIs, however this document will focus on use with React components in a Next.js App.

Prerequisites​

  • A Gasket app created with create-gasket-app
  • Node.js 20 or higher

Step 1: Install Packages​

npm install @gasket/plugin-intl @gasket/intl @gasket/react-intl

Step 2: Configure Gasket​

Add the intl plugin to your gasket.js:

// gasket.js
import { makeGasket } from '@gasket/core';
import pluginIntl from '@gasket/plugin-intl';

export default makeGasket({
plugins: [
pluginIntl
// ... your other plugins
],
intl: {
locales: ['en-US', 'es-ES', 'fr-FR'],
defaultLocale: 'en-US'
}
});

Step 3: Create Locale Files​

Create your locale files in the locales/ directory:

locales/
├── en-US.json
├── es-ES.json
└── fr-FR.json

locales/en-US.json:

{
"welcome": "Welcome to our app!",
"hello": "Hello, {name}!",
"navigation": {
"home": "Home",
"about": "About"
}
}

locales/es-ES.json:

{
"welcome": "¡Bienvenido a nuestra aplicación!",
"hello": "¡Hola, {name}!",
"navigation": {
"home": "Inicio",
"about": "Acerca de"
}
}

Step 4: Set Up Your App Component​

pages/_app.js (Next.js):

import { useRouter } from 'next/router';
import { IntlProvider } from 'react-intl';
import { withMessagesProvider } from '@gasket/react-intl';
import intlManager from '../intl.js'; // Generated by the plugin

const IntlMessagesProvider = withMessagesProvider(intlManager)(IntlProvider);

export default function App({ Component, pageProps }) {
const router = useRouter();

return (
<IntlMessagesProvider locale={router.locale}>
<Component {...pageProps} />
</IntlMessagesProvider>
);
}

Step 5: Use Translations in Components​

// pages/index.js
import { FormattedMessage } from 'react-intl';

export default function Home() {
return (
<div>
<h1>
<FormattedMessage id="welcome" />
</h1>
<p>
<FormattedMessage
id="hello"
values={{ name: 'World' }}
/>
</p>
</div>
);
}

Step 6: Build and Run​

npm run build
npm run start

Your app is now internationalized! Users will see content in their browser's preferred language (if supported), or the default locale.

Next Steps​

Common Issues​

Build fails with "intl.js not found"​

Run npm run build first. The intl.js file is generated during the build process.

Translations not loading​

Ensure your locale files are in locales/ and match the exact locale codes in your configuration.

Learn More​