Ngôn ngữ nhân tạo, Chữ viết & Chính tả
rosetta hỗ trợ tối ưu cho các ngôn ngữ nhân tạo (constructed languages) thông qua các register của LLM và các bộ chuyển đổi chữ viết tất định (deterministic script converters). Hướng dẫn này trình bày cách hoạt động của tính năng hỗ trợ ngôn ngữ nhân tạo, các phông chữ bạn cần và cách thêm ngôn ngữ của riêng bạn.
:::tip Tại sao ngôn ngữ nhân tạo lại quan trọng Ngôn ngữ nhân tạo không chỉ là sự mới lạ — chúng vận hành trên cùng một cơ sở hạ tầng được sử dụng cho các ngôn ngữ thực tế ít được hỗ trợ. Cổng chất lượng (quality gate), hệ thống huấn luyện (coaching system) và luồng chuyển đổi chữ viết hoạt động hoàn toàn giống nhau đối với tiếng Klingon và tiếng Plains Cree. Nếu luồng xử lý ngôn ngữ nhân tạo của bạn hoạt động tốt, thì luồng xử lý ngôn ngữ tài nguyên thấp của bạn cũng vậy. :::
Các ngôn ngữ nhân tạo được hỗ trợ
| Ngôn ngữ | Mã | Bộ chuyển đổi chữ viết | Phông chữ yêu cầu |
|---|---|---|---|
| Klingon | tlh | ✅ Latin hóa → pIqaD | Phông chữ PUA (VD: pIqaD qolqoS) |
| Sindarin (Tiếng Elf của Tolkien) | x-elvish-s | ✅ Latin → Tengwar | Phông chữ CSUR PUA |
| Kryptonian | x-kryptonian | ✅ Latin → Kryptonian | Phông chữ PUA |
| Tiếng Anh Hải tặc | x-pirate | ❌ chỉ register | Không |
| Tiếng Anh Shakespeare | x-shakespeare | ❌ chỉ register | Không |
| Tiếng Yoda | x-yoda | ❌ chỉ register | Không |
Các mã ngôn ngữ nhân tạo sử dụng tiền tố x- theo quy ước sử dụng riêng của BCP-47, ngoại trừ tiếng Klingon (tlh) có mã ISO 639-3 được cấp bởi SIL International.
Yêu cầu về Unicode, PUA và Phông chữ
Vùng sử dụng riêng (Private Use Area)
Tiếng Klingon (pIqaD), Sindarin (Tengwar) và Kryptonian sử dụng các ký tự Private Use Area (PUA) của Unicode. PUA là dải U+E000–U+F8FF — các điểm mã này không được gán tiêu chuẩn. ConScript Unicode Registry (CSUR) duy trì các ánh xạ được cộng đồng thống nhất cho các chữ viết hư cấu, nhưng chúng không thuộc tiêu chuẩn Unicode.
Điều này có ý nghĩa gì trong thực tế:
- Văn bản PUA sẽ hiển thị thành các ô trống (□□□) nếu không tải đúng phông chữ
- Các phông chữ khác nhau có thể ánh xạ các glyph khác nhau vào cùng một điểm mã PUA
- rosetta KHÔNG tích hợp sẵn các phông chữ PUA — bạn phải tự tải chúng
- Các phông chữ hệ thống sẽ không bao giờ hiển thị được các ký tự này
Dải PUA theo Chữ viết
| Chữ viết | Dải PUA | Tham chiếu CSUR |
|---|---|---|
| Klingon (pIqaD) | U+F8D0–U+F8FF | CSUR Klingon |
| Tengwar (Tiếng Elf) | U+E000–U+E07F | CSUR Tengwar |
| Kryptonian | Thay đổi theo phông chữ | Không có tiêu chuẩn CSUR |
Tải Phông chữ Web PUA
Để hiển thị văn bản ngôn ngữ nhân tạo dựa trên PUA trong ứng dụng web của bạn, hãy tải phông chữ phù hợp thông qua CSS:
/* Load a Klingon PUA font */
@font-face {
font-family: 'pIqaD';
src: url('/fonts/piqad.woff2') format('woff2');
unicode-range: U+F8D0-U+F8FF;
}
/* Apply to Klingon text elements */
[lang="tlh"] {
font-family: 'pIqaD', sans-serif;
}
:::warning Hỗ trợ Unicode KHÔNG được đảm bảo Unicode Consortium đã từ chối rõ ràng việc mã hóa các chữ viết hư cấu vào tiêu chuẩn. Các gán mã PUA do cộng đồng duy trì và có thể xung đột giữa các bản triển khai phông chữ. Luôn chỉ định chính xác phông chữ mà dự án của bạn sử dụng và kiểm tra khả năng hiển thị trên nhiều trình duyệt. :::
Bộ chuyển đổi chữ viết
Cách chúng hoạt động
Tính năng chuyển đổi chữ viết của rosetta là một hook sau dịch thuật (post-translation hook):
- LLM dịch văn bản sang một chữ viết làm việc (thường là Latin hoặc SRO)
- Cổng chất lượng xác thực đầu ra
- Bộ chuyển đổi tất định biến đổi văn bản đã xác thực thành chữ viết hiển thị
- Văn bản đã chuyển đổi được ghi vào ổ đĩa
Cách tiếp cận hai bước này hiệu quả vì các LLM tạo ra đầu ra tốt hơn khi làm việc với các chữ viết dựa trên hệ Latin. Bộ chuyển đổi tất định đảm bảo đầu ra chữ viết chính xác mà không phụ thuộc vào kiến thức về chữ viết (thường không đáng tin cậy) của mô hình.
Cả năm bộ chuyển đổi
rosetta đi kèm với năm bộ chuyển đổi chữ viết tích hợp sẵn:
Plains Cree: SRO → Âm tiết (crk)
Từ Standard Roman Orthography (Chính tả chữ Latin chuẩn) sang Chữ âm tiết của thổ dân Canada.
Input: "tawâw"
Output: "ᑕᐚᐤ"
Các nguyên âm dài sử dụng dấu macron/mũ: ê, î, ô, â. Bộ chuyển đổi xử lý tất cả các dấu phụ SRO và ánh xạ chúng sang các ký tự âm tiết chính xác. Xem Hỗ trợ ngôn ngữ tài nguyên thấp để biết toàn bộ luồng xử lý tiếng Cree.
Tiếng Serbia: Latin → Cyrillic (sr)
Chuyển đổi tất định từ chữ Latin sang chữ Cyrillic cho tiếng Serbia.
Input: "zdravo"
Output: "здраво"
Bộ chuyển đổi này xử lý toàn bộ bảng ánh xạ chữ cái tiếng Serbia bao gồm cả các chữ ghép (lj → љ, nj → њ, dž → џ).
Klingon: Latin hóa → pIqaD (tlh)
Hệ thống Latin hóa của Marc Okrand sang các ký tự pIqaD PUA.
Input: "Qapla'" (romanized Klingon)
Output: [pIqaD PUA] (requires pIqaD font to render)
Sindarin: Latin → Tengwar (x-elvish-s)
Bảng ánh xạ Tengwar chế độ Sindarin của Tolkien.
Input: "elen síla" (Latin Sindarin)
Output: [Tengwar PUA] (requires Tengwar font to render)
Kryptonian: Latin → Kryptonian (x-kryptonian)
Bảng ánh xạ chữ viết Kryptonian theo từ vựng của người hâm mộ.
Input: "Kal-El"
Output: [Kryptonian PUA] (requires Kryptonian font to render)
Kích hoạt một Bộ chuyển đổi
Thiết lập trường scripts trong cấu hình ngôn ngữ của bạn. Đối với các bộ chuyển đổi tích hợp sẵn, trường này được tự động phát hiện từ mã ngôn ngữ:
{
"languages": {
"sr": { "scripts": "sr" },
"crk": {}
}
}
Tiếng Plains Cree (crk) tự động phát hiện — bạn không cần phải thiết lập scripts một cách rõ ràng.
Các ngôn ngữ đa chữ viết
Một số ngôn ngữ thực tế sử dụng nhiều chữ viết đang hoạt động:
| Ngôn ngữ | Chữ viết | Cách tiếp cận của rosetta |
|---|---|---|
| Tiếng Serbia | Latin + Cyrillic | Bộ chuyển đổi chữ viết (sr) — dịch bằng chữ Latin, chuyển đổi sang Cyrillic |
| Tiếng Trung | Giản thể + Phồn thể | Các mã locale riêng biệt (zh so với zh-TW) với các register khác nhau |
Đối với các ngôn ngữ mà cả hai chữ viết đều phục vụ cùng một đối tượng (tiếng Serbia), hãy sử dụng bộ chuyển đổi chữ viết. Đối với các ngôn ngữ mà các chữ viết phục vụ các đối tượng khác nhau (Tiếng Trung Giản thể cho Trung Quốc đại lục, Phồn thể cho Đài Loan/Hồng Kông), hãy sử dụng các mã locale riêng biệt.
Ghi chú về Chính tả
Các register không chỉ là giọng điệu — chúng mang theo các hướng dẫn chính tả để định hướng LLM tuân theo các quy ước viết chính xác.
Các hình thức xưng hô trang trọng
Các register tích hợp sẵn của rosetta bao gồm cách xưng hô trang trọng phù hợp với văn hóa cho từng ngôn ngữ:
| Ngôn ngữ | Hình thức trang trọng | Hướng dẫn Register |
|---|---|---|
| Tiếng Đức | Sie | Use Sie-form for formal address |
| Tiếng Pháp | vous | Use vous-form |
| Tiếng Nga | вы | Professional register with вы-form |
| Tiếng Thổ Nhĩ Kỳ | siz | Professional register with siz-form |
| Tiếng Hàn | 합쇼체 | Formal Korean (합쇼체) |
| Tiếng Nhật | です/ます | Polite professional register (です/ます form) |
| Tiếng Ba Lan | Pan/Pani | Professional register with Pan/Pani form |
Viết bao hàm giới tính
Mỗi thẻ ngôn ngữ có một trường gender.inclusiveGuidance chứa các lời khuyên dành riêng cho ngôn ngữ đó. Trường này được tiêm vào prompt dịch thuật của LLM tách biệt với preset của register, vì vậy nó áp dụng nhất quán bất kể người dùng chọn preset mức độ trang trọng nào:
- Tiếng Pháp: Écriture inclusive với ký hiệu dấu chấm giữa (VD: "Connecté·e")
- Tiếng Đức: Ký hiệu dấu hai chấm (VD: "Benutzer:innen")
- Tiếng Tây Ban Nha: Ưu tiên cấu trúc lại theo hướng trung lập về giới tính; sử dụng ký hiệu dấu gạch chéo (VD: "usuario/a") làm phương án dự phòng
Đối với các ngôn ngữ không có hướng dẫn cụ thể trong thẻ của chúng (VD: tiếng Hàn, ngôn ngữ nhân tạo), hệ thống sẽ chuyển về quy tắc chung: "ưu tiên các hình thức trung lập về giới tính hoặc tùy chọn bao hàm nhất có sẵn."
Yêu cầu về chữ viết RTL (Phải sang Trái)
Các register của tiếng Ả Rập, tiếng Do Thái, tiếng Ba Tư và tiếng Urdu đều ghi chú các yêu cầu viết từ phải sang trái: Ensure text reads naturally in RTL layout contexts.
Ghi đè bất kỳ Register nào
Mỗi register là một giá trị cấu hình — hãy ghi đè nó để phù hợp với giọng văn của dự án bạn:
{
"languages": {
"fr": {
"register": "Casual French. Use tu-form. Conversational blog tone. Gender-neutral when possible."
},
"de": {
"register": "Informal German. Use du-form. Tech startup voice."
}
}
}
Xem Cấu hình để biết toàn bộ tham chiếu cấu hình.
Thêm một Ngôn ngữ nhân tạo mới
Từng bước thực hiện
-
Chọn một mã sử dụng riêng BCP-47: Sử dụng tiền tố
x-(VD:x-dothraki,x-valyrian). -
Thêm vào cấu hình của bạn:
{
"languages": {
"x-dothraki": {
"register": "Dothraki language. Use David J. Peterson's vocabulary from the Living Language Dothraki textbook. Harsh, direct tone. No articles, no verb 'to be'."
}
}
}
-
(Tùy chọn) Thêm bộ chuyển đổi chữ viết: Nếu ngôn ngữ nhân tạo của bạn sử dụng chữ viết hiển thị không phải hệ Latin, hãy thêm một bộ chuyển đổi trong
lib/scripts.jsvà đăng ký nó trongSCRIPT_CONVERTERS. -
Kiểm tra: Chạy
i18n-rosetta sync --dryđể xem trước các bản dịch mà không cần ghi file. -
Kiểm tra cổng chất lượng: Cổng chất lượng có thể cần được tinh chỉnh cho ngôn ngữ nhân tạo của bạn — đặc biệt là bước kiểm tra
requireNonLatinnếu ngôn ngữ nhân tạo của bạn sử dụng các ký tự PUA.
:::note Chất lượng ngôn ngữ nhân tạo phụ thuộc vào kiến thức của LLM LLM chỉ có thể dịch sang một ngôn ngữ nhân tạo mà nó đã thấy trong dữ liệu huấn luyện. Các ngôn ngữ nhân tạo được ghi chép đầy đủ (Klingon, Sindarin, Dothraki) sẽ hoạt động tốt. Các ngôn ngữ nhân tạo ít phổ biến hoặc mới được phát minh có thể tạo ra kết quả không nhất quán. Hãy sử dụng dữ liệu huấn luyện để cải thiện chất lượng. :::
Xem thêm
- Các ngôn ngữ được hỗ trợ — bảng ngôn ngữ đầy đủ với các phương thức khả dụng
- Bộ chuyển đổi chữ viết — chi tiết kỹ thuật của luồng chuyển đổi
- Các phương pháp dịch thuật — cách hoạt động của từng phương pháp dịch
- Cấu hình — tham chiếu cấu hình bao gồm thiết lập ngôn ngữ và register
- Hỗ trợ ngôn ngữ tài nguyên thấp — cùng một cơ sở hạ tầng được áp dụng cho các ngôn ngữ thực tế ít được hỗ trợ