Internationalization (i18n) in Next.js

In Dark Mode Done Properly I covered how a seemingly small feature, theme switching, touches server rendering, hydration, and user preference storage in ways that are easy to underestimate.