i18n Skills
Lệnh AI để kiểm tra và bọc chuỗi i18n
Vấn đề
Mã nguồn của bạn có 500 chuỗi được viết cứng nằm rải rác trong các thành phần, mẫu và khung nhìn. Việc bọc thủ công đòi hỏi nhiều ngày tìm kiếm và thay thế đầy nhàm chán. Ngay cả sau khi bọc, bạn vẫn có thể bỏ sót những câu bị chia tách làm sai cấu trúc tiếng Đức, logic số nhiều không hoạt động trong tiếng Ả Rập và các khóa mồ côi khiến tệp bản địa hóa trở nên cồng kềnh.
Giải pháp
Hai lệnh dấu gạch chéo ứng dụng AI xử lý toàn bộ quy trình i18n. Chạy /i18n-review để kiểm tra mã ở chế độ chỉ đọc, sau đó chạy /i18n-wrap để tự động sửa mọi vấn đề. Cả hai lệnh đều phát hiện framework, hiểu định dạng tệp bản địa hóa và xác thực thay đổi trước khi commit.
/i18n-review
Kiểm tra ở chế độ chỉ đọc để tìm câu bị chia tách, dạng số nhiều bị hỏng, chuỗi chưa được bọc và khóa không dùng đến. Không bao giờ sửa đổi mã của bạn.
/i18n-wrap
Tự động bọc chuỗi được viết cứng bằng hàm dịch phù hợp, tạo khóa có ý nghĩa, cập nhật tệp bản địa hóa và xác thực bản build.
Lệnh /i18n-review
Lệnh review kiểm tra mã nguồn của bạn ở chế độ chỉ đọc. Lệnh này quét mọi tệp để tìm vấn đề i18n và tạo báo cáo theo thứ tự ưu tiên, kèm vị trí tệp chính xác cùng đề xuất sửa lỗi. Mã của bạn không bao giờ bị sửa đổi.
/i18n-review src/
/i18n-review src/ --framework=next-intlNội dung kiểm tra
- Câu bị chia tách: các lệnh gọi t() nối với nhau làm sai trật tự từ trong ngôn ngữ khác
- Bọc quá mức: chuỗi kỹ thuật, lớp CSS, URLs và giá trị enum bị bọc nhầm bằng t()
- Bọc chưa đủ: chuỗi hiển thị trên giao diện như nhãn nút, tiêu đề và thông báo lỗi vẫn được viết cứng
- Vấn đề về số nhiều: dùng toán tử ba ngôi hoặc phép kiểm tra === 1 thay cho cú pháp số nhiều ICU phù hợp
- Khóa không dùng đến: khóa dịch được định nghĩa trong tệp bản địa hóa nhưng không được tham chiếu trong mã
- Giá trị định dạng được viết cứng: ngày tháng, tiền tệ và số không sử dụng bộ định dạng Intl
Lệnh /i18n-wrap
Lệnh wrap tự động bọc chuỗi được viết cứng bằng hàm dịch phù hợp với framework của bạn. Lệnh này phát hiện thư viện i18n, tạo các khóa có ý nghĩa được nhóm theo thành phần hoặc tính năng, cập nhật tệp bản địa hóa và xác thực rằng bản build vẫn thành công.
/i18n-wrap src/components/
/i18n-wrap src/ --framework=react-i18nextChức năng
- Phát hiện framework: xác định thư viện i18n và hàm dịch của bạn (t, $t, $_, gettext, v.v.)
- Tạo khóa có ý nghĩa: tạo các khóa dễ hiểu như nav.signIn và errors.notFound thay cho nhãn chung chung
- Cập nhật tệp bản địa hóa: thêm khóa mới vào tệp ngôn ngữ nguồn theo đúng định dạng (JSON, YAML, PO, v.v.)
- Xác thực bản build: chạy các lệnh build, lint và test sau khi bọc để phát hiện mọi lỗi hồi quy
Framework được hỗ trợ
Cả hai lệnh đều tự động phát hiện framework từ các phần phụ thuộc của dự án. Bạn cũng có thể chỉ định rõ framework bằng cờ --framework. Dưới đây là 10 framework được hỗ trợ cùng hàm dịch và định dạng số nhiều tương ứng.
| Framework | Hàm dịch | Định dạng số nhiều |
|---|---|---|
| react-i18next | t() | key_one / key_other |
| next-intl | t() | ICU {count, plural, ...} |
| vue-i18n | $t() | Pipe syntax | singular | plural |
| angular i18n | $localize | ICU {count, plural, ...} |
| svelte-i18n | $_() | ICU {count, plural, ...} |
| flutter intl | S.of(context) | Intl.plural() |
| django | gettext / _() | ngettext() |
| rails i18n | t() | count key |
| laravel | __() / @lang | trans_choice() |
| swift | NSLocalizedString | .stringsdict |
Cài đặt
Sao chép các tệp lệnh vào thư mục .claude/commands/. Chỉ vậy thôi — không cần phần phụ thuộc hay cấu hình. Các lệnh là tệp Markdown thuần túy mà mọi trợ lý lập trình AI đều có thể thực thi.
mkdir -p .claude/commands
cp commands/i18n-review.md .claude/commands/
cp commands/i18n-wrap.md .claude/commands/Ví dụ sử dụng
Dự án React
Kiểm tra ứng dụng React sử dụng react-i18next, sau đó bọc tất cả chuỗi được viết cứng. Các lệnh phát hiện react-i18next từ package.json rồi sử dụng đúng hàm t() và định dạng số nhiều key_one/key_other.
# Review a React project for i18n issues
/i18n-review src/ --framework=react-i18next
# Wrap all hardcoded strings automatically
/i18n-wrap src/components/ --framework=react-i18next
# Result: t() calls inserted, keys added to en/translation.jsonDự án Django
Kiểm tra các mẫu và khung nhìn Django để tìm vấn đề i18n, sau đó bọc chuỗi bằng gettext. Các lệnh phát hiện Django từ settings.py rồi sử dụng _() cho chuỗi đơn giản và ngettext() cho dạng số nhiều.
# Review Django templates and views
/i18n-review myapp/ --framework=django
# Wrap hardcoded strings with gettext
/i18n-wrap myapp/templates/ --framework=django
# Result: _() calls inserted, .po file updatedHướng dẫn framework liên quan
Dùng thử i18n Agent ngay
Thả tệp bản dịch của bạn vào đây
JSON, YAML, PO, XML, CSV, Markdown, Properties
hoặc nhấp để duyệt
Ngôn ngữ đích