Language Switcher & Lazy-Loading Translations
Build a locale toggle and load translation bundles on demand to reduce initial size.
Language Switcher & Lazy-Loading Translations is a free React Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the React Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Welcome
Simple Language Switcher
function LanguageSwitcher() {
const { i18n } = useTranslation();
return (
<div>
{['en', 'tr', 'fr'].map(lng => (
<button
key={lng}
onClick={() => i18n.changeLanguage(lng)}
style={{ fontWeight: i18n.language === lng ? 'bold' : 'normal' }}
>
{lng.toUpperCase()}
</button>
))}
</div>
);
}Persisting Language Selection
i18n.init({
detection: {
order: ['localStorage', 'navigator'],
caches: ['localStorage'],
},
});Why Lazy-Load Translations?
Configuring the HTTP Backend
import Backend from 'i18next-http-backend';
i18n.use(Backend).init({
backend: {
loadPath: '/locales/{{lng}}/{{ns}}.json',
},
ns: ['common', 'auth'],
defaultNS: 'common',
});Adding Translation Files
public/locales/
en/common.json
en/auth.json
tr/common.json
tr/auth.jsonShowing a Loading State During Language Switch
const [switching, setSwitching] = useState(false);
const change = async (lng) => {
setSwitching(true);
await i18n.changeLanguage(lng);
setSwitching(false);
};Lazy-Loading Specific Namespaces
useEffect(() => {
i18n.loadNamespaces('dashboard');
}, []);CDN for Translations
backend: {
loadPath: 'https://cdn.example.com/locales/{{lng}}/{{ns}}.json',
}Locale in the URL
Quick Check
Recap
Course Complete
Frequently asked questions
Is the “Language Switcher & Lazy-Loading Translations” lesson free?
Yes — the full text of “Language Switcher & Lazy-Loading Translations” is free to read here on the web, and the React Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the React Academy course, upgrade to CoddyKit PRO.
What will I learn in “Language Switcher & Lazy-Loading Translations”?
Build a locale toggle and load translation bundles on demand to reduce initial size. You practise React Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start React Academy?
No prior experience is required. React Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Language Switcher & Lazy-Loading Translations” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this React Academy lesson?
Yes. Every React Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Setting Up react-i18next
- Using the useTranslation Hook
- Pluralisation & Interpolation
- Language Switcher & Lazy-Loading Translations