2012-06-02 36 views
13

Tôi tự hỏi điều gì sẽ là cách tốt nhất để triển khai nhiều phiên bản/ngôn ngữ có cùng nội dung trong cùng một bố cục thể hiện.Ứng dụng thể hiện đa ngôn ngữ

Tôi có nên làm điều này không?

app.get("/", function(req, res) { 
    res.render(language + "/index"); 
}); 

Hoặc có cách nào thông minh hơn/tốt hơn không?

Trả lời

21

Tôi khuyên bạn chỉ nên giữ một mẫu, vì nếu bạn sử dụng một mẫu cho mỗi ngôn ngữ, nó sẽ nhanh chóng thoát ra khỏi nội dung, và bạn sẽ phải sao chép nhiều nội dung (và số lượng nhỏ "logic" quá). Nhiều ứng dụng sử dụng một công cụ gọi là gettext để làm điều quốc tế hóa. Có một thư viện node.js cho nó tại https://github.com/DanielBaulig/node-gettext

Hoặc cũng có i18n-node. Dường như nó có tích hợp nhiều hơn một chút với js nhanh.

+3

Cảm ơn! Tôi sẽ lấy nút i18n. :) – buschtoens

2

tôi nghĩ rằng chúng tôi có thể xác định các đối tượng json trong thư mục lang như, en.js, fr.js và tệp json này chứa cặp giá trị khóa hơn hiển thị mẫu theo cài đặt ngôn ngữ của người dùng, cài đặt lang có thể vào cơ sở dữ liệu.

Và chúng tôi có thể lưu fr.js này hoặc bất kỳ thứ gì khác vào res.locals để gọi mọi mẫu.

Điều này có phù hợp không?

5

i18n-node là mô-đun đơn giản và tốt nhất mà bạn nên sử dụng. Bạn có thể sử dụng trực tiếp trong mã Javascript hoặc với các mẫu Jade/Handlebar với js nhanh.

Tại sao bạn nên sử dụng i18n?

  • Tự động phát hiện ngôn ngữ từ trình duyệt theo tiêu đề, cookie hoặc tham số truy vấn tùy thuộc vào thiết lập của bạn.
  • Nó cũng đi kèm với các ví dụ.
  • Tự động tạo ra một en.json theo mặc định bên trong ./locales/. Điều này hoạt động như một tệp chính để bạn bắt đầu tạo bản dịch mới.
  • Hỗ trợ dạng số ít và số nhiều
  • Hỗ trợ cho các thông số: __('Hello %s', 'Marcus') lợi nhuận Hallo Marcus
Các vấn đề liên quan