Nhảy đến nội dung

Giới thiệu

🎯 Mô-đun này làm gì?

Mô-đun Locales cho phép bạn quản lý hỗ trợ đa ngôn ngữ trong dự án OneEntry của bạn - lấy danh sách ngôn ngữ có sẵn, phát hiện ngôn ngữ của người dùng và xây dựng các ứng dụng quốc tế hóa phục vụ nội dung bằng nhiều ngôn ngữ khác nhau.

Hãy nghĩ về nó như là trình quản lý ngôn ngữ của bạn - thay vì mã hóa cứng ngôn ngữ trong ứng dụng của bạn, bạn lấy danh sách các ngôn ngữ đang hoạt động từ OneEntry một cách động, cho phép nội dung của bạn tự động thích ứng với các ngôn ngữ khác nhau (Tiếng Anh, Tiếng Nga, Tiếng Ả Rập, Tiếng Tây Ban Nha, v.v.).


📖 Giải thích đơn giản

Trong các ứng dụng hiện đại, bạn thường cần hỗ trợ nhiều ngôn ngữ:

  • 🌍 Trang thương mại điện tử - Phục vụ khách hàng ở các quốc gia khác nhau (Tiếng Anh, Tiếng Pháp, Tiếng Đức)
  • 📱 Ứng dụng di động - Thích ứng giao diện với ngôn ngữ của thiết bị người dùng
  • 🌐 Trang web - Hiển thị nội dung bằng ngôn ngữ ưa thích của khách truy cập
  • 📚 Tài liệu - Cung cấp trợ giúp bằng nhiều ngôn ngữ
  • 🎮 Trò chơi - Dịch giao diện và nội dung

Vấn đề với việc mã hóa cứng ngôn ngữ:

Vấn đề:

  • 🔄 Khó cập nhật - Cần phải triển khai lại để thêm ngôn ngữ mới
  • 🌍 Không đồng bộ - Ngôn ngữ ứng dụng có thể khác với ngôn ngữ CMS
  • Sự không khớp trong dịch thuật - Nội dung tồn tại trong CMS nhưng không có trong ứng dụng
  • 🔧 Bảo trì thủ công - Cập nhật mã mỗi khi ngôn ngữ thay đổi

Giải pháp Locales:

Lợi ích:

  • 🔄 Luôn đồng bộ - Ngôn ngữ khớp với những gì được cấu hình trong OneEntry
  • 🌍 Động - Thêm/xóa ngôn ngữ mà không cần thay đổi mã
  • Đã xác thực - Chỉ hiển thị ngôn ngữ có nội dung
  • 🎯 Tập trung - Quản lý ngôn ngữ ở một nơi

✨ Khái niệm chính

Locale là gì?

Một locale là sự kết hợp giữa ngôn ngữ và khu vực xác định cách nội dung được hiển thị:

  • Mã ngôn ngữ - Mã ngôn ngữ ISO 639-1 (ví dụ: en, ru, ar)
  • Mã khu vực - Mã quốc gia ISO 3166-1 (ví dụ: US, GB, RU)
  • Định danh locale - Định dạng kết hợp: language_REGION (ví dụ: en_US, ru_RU, ar_SA)

Ví dụ:

Mã LocaleNgôn ngữKhu vựcMô tả
en_USTiếng AnhHoa KỳTiếng Anh Mỹ
en_GBTiếng AnhVương quốc AnhTiếng Anh Anh
ru_RUTiếng NgaNgaTiếng Nga
es_ESTiếng Tây Ban NhaTây Ban NhaTiếng Tây Ban Nha Châu Âu
es_MXTiếng Tây Ban NhaMexicoTiếng Tây Ban Nha Mexico
ar_SATiếng Ả RậpẢ Rập SaudiTiếng Ả Rập (Ả Rập Saudi)
fr_FRTiếng PhápPhápTiếng Pháp
de_DETiếng ĐứcĐứcTiếng Đức

Cấu trúc Locale

Mỗi locale trong OneEntry có:

{
id: 146, // ID duy nhất
shortCode: 'en', // mã ngắn
code: 'en_US', // mã đầy đủ
name: 'English (USA)', // tên
nativeName: 'English (USA)', // tên bản địa
isActive: true, // đang hoạt động
image: null, // hình ảnh
position: 1, // vị trí
}

Tại sao sử dụng mô-đun Locales?

Lợi íchMô tả
Hỗ trợ đa ngôn ngữPhục vụ nội dung bằng ngôn ngữ ưa thích của người dùng
Danh sách ngôn ngữ độngNgôn ngữ đồng bộ với cấu hình OneEntry
Phát hiện locale mặc địnhTự động xác định ngôn ngữ mặc định
Lọc locale đang hoạt độngChỉ hiển thị ngôn ngữ đã kích hoạt
Quản lý tập trungCập nhật ngôn ngữ trong bảng điều khiển quản trị, không phải mã
Trải nghiệm người dùngCho phép người dùng chọn ngôn ngữ của họ

Các trường hợp sử dụng phổ biến

Trường hợp sử dụngMô tảVí dụ
Trình chọn ngôn ngữMenu thả xuống để chuyển đổi ngôn ngữĐầu trang web với cờ ngôn ngữ
Địa phương hóa nội dungLấy nội dung bằng ngôn ngữ của người dùngBài viết blog bằng tiếng Anh hoặc tiếng Nga
Định tuyếnCấu trúc URL theo ngôn ngữ/en/about, /ru/about
Logic dự phòngHiển thị ngôn ngữ mặc định nếu thiếu bản dịchHiển thị tiếng Anh nếu tiếng Tây Ban Nha không có
Sở thích của người dùngNhớ lựa chọn ngôn ngữ của người dùngLưu locale trong cookies/localStorage

📋 Những điều bạn cần biết

Locales được cấu hình trong bảng điều khiển quản trị

Bạn không thể tạo locales qua SDK - chúng được cấu hình trong bảng điều khiển quản trị OneEntry:

Bảng điều khiển quản trị OneEntry → Cài đặt → Ngôn ngữ → Thêm ngôn ngữ → Chọn locale

SDK được sử dụng để lấy thông tin locale, không phải để tạo locales.

Locales đang hoạt động và không hoạt động

Không phải tất cả các locales đã cấu hình đều có thể đang hoạt động:

Trạng tháiÝ nghĩaKhi nào sử dụng
Đang hoạt động (isActive: true)Locale được kích hoạt và có nội dungHiển thị trong trình chọn ngôn ngữ
Không hoạt động (isActive: false)Locale bị vô hiệu hóa hoặc đang chuẩn bịẨn khỏi người dùng

Thực hành tốt nhất: Luôn lọc theo isActive khi xây dựng trình chọn ngôn ngữ

Locale mặc định

Mỗi dự án OneEntry có một locale mặc định:

  • Locale mặc định (isDefault: true) - Ngôn ngữ chính
  • Được sử dụng khi không có locale nào được chỉ định
  • Dự phòng khi thiếu bản dịch

Mã Locale và Mã ngắn

Mỗi locale có hai định dạng mã:

TrườngĐịnh dạngVí dụSử dụng cho
codelanguage_REGIONen_US, ru_RUNhận diện locale đầy đủ
shortCodelanguageen, ruNhận diện chỉ ngôn ngữ

📊 Bảng tham khảo nhanh

Phương thứcMô tảTrường hợp sử dụng
getLocales()Lấy tất cả các locales (đang hoạt động và không hoạt động)Lấy các ngôn ngữ có sẵn

❓ Câu hỏi thường gặp (FAQ)

Làm thế nào để thêm ngôn ngữ mới vào dự án của tôi?

Bạn không thể thêm locales qua SDK. Các locales được cấu hình trong bảng điều khiển quản trị OneEntry.


Làm thế nào để thiết lập ngôn ngữ mặc định?

Bạn không thể thiết lập locale mặc định qua SDK. Locale mặc định được cấu hình trong bảng điều khiển quản trị OneEntry:

Lưu ý: Chỉ có một locale có thể là mặc định tại một thời điểm.


Tôi có nên hiển thị các locales không hoạt động cho người dùng không?

Không! Luôn lọc theo isActive:

Tại sao? Các locales không hoạt động có thể:

  • Đang trong quá trình phát triển (nội dung chưa sẵn sàng)
  • Tạm thời bị vô hiệu hóa
  • Không có bản dịch cho tất cả nội dung

Làm thế nào để xử lý các bản dịch bị thiếu?

Sử dụng logic dự phòng


Tôi có thể lưu trữ các locales không?

Có! Các locales hiếm khi thay đổi, vì vậy việc lưu trữ được khuyến nghị.


Tôi có thể sử dụng Locales với Next.js i18n không?

Có! Tích hợp các locales của OneEntry với Next.js.


Làm thế nào để nhóm các locales theo ngôn ngữ?

Nhóm các biến thể của cùng một ngôn ngữ


Nếu tôi cần dịch các phần tử giao diện (không phải nội dung CMS) thì sao?

Mô-đun Locales của OneEntry chỉ dành cho các locales nội dung CMS. Đối với dịch giao diện:

Tùy chọn 1: Sử dụng thư viện i18n (react-i18next, next-i18next)

Tùy chọn 2: Lưu trữ các bản dịch giao diện trong OneEntry

Tạo một loại trang "bản dịch" và lấy các chuỗi bản dịch


💡 Lưu ý quan trọng

Locales là chỉ đọc

Mô-đun Locales là chỉ đọc:

  • ✅ Lấy locales
  • ✅ Lọc theo trạng thái hoạt động
  • ✅ Tìm locale mặc định
  • ❌ Không thể tạo locales
  • ❌ Không thể cập nhật locales
  • ❌ Không thể xóa locales

Để sửa đổi: Sử dụng bảng điều khiển quản trị OneEntry.


Luôn lọc các locales đang hoạt động

Chỉ hiển thị các locales đang hoạt động cho người dùng

Tại sao? Các locales không hoạt động có thể không có bản dịch đầy đủ.


Lưu trữ được khuyến nghị

Các locales hiếm khi thay đổi - thực hiện lưu trữ


Đồng bộ với các locales nội dung

Đảm bảo ngôn ngữ giao diện khớp với nội dung có sẵn


🎓 Thực hành tốt nhất

  • Luôn lọc các locales đang hoạt động - Chỉ hiển thị các ngôn ngữ đã kích hoạt
  • Lưu trữ các locales - Chúng hiếm khi thay đổi, lưu trữ để cải thiện hiệu suất
  • Sử dụng locale mặc định làm dự phòng - Xử lý các bản dịch bị thiếu
  • Lưu sở thích của người dùng - Nhớ lựa chọn ngôn ngữ
  • Xác thực mã locale - Kiểm tra xem locale có tồn tại trước khi sử dụng
  • Phát hiện ngôn ngữ trình duyệt - Tự động chọn ngôn ngữ của người dùng
  • Nhóm theo ngôn ngữ - Hiển thị các biến thể ngôn ngữ một cách hợp lý

Thông tin thêm về giao diện người dùng của mô-đun https://doc.oneentry.cloud/docs/category/languages

Định nghĩa của mô-đun Locales

Mô-đun 'Locales' cho phép hỗ trợ đa ngôn ngữ trong OneEntry.

Nhờ vào sự hỗ trợ của nhiều ngôn ngữ trong Nền tảng OneEntry, bạn có thể tùy chỉnh linh hoạt giao diện của bảng điều khiển và quản lý ngôn ngữ trong dự án của mình một cách thuận tiện. Trong phần này, bạn có thể tìm hiểu về các nguyên tắc làm việc với ngôn ngữ.


const { Locales } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);


🔗 Tài liệu liên quan