0Pricing
React Academy · Pelajaran

Menyiapkan react-i18next

Pasang dan konfigurasikan i18next dengan deteksi bahasa dan pemisahan namespace.

Menyiapkan react-i18next adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Selamat Datang

Dalam pelajaran ini, Anda akan memasang dan mengonfigurasi react-i18next dengan deteksi bahasa dan pemisahan ruang nama untuk menambahkan dukungan multibahasa ke aplikasi React.

Memasang Dependensi

Pasang i18next dan react-i18next. Anda juga dapat menambahkan i18next-browser-languagedetector untuk deteksi lokal otomatis dan i18next-http-backend untuk memuat terjemahan melalui HTTP.
npm install i18next react-i18next
npm install i18next-browser-languagedetector i18next-http-backend

Membuat i18n.js

Buat file `i18n.js` yang menginisialisasi i18next. Panggil `i18n.use(...)` untuk menambahkan plugin dan `.init({...})` dengan konfigurasi Anda.
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';

i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    resources: { en: { translation: {} }, tr: { translation: {} } },
    interpolation: { escapeValue: false },
  });

export default i18n;

Mengimpor i18n di main.jsx

Impor file inisialisasi i18n SEBELUM merender aplikasi. Hal ini memastikan i18n siap sebelum komponen mana pun memanggil useTranslation.
import './i18n'; // must be before App
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';

createRoot(document.getElementById('root')).render(
  <StrictMode><App /></StrictMode>
);

Ruang Nama

Ruang nama membagi terjemahan ke dalam kelompok logis (misalnya “common”, “auth”, “dashboard”). Setiap ruang nama merupakan file JSON terpisah yang dimuat sesuai kebutuhan untuk mengurangi ukuran bundel awal.
resources: {
  en: {
    common: { save: 'Save', cancel: 'Cancel' },
    auth: { login: 'Log in', logout: 'Log out' },
  }
}

Deteksi Bahasa

Plugin LanguageDetector membaca bahasa pilihan pengguna dari peramban (navigator.language), localStorage, atau string kueri URL. Plugin ini secara otomatis menetapkan bahasa aktif saat pemuatan pertama.

Memuat Terjemahan dari Folder Publik

Simpan terjemahan sebagai file JSON di `public/locales/{lang}/{ns}.json`. Konfigurasikan plugin pemuat untuk memuatnya saat waktu eksekusi, sehingga penambahan bahasa baru tidak memerlukan perubahan kode.
import Backend from 'i18next-http-backend';

i18n.use(Backend).init({
  backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json',
  },
});

I18nextProvider (Opsional)

I18nextProvider membungkus aplikasi Anda untuk menyediakan instans i18n melalui konteks. Dengan react-i18next v11+ dan plugin initReactI18next, langkah ini bersifat opsional—hook membaca instans i18n global secara langsung.

Memeriksa Inisialisasi dalam Komponen

i18next memuat terjemahan secara asinkron. Gunakan properti `ready` dari useTranslation atau periksa `i18n.isInitialized` sebelum merender teks agar kunci terjemahan tidak ditampilkan.
const { t, ready } = useTranslation();
if (!ready) return null;

DevTools dan Penanganan Kunci yang Hilang

Atur `saveMissing: true` dalam pengembangan untuk mencatat kunci terjemahan yang hilang ke konsol. Hal ini membantu Anda menemukan string yang belum diterjemahkan dengan cepat.
i18n.init({ saveMissing: true,
  missingKeyHandler: (lng, ns, key) => console.warn('Missing:', key) });

Pemeriksaan Singkat

Mengapa Anda harus mengimpor file inisialisasi i18n sebelum merender aplikasi React?

Ringkasan

Pasang i18next + react-i18next, buat i18n.js dengan plugin dan konfigurasi init, impor file tersebut sebelum merender, lalu susun terjemahan dalam ruang nama. Gunakan http-backend untuk memuat file terjemahan saat waktu eksekusi.

Selanjutnya

Pelajaran berikutnya: **Menggunakan useTranslation** — Anda akan mengganti teks yang ditulis langsung di kode dengan pemanggilan t() dan menata berkas terjemahan JSON.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menyiapkan react-i18next” gratis?

Ya — teks lengkap “Menyiapkan react-i18next” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menyiapkan react-i18next”?

Pasang dan konfigurasikan i18next dengan deteksi bahasa dan pemisahan namespace. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Menyiapkan react-i18next” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menyiapkan react-i18next
  2. Menggunakan Hook useTranslation
  3. Bentuk Jamak & Interpolasi
  4. Pengalih Bahasa & Pemuatan Terjemahan Malas
← Kembali ke React Academy