0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Tăng tốc quy trình i18next với i18next-cli mới nhất

Đăng vào 1 tháng trước

• 7 phút đọc

Giới thiệu về i18next-cli

Hệ sinh thái i18next đã là trung tâm của việc địa phương hóa web trong hơn một thập kỷ. Nó ra đời trong thế giới jQuery và đã phát triển cùng với cộng đồng qua sự ra đời của các framework hiện đại như React, Vue và Svelte. Khi các ứng dụng của chúng ta ngày càng trở nên phức tạp, các thách thức trong việc quản lý bản dịch cũng gia tăng.

Trong nhiều năm qua, cộng đồng đã dựa vào các công cụ như i18next-parser để thực hiện nhiệm vụ quan trọng là trích xuất các khóa bản dịch. Những công cụ này là những người tiên phong và đã phục vụ chúng ta rất tốt. Tuy nhiên, khi mã nguồn trở nên lớn hơn với hàng trăm nghìn dòng và cú pháp JavaScript hiện đại trở thành tiêu chuẩn, chúng ta bắt đầu cảm thấy sự khó khăn. Thời gian trích xuất chậm, gặp khó khăn với TypeScript và JSX, cùng với việc cần nhiều công cụ khác nhau để tạo ra một quy trình hoàn chỉnh đã trở thành những điểm đau phổ biến.

Đã đến lúc thay đổi.

Hôm nay, chúng tôi vui mừng giới thiệu i18next-cli, bộ công cụ chính thức, thế hệ mới, tất cả trong một cho hệ sinh thái i18next. Đây là một sự tái hình dung hoàn toàn của chuỗi công cụ phát triển, được xây dựng với ba nguyên tắc cốt lõi: hiệu suất tối ưu, trí tuệ mã sâu sắc, và trải nghiệm phát triển thống nhất.

🚀 Thử ngay mà không cần đọc thông báo đầy đủ! 😉

Chúng tôi đã thiết kế i18next-cli để cung cấp giá trị ngay lập tức. Bạn có thể có được phân tích tức thì về trạng thái bản dịch của dự án mà không cần cấu hình. Chỉ cần chạy lệnh sau trong thư mục gốc của kho mã của bạn:

Copy
npx i18next-cli status

Nó tự động phát hiện cấu trúc dự án của bạn và cung cấp báo cáo chỉ sau vài giây.

Đối với những người đang sử dụng i18next-parser, việc chuyển đổi là rất dễ dàng. Lệnh di chuyển của chúng tôi tự động chuyển đổi tệp cấu hình cũ của bạn sang định dạng mới:

Copy
npx i18next-cli migrate-config

Tại sao điều này quan trọng: Một quy trình làm việc tốt hơn

Trước khi đi vào các tính năng, hãy cùng nói về tác động:

Tốc độ nhanh, từ thiết kế

Hiệu suất không chỉ là một tính năng; nó là nền tảng của trải nghiệm phát triển tuyệt vời. Nút thắt lớn nhất trong các công cụ cũ là việc sử dụng các trình phân tích dựa trên JavaScript.

i18next-cli giải quyết vấn đề này bằng cách được xây dựng trên SWC, một trình biên dịch hiện đại dựa trên Rust. Nhờ việc tận dụng mã bản địa, chúng tôi đã mở khóa những cải tiến tốc độ đáng kể. Các quy trình trước đây mất hơn một phút để quét một dự án lớn giờ đây hoàn thành trong chưa đến năm giây. Đây không chỉ là một bản nâng cấp; mà là một sự chuyển mình trong vòng lặp phát triển, giúp các nhiệm vụ địa phương hóa trở nên tức thì.

Một công cụ để thống nhất mọi thứ

Một quy trình địa phương hóa hoàn chỉnh cần nhiều hơn chỉ là việc trích xuất. i18next-cli là một bộ công cụ thực sự, thống nhất tất cả các chức năng cần thiết vào một CLI duy nhất với một tệp cấu hình.

  • extract: Lệnh cốt lõi để tìm và lưu các khóa với chế độ mạnh mẽ --watch.
  • sync: Giữ cho các tệp ngôn ngữ của bạn đồng bộ, thêm các khóa còn thiếu và xóa các khóa không sử dụng.
  • types: Tạo định nghĩa TypeScript để đảm bảo an toàn kiểu tối đa và tự động hoàn thành.
  • lint: Tìm các chuỗi cứng trong mã của bạn cần được dịch, với các phương pháp thông minh để giảm thiểu các cảnh báo sai.
  • status: Cung cấp cho bạn một bảng điều khiển tổng quan về tình trạng bản dịch của dự án, với báo cáo chi tiết theo không gian tên.

Nó hoạt động ngay lập tức: Phát hiện mẫu nâng cao

i18next-cli được xây dựng với một trình phân tích có nhận thức về phạm vi, tạo ra một hiểu biết ngữ nghĩa về mã của bạn. Điều này có nghĩa là nó xử lý một loạt các mẫu hiện đại một cách tự động, mà không cần cấu hình thêm.

useTranslation với keyPrefix:
Nó hiểu rằng keyPrefix thay đổi các khóa được sử dụng bởi t.

Copy
const { t } = useTranslation('common', { keyPrefix: 'userProfile' });
// ✅ Trích xuất đúng 'userProfile.title' vào không gian tên 'common'
return <h1>{t('title')}</h1>;

Thành phần <Trans> với các con cái phức tạp:
Việc phân tích thành phần <Trans> thường rất khó khăn. i18next-cli xử lý điều này một cách tuyệt vời, đúng cách tuần tự hóa các thành phần lồng nhau và thậm chí trích xuất các khóa từ các props bên trong thành phần.

Copy
import { Trans, useTranslation } from 'react-i18next';

function WelcomeMessage() {
  const { t } = useTranslation();
  return (
    <Trans i18nKey="welcomeMessage">
      Xin chào <strong title={t('userTitle')}>{{name}}</strong>, chào mừng bạn đến với ứng dụng của chúng tôi!
    </Trans>
  );
}

CLI đúng hiểu điều này và trích xuất hai khóa:

  1. welcomeMessage, với giá trị mặc định: "Xin chào <1>{{name}}</1>, chào mừng bạn đến với ứng dụng của chúng tôi!"
  2. userTitle từ prop title lồng trong.

Các hàm t được đặt tên và phân hủy:
Dù bạn đổi tên t hoặc lấy nó từ một mảng, bộ công cụ vẫn theo dõi.

Copy
const { t: translate } = useTranslation('ns1');
const [t2] = useTranslation('ns2');

// ✅ Trích xuất 'key1' vào 'ns1'
translate('key1');

// ✅ Trích xuất 'key2' vào 'ns2'
t2('key2');

Fallback key và returnObjects:
Nó hiểu các tính năng nâng cao của i18next, trích xuất tất cả các khóa tĩnh từ một mảng fallback và bảo tồn các đối tượng lồng nhau khi bạn cần chúng.

Copy
// ✅ Trích xuất cả 'key.primary' và 'key.fallback'
t(['key.primary', 'key.fallback']);

// ✅ Bảo tồn toàn bộ đối tượng `countries` trong các tệp JSON của bạn
t('countries', { returnObjects: true });

🚀 Thử ngay - Không cần cấu hình!

Chúng tôi đã thiết kế i18next-cli để cung cấp giá trị ngay lập tức. Đối với hầu hết các dự án, bạn có thể có một phân tích tức thì về trạng thái bản dịch của mình mà không cần cấu hình. Nó tự động phát hiện cấu trúc dự án của bạn và cung cấp báo cáo chỉ sau vài giây.

Chỉ cần chạy lệnh sau trong thư mục gốc của kho mã của bạn:

Copy
npx i18next-cli status

Dễ dàng di chuyển

Đối với những người dùng hiện tại của i18next-parser, chúng tôi đã làm cho quá trình chuyển đổi trở nên dễ dàng. Bộ công cụ bao gồm một lệnh di chuyển tự động chuyển đổi tệp cấu hình cũ của bạn sang định dạng mới.

Copy
npx i18next-cli migrate-config

Nâng cao quy trình làm việc lên đám mây với Locize

i18next-cli cung cấp một quy trình làm việc tốt nhất trong việc quản lý các tệp bản dịch địa phương của bạn trong Git. Tuy nhiên, khi dự án của bạn phát triển, việc quản lý bản dịch giữa một nhóm lập trình viên, biên dịch viên và quản lý sản phẩm có thể trở thành một thách thức.

Đây là lúc locize, nền tảng quản lý bản dịch của chúng tôi, trở thành bước tiếp theo tự nhiên. Chúng tôi đã xây dựng i18next-cli để trở thành cầu nối hoàn hảo giữa phát triển địa phương và quy trình địa phương hóa dựa trên đám mây chuyên nghiệp.

CLI hoàn toàn tích hợp với locize, cho phép bạn di chuyển dự án của mình và đồng bộ hóa bản dịch với các lệnh đơn giản (locize-migrate, locize-sync). Nó di chuyển các bản dịch của bạn ra khỏi các tệp JSON và vào một nền tảng mạnh mẽ được xây dựng đặc biệt cho sự hợp tác.

Bắt đầu ngay hôm nay

Chúng tôi tin rằng i18next-cli đặt ra một tiêu chuẩn mới cho các công cụ địa phương hóa. Nó phản ánh cam kết của chúng tôi đối với cộng đồng i18next và sứ mệnh của chúng tôi để tạo ra một trải nghiệm phát triển thực sự liền mạch.

Kiểm tra tài liệu đầy đủ, cấu hình nâng cao và hệ thống plugin trên kho GitHub chính thức. Chúng tôi không thể chờ đợi để xem cách nó tăng tốc quy trình làm việc của bạn.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào