Bản dịch tùy chỉnh
From LimeSurvey Manual
Giới thiệu
Kể từ LimeSurvey 5.4.0, bạn có thể tạo bản dịch riêng cho tất cả các chuỗi trong mọi ngôn ngữ được tích hợp sẵn bằng cách truy cập trực tiếp vào cơ sở dữ liệu của bạn.
Hệ thống này có thể được sử dụng nếu bản dịch hiện có không phù hợp với nhu cầu nghiệp vụ của bạn.
Chỉ nên dùng cho các trường hợp cụ thể, vì những chỉnh sửa văn bản trong lõi của LimeSurvey sẽ lại đòi hỏi bạn phải chỉnh sửa cơ sở dữ liệu.
Ngoài ra, bạn có thể dùng phương pháp này để dịch các chuỗi dành riêng cho giao diện khảo sát.
Cách bản dịch trong cơ sở dữ liệu hoạt động
Đối với bản dịch trong cơ sở dữ liệu, LimeSurvey sử dụng một phương pháp lấy cảm hứng từ CDbMessageSource của framework Yii.
- tìm chuỗi trong bảng SourceMessage lime_source_message->message, lấy id : lime_source_message->id
- nếu tồn tại, tìm bản dịch liên quan trong bảng Message lime_message->translation cho ngôn ngữ hiện tại lime_message->language với id hiện tại lime_message->id
LimeSurvey tạo mảng các bản dịch từ tệp po (xem Dịch LimeSurvey để biết cách cập nhật tệp này), sau đó hợp nhất mảng đó với tất cả các bản dịch từ cơ sở dữ liệu.
Sau đó, các bản dịch từ cơ sở dữ liệu luôn được ưu tiên trả về nếu chúng tồn tại.
Ví dụ về nút “Gửi” bằng tiếng Anh và tiếng Pháp
Bạn muốn hiển thị _Validate_ thay vì _Submit_ cho nút gửi trong tất cả các khảo sát của bạn (với một chủ đề cụ thể). Nếu bạn chỉ cập nhật chủ đề và thay gT('Submit') bằng gT('Validate') thì nó sẽ luôn hiển thị _Validate_ ở mọi ngôn ngữ.
Cho tất cả các khảo sát với tất cả chủ đề
- Tạo thông điệp nguồn
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - Kiểm tra ID (nếu là bản ghi đầu tiên thì ID là 1) và dùng nó cho lệnh tiếp theo
- Tạo bản dịch liên quan :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
Không thay chuỗi bằng một chuỗi rỗng, nếu không bản dịch sẽ quay về câu tiếng Anh gốc. Bạn phải nhập ít nhất một khoảng trắng.
Sử dụng giao diện riêng của bạn (giải pháp được khuyến nghị)
Phương pháp này sử dụng mẫu riêng của bạn và cũng cập nhật chuỗi mặc định cho tất cả các ngôn ngữ khác.
- Trong Trình chỉnh sửa chủ đề, chọn phần Điều hướng
- Tìm kiếm
Template:GT("Submit")(trong navigator.twig) - Thay bằng
Template:GT("Validate") - Tạo thông điệp nguồn
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - Kiểm tra ID (nếu là bản ghi đầu tiên thì ID là 1) và dùng nó cho lệnh tiếp theo
- Tạo bản dịch liên quan :
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Lưu ý
Trường category trong lime_source_message phải là một chuỗi rỗng (''), không phải NULL. Nếu danh mục không khớp chính xác, gT() sẽ không tìm thấy thông điệp nguồn và bản dịch của bạn sẽ không được áp dụng. Điều này đặc biệt quan trọng khi thêm bản dịch cho các chuỗi dành riêng cho giao diện.