0Pricing
React Academy · บทเรียน

การตั้งค่า react-i18next

ติดตั้งและกำหนดค่า i18next พร้อมการตรวจหาภาษาและการแยกเนมสเปซ

การตั้งค่า react-i18next เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

ในบทเรียนนี้ คุณจะติดตั้งและกำหนดค่า react-i18next พร้อมการตรวจจับภาษาและการแบ่งเนมสเปซ เพื่อเพิ่มการรองรับหลายภาษาให้กับแอป React

ติดตั้งส่วนที่ต้องพึ่งพา

ติดตั้ง i18next และ react-i18next หากต้องการ คุณสามารถเพิ่ม i18next-browser-languagedetector สำหรับตรวจจับภาษาท้องถิ่นโดยอัตโนมัติ และ i18next-http-backend สำหรับโหลดคำแปลผ่าน HTTP ได้
npm install i18next react-i18next
npm install i18next-browser-languagedetector i18next-http-backend

สร้าง i18n.js

สร้างไฟล์ `i18n.js` เพื่อเริ่มต้นระบบ i18next เรียก `i18n.use(...)` เพื่อเพิ่มปลั๊กอิน และเรียก `.init({...})` พร้อมการกำหนดค่าของคุณ
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;

นำเข้า i18n ใน main.jsx

นำเข้าไฟล์เริ่มต้นระบบ i18n BEFORE แสดงผลแอป การทำเช่นนี้ช่วยให้แน่ใจว่า i18n พร้อมใช้งานก่อนที่คอมโพเนนต์ใด ๆ จะเรียก 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>
);

เนมสเปซ

เนมสเปซใช้แบ่งคำแปลออกเป็นกลุ่มตามตรรกะ เช่น 'common', 'auth' และ 'dashboard' แต่ละเนมสเปซเป็นไฟล์ JSON แยกกัน ซึ่งจะโหลดเมื่อจำเป็นเพื่อลดขนาดชุดรวมโค้ดเริ่มต้น
resources: {
  en: {
    common: { save: 'Save', cancel: 'Cancel' },
    auth: { login: 'Log in', logout: 'Log out' },
  }
}

การตรวจจับภาษา

ปลั๊กอิน LanguageDetector จะอ่านภาษาที่ผู้ใช้ต้องการจากเบราว์เซอร์ (navigator.language), localStorage หรือสตริงคำค้นหาใน URL จากนั้นจะตั้งค่าภาษาที่ใช้งานโดยอัตโนมัติเมื่อโหลดครั้งแรก

โหลดคำแปลจากโฟลเดอร์สาธารณะ

จัดเก็บคำแปลเป็นไฟล์ JSON ใน `public/locales/{lang}/{ns}.json` กำหนดค่าปลั๊กอินแบ็กเอนด์ให้โหลดไฟล์เหล่านี้ขณะทำงาน เพื่อให้การเพิ่มภาษาใหม่ไม่ต้องแก้ไขโค้ด
import Backend from 'i18next-http-backend';

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

I18nextProvider (ไม่บังคับ)

I18nextProvider จะห่อหุ้มแอปของคุณเพื่อจัดเตรียมอินสแตนซ์ i18n ผ่านบริบท เมื่อใช้ react-i18next v11 ขึ้นไปและปลั๊กอิน initReactI18next การทำเช่นนี้ไม่จำเป็น เพราะฮุกจะอ่านอินสแตนซ์ i18n ส่วนกลางโดยตรง

ตรวจสอบการเริ่มต้นระบบในคอมโพเนนต์

i18next จะโหลดคำแปลแบบอะซิงก์ ใช้พร็อพเพอร์ตี `ready` จาก useTranslation หรือตรวจสอบ `i18n.isInitialized` ก่อนแสดงผลข้อความ เพื่อหลีกเลี่ยงการแสดงคีย์คำแปล
const { t, ready } = useTranslation();
if (!ready) return null;

DevTools และการจัดการคีย์ที่หายไป

ตั้งค่า `saveMissing: true` ในระหว่างการพัฒนาเพื่อบันทึกคีย์คำแปลที่หายไปลงในคอนโซล วิธีนี้ช่วยให้คุณค้นหาสตริงที่ยังไม่ได้แปลได้อย่างรวดเร็ว
i18n.init({ saveMissing: true,
  missingKeyHandler: (lng, ns, key) => console.warn('Missing:', key) });

ตรวจสอบความเข้าใจ

เหตุใดจึงต้องนำเข้าไฟล์เริ่มต้นระบบ i18n ก่อนแสดงผลแอป React

สรุปทบทวน

ติดตั้ง i18next และ react-i18next สร้าง i18n.js พร้อมปลั๊กอินและการกำหนดค่า init นำเข้าไฟล์ดังกล่าวก่อนแสดงผล และจัดระเบียบคำแปลด้วยเนมสเปซ ใช้ http-backend เพื่อโหลดไฟล์คำแปลขณะทำงาน

บทเรียนถัดไป

บทเรียนถัดไป: **การใช้ฮุก useTranslation** — คุณจะเปลี่ยนสตริงที่เขียนตายตัวให้เป็นการเรียกใช้ t() และจัดระเบียบไฟล์การแปล JSON

คำถามที่พบบ่อย

บทเรียน “การตั้งค่า react-i18next” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตั้งค่า react-i18next” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตั้งค่า react-i18next”

ติดตั้งและกำหนดค่า i18next พร้อมการตรวจหาภาษาและการแยกเนมสเปซ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การตั้งค่า react-i18next” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตั้งค่า react-i18next
  2. การใช้ฮุก useTranslation
  3. การผันรูปพหูพจน์และการแทนค่า
  4. ตัวสลับภาษาและการโหลดคำแปลแบบ Lazy
← กลับไปที่ React Academy