8

Mặc dù tôi tìm thấy khá một nguồn lực rất nhiều liên quan đến câu hỏi này nhưng không ai trong số họ được chính xác cho câu trả lời cho một CMS đa ngôn ngữ sử dụng Zend Framework.Content đa ngôn ngữ trang web quản lý (CMS) sử dụng zend framework

Có rất nhiều z end translate adapters sẵn trong zend framwork. Nhưng một trong những (zend sql adapter), mà là cần thiết nhất cho các trang web cơ sở dữ liệu (mysql) hướng, chưa được phát hành.

Đối với những trang web đa ngôn ngữ không phải là cơ sở dữ liệu, nội dung có thể được đặt trong tệp (xml, mo hoặc bất kỳ khác) và một trong các bộ chuyển đổi dịch zend được sử dụng để xử lý nội dung hiển thị ngôn ngữ chính xác.

Làm thế nào chúng ta sẽ đối phó với cơ sở dữ liệu điều khiển trang web đa ngôn ngữ? Trước đây chúng tôi đã có thói quen sử dụng php với cơ sở dữ liệu đa ngôn ngữ được thiết kế tốt, giữ mỗi bài viết (trang) trong bảng với mọi bản dịch yêu cầu. Nếu chúng ta sẽ làm tương tự bằng cách sử dụng khung công tác zend, điều đó có thể vượt qua trang web giết hoặc làm chậm không? Chúng tôi vẫn sử dụng bộ nhớ đệm zend để làm cho nó nhanh hơn, nhưng chúng tôi sẽ không thể tận dụng lợi thế của dịch zend. Sau đó, khi zend dịch adapter cho sql sẽ có sẵn, sẽ dễ dàng chuyển đổi hệ thống quản lý nội dung đa ngôn ngữ đó bằng cách sử dụng dịch zend.

Có ai đã thử điều này không? Điều gì có thể là những thuận và ngô?

Một giải pháp khác có thể khiến cho cơ sở dữ liệu đa ngôn ngữ thiết kế tốt của chúng tôi và tạo ra các tập tin ngôn ngữ xml dựa trên tất cả các quản trị sự thay đổi làm cho sử dụng giao diện đồ họa trong lĩnh vực quản trị. Và sau đó sử dụng một bộ chuyển đổi dịch zend để xử lý các tệp xml này. Tôi đoán rằng có thể là quá mức cần thiết, giết chết một con chim với pháo :)

Khi tôi đang nói về cách đặt nội dung toàn bộ trang trong cơ sở dữ liệu. Nó có thể bao gồm một số thẻ html như b, span, br, p, vv Làm thế nào zend dịch có thể xử lý nội dung với các thẻ html trong đó?

Nếu ai đó đã thực hiện điều này trước đây, cách nào có thể là cách tốt nhất để xử lý trang web được quản lý nội dung đa ngôn ngữ bằng cách sử dụng khung công tác zend.

Bất kỳ ý kiến ​​chuyên gia nào!

Trả lời

1

Có rất nhiều bộ điều hợp dịch có sẵn trong tính năng zend framwork. Nhưng một trong những (zend sql adapter), mà là cần thiết nhất cho các trang web cơ sở dữ liệu (mysql) hướng, chưa được phát hành.

Đối với những trang web đa ngôn ngữ không phải là cơ sở dữ liệu, nội dung có thể được đặt trong tệp (xml, mo hoặc bất kỳ khác) và một trong các bộ chuyển đổi dịch zend được sử dụng để xử lý nội dung hiển thị ngôn ngữ chính xác.

Đây là những giả định sai. Nó không được nói, rằng DB ứng dụng điều khiển cần phải sử dụng DB dịch hệ thống dịch. Bạn có thể dễ dàng sử dụng hệ thống tệp tĩnh.

Cách chúng tôi sẽ xử lý trang web đa ngôn ngữ được hướng cơ sở dữ liệu? Trước đây chúng tôi đã có thói quen sử dụng php với cơ sở dữ liệu đa ngôn ngữ được thiết kế tốt, giữ mỗi bài viết (trang) trong bảng với mọi bản dịch yêu cầu.

Tôi nghĩ rằng bạn có chút nhầm lẫn - Tôi hiểu rằng bạn muốn sử dụng Dịch cho nội dung động của trang (bài viết) của bạn. Dịch được thiết kế để quốc tế hóa các khung nhìn - nội dung tĩnh.Tôi có nghĩa là những thứ như , hãy đăng nhập hoặc đăng ký hoặc văn bản chào mừng, v.v. Và những tệp này thực sự phải ở trong tệp (xem xét tệp cache tĩnh) thay vì trong DB, vì tải trọng lớn sẽ tạo ra (DB nên được lưu vào bộ nhớ cache anyway). Các bài viết được lưu trữ trong DB là một điều khác, và những gì bạn muốn đạt được là nội dung trang đa chiều. Bạn có thể xử lý dễ dàng mà không cần Dịch (hãy nhớ, Dịch tốt cho các lượt xem!), Chỉ cần thêm cờ quốc gia/ngôn ngữ vào các bảng của bạn và truy xuất dữ liệu thích hợp (được lọc cho ngôn ngữ đã cho) thông qua mô hình của bạn. Nó thực sự đơn giản và nó không cần bất kỳ phần phụ trợ nào để dịch.

Tôi không biết cách Dịch hoạt động, nhưng tôi có thể giả định rằng nó kiểm tra ngôn ngữ và sau đó tải toàn bộ tệp dịch và lưu trữ nó trong bộ nhớ tập lệnh dưới dạng bộ sưu tập (hoặc mảng kết hợp đơn giản) để cung cấp cơ chế dịch nhanh và mạnh mẽ (thông báo, rằng nó sẽ không cần phải gọi một DB hoặc một tập tin cho mỗi khóa nhất định, bởi vì tất cả chúng sẽ có trong bộ nhớ). Giữ toàn bộ trang, bài viết theo cách này sẽ không có ý nghĩa gì cả, chủ yếu là vì bạn chỉ cần 1-2 bài viết trên mỗi trang (tại sao lại lãng phí bộ nhớ?) Và đôi khi hàng trăm chuỗi xem được bản địa hóa (vì vậy bạn không muốn thực hiện cuộc gọi đến một DB hoặc tệp cho mỗi người trong số họ)

Một giải pháp khác có thể là giữ cơ sở dữ liệu đa ngôn ngữ thiết kế tốt và tạo tệp ngôn ngữ dựa trên xml trên mỗi quản trị viên thay đổi sử dụng GUI trong khu vực quản trị. Và sau đó sử dụng một bộ chuyển đổi dịch zend để xử lý các tệp xml này. Tôi đoán rằng có thể là quá mức cần thiết, giết chết một con chim với khẩu pháo :)

Nếu nói về bản dịch cho một nội dung tĩnh - nó thực sự là giải pháp rất phổ biến: giữ bản dịch trong DB để dễ dàng truy cập/thay đổi và tạo ra XML/CSV/bất kỳ tệp nào khi thay đổi xảy ra.

Khi tôi nói về cách đặt toàn bộ nội dung của trang trong cơ sở dữ liệu. Nó có thể bao gồm một số thẻ html như b, span, br, p, vv Làm thế nào zend dịch có thể xử lý nội dung với các thẻ html trong đó?

Nó có thể sẽ tốt, nhưng bạn vẫn đang nghĩ về nội dung động. Nội dung tĩnh phải được định dạng bên trong chế độ xem. Vì vậy, cuối cùng tôi đoán.

Bottom line: Sử dụng Translate cho tất cả các bạn đã đề cập, nó sẽ được giết chết một con chim với một pháo :)

+1

bạn đã đọc http://framework.zend.com/manual/en/zend này. translate.adapter.html. nó nói những người khác * .sql adapter có thể được thực hiện trong tương lai? – Developer

+0

Chúng có thể là hoặc chúng có thể không, bất cứ điều gì. Nó không thay đổi mà sử dụng nó cho những gì bạn muốn sử dụng là một thiết kế rất xấu và thực hành. Đó không phải là ý nghĩa của bản dịch. – jacek