Cách thứ hai có cơ hội tốt hơn là chính xác. Khi viết hoa và khi không phụ thuộc vào ngôn ngữ, bạn không thể biết liệu t(:hello).capitalize
có mang lại kết quả chính xác hay không mà không nhìn vào bối cảnh xung quanh. Một cách tiếp cận tốt hơn so với một trong hai sẽ bao gồm các nội dung trong biểu tượng, một cái gì đó như thế này:
t(:hello_button)
và sau đó bằng tiếng Anh YAML của bạn:
hello_button: "Hello"
Bằng cách đó các bản dịch có thể sử dụng bất cứ trường hợp là phù hợp cho ngôn ngữ được đề cập. Ngoài ra, đôi khi tiếng Anh sẽ sử dụng cùng một từ cho hai điều khi các ngôn ngữ khác sẽ sử dụng các từ khác nhau: xem xét cam màu và cam quả; do đó tầm quan trọng của ngữ cảnh trong bản dịch của bạn.
Hơn nữa, capitalize
chỉ hoạt động trên các ký tự ASCII, trừ khi bạn ném một mb_chars
vào trộn:
> 'µ'.capitalize
=> "µ"
> 'µ'.mb_chars.capitalize.to_s
=> "Μ"
Bạn có thể không gặp một lãnh đạo µ
nhưng đơn giản điểm nhấn ở phần đầu của từ này là khá phổ biến:
> 'éclair'.capitalize
=> "éclair"
> 'éclair'.mb_chars.capitalize.to_s
=> "Éclair"
Điều này chỉ làm xước bề mặt của những khó khăn mà bạn sẽ phải đối mặt bằng cách giả định rằng tất cả các ngôn ngữ đều hoạt động như tiếng Anh. Chỉ cần đợi cho đến khi bạn phải bắt đầu giao dịch với pluralization rules.
Quy tắc cơ bản trong L10N là xử lý các chuỗi hướng người dùng dưới dạng các mảng dữ liệu mờ mà bạn lấy ra khỏi cơ sở dữ liệu của một số loại và hiển thị cho người dùng mà không cần thao tác ở giữa. Có, điều này làm cho mã của bạn phức tạp hơn nhưng độ chính xác là rất quan trọng.
Trong khi tôi ở đây, cố gắng dịch các từ riêng lẻ có xu hướng tạo ra một mớ hỗn độn không thể hiểu nổi, bạn sẽ có kết quả tốt hơn nếu bạn dịch toàn bộ câu.
Nguồn
2012-08-29 01:53:16
Cần lưu ý rằng nội dung ngôn ngữ có thể rất phức tạp rất nhanh. Đây là một ví dụ khá đơn giản. Bạn có bất kỳ trường hợp sử dụng thực tế hơn? – tybro0103