Introduction

This article was generated by GPT-4o. It explains how to build a multilingual static site using Next.js. In particular, it focuses on a configuration where the main language has no URL prefix while other languages have prefixes. It also includes configuration for deploying to GitHub Pages.

Project Setup

First, create a Next.js project. Initialize the project using create-next-app.

npxcreate-next-app@latestnext-intl-ssg

Installing Required Packages

Install next-intl for multilingual support.

npminstallnext-intl

Project Structure

The project directory structure is as follows.

  • src/app/[locale]/about/page.tsx
  • src/app/about/page.tsx
  • src/lib/i18n.ts
  • src/components/I18nProvider.tsx
  • src/i18n/ja.json
  • src/i18n/en.json

Implementing Multilingual Support

Using next-intl, messages are managed for each language. A function to retrieve messages is defined in src/lib/i18n.ts.

e}xproertturansy(nacwafiutncitmipoonrtg(e`t@M/eis1s8ang/e$s{(llooccaallee}:.jsstorni`n)g)).d{efault;

The I18nProvider component provides messages for each page.

iie}}}mmx:)pppclmclmr)ooohoe{hoe{e;rrricsicst<tttlaslasuN/dladlare{N{{dregregnxceee,ee:ethxRNfnsns(Iiteea,:s:nlIaxuttdnctlRrRlrttIteieCelNnanclnCotfcgoi}ldlut;reieCnNdnelco<tn}itdsPteietrPfno;rorrtnivooPnivmrIgdio1,ed'v8rerinRredPel>aercocrooctvra'}idl;d<efes=rrt{o(rlm{ionc'gan,leexs}tt-rmiiennstgsl>a'>g;;es={messages}>

SSG Configuration

The generateStaticParams function is used to set parameters for static page generation. The main language (Japanese) has no prefix, while other languages have prefixes.

e}xpr}soe)rrtl)ctuo;/rcafnapulpnle/co[tcliaoolcneaslg.eef]ni/elartbaeotrue(tSl/topacatagilece.Pta=sr>xamlso(c)al{e!=='ja').map(locale=>({

Deploying to GitHub Pages

Deploy to GitHub Pages using GitHub Actions. Configure the deployment in .github/workflows/deploy.yml.

nopcjaneoom:pwrcpingcbbdeuomoadcrasue:sbring-uon:irspernshrkstetruclutlnuetD:afsesorpedne-----ovnee-enlin:ke:l:spyisdppcooten--snunuwnrnrnuw:r-ssniulhwnswnc"io:asasiauauasioo::adsoe_s:r:ypnnmemetncmnmnmetpnnm:eysd:i:a-:eseshoae:e:esham:bes:irtwgp:::::dc:::::teu:d:tseereruehnnhnuieo[paisobCaSa-eIpBpUa:tblDpamadt"guhcecv:nmumpc:udelcGaternetttesiltnpotiicetciuir"tclroigtlyitnhsukoposnaiduaooiuomoH]:s-onniplndnut-yenu:lusNsomlsthlnsbat/o/n"ba/uatt/ftcds:durubtodPaeheeeitp-eealset"plilpsGpgstcu2edfoatileekp0naagtoso-"dcdeHyunet-su-tonpbp@dcaaveigPg4@eeaevssgs4-e@asvr4tifact@v3

Summary

This blog post introduced how to build a multilingual static site using Next.js, where the main language has no prefix and other languages have prefixes. By leveraging next-intl, multilingual support is easily achievable. Please give it a try.