Các từ viết tắt dùng trong báo cáo 2
Các hình dùng trong báo cáo 4
Các bảng dùng trong báo cáo 6
Công việc thực hiện trong thời gian làm đồ án 7
PHẦN I. GIỚI THIỆU ĐỀ TÀI 8
1.1 Xuất phát của đề tài 8
1.2 Giới thiệu tổng quát đề tài 8
1.3 Lý do chọn đề tài và mục đích của đề tài 8
PHẦN II. CƠ SỞ LÝ THUYẾT 10
2.1 Ngôn ngữ Python 10
2.2 Công nghệ Portal 11
2.2.1 Những vấn đề gặp phải trong CNTT (IT Challenges) 11
2.2.2 Mong muốn từ phía người sử dụng 11
2.2.3 Khái niệm Portal 11
2.2.4 Các đặc trưng của công nghệ Portal 13
2.2.5 Hiện trạng Portal ở Việt Nam 14
2.3 Công nghệ nguồn mở Zope portal (Web Application Server) 14
2.3.1 Tổng quan về Zope 14
2.3.2 Thực tế của Zope trên thế giới 15
2.3.3 Kiến trúc của Zope 15
2.3.4 Các đối tượng cơ bản trong kiến trúc hướng đối tượng của Zope 16
2.3.5 Khả năng tạo nội dung động với DTML 18
2.3.6 Zope Page Templates 19
2.3.7 Advanced Zope Scripting 21
2.3.8 Cơ chế tìm kiếm và phân loại nội dung 22
2.3.9 Cơ chế phân tải và mở rộng - Scalability & ZEO 23
2.3.10 Khả năng kết nối Relation Database trong Zope 24
2.3.11 Security trong Zope 26
2.4 Hệ quản trị nội dung Plone – Content Management System 30
2.4.1 Thế nào là một hệ quản trị nội dung 30
2.4.2 Vai trò của một hệ quản trị nội dung 30
2.4.3 Điểm mạnh của hệ quản trị nội dung Plone 31
2.4.4 Thế nào là một Content Management Framework (CMF) 31
2.4.5 Các đặc điểm của Plone 32
2.4.6 Workflow System trong Plone 33
PHẦN III. PHÁT TRIỂN ENGINE ĐA NGỮ CHO ZOPE 35
4.1 Bài toán đa ngữ 35
4.2 Thế nào là đa ngữ 35
4.3 Phân loại đa ngữ 35
4.4 Tại sao cần phải đa ngữ cả giao diện và nội dung 36
4.5 Yêu cầu đối với một giải pháp đa ngữ 37
4.6 Khó khăn gặp phải khi giải quyết bài toán đa ngữ 37
4.7 Thực tại về đa ngữ của Zope-Plone 38
4.8 Kiến trúc phân cấp hướng đối tượng của Zope và khả năng đa ngữ nội dung, giao diện 39
4.9 Cơ chế đa ngữ nội dung cho Zope 42
4.10 Xây dựng engine đa ngữ nội dung và giao diện cho Zope 44
4.10.1 Xử lý sắp xếp và tìm kiếm 45
4.10.2 Multilingual usecase diagram 49
4.10.3 Multilingual class diagram 50
4.10.4 Multilingual class specifications 51
PHẦN IV ÁP DỤNG CÔNG NGHỆ ZOPE VÀ PLONE 56
4.1 Giải pháp cổng thông tin Zope-Plone và Website bộ môn 56
4.1.1 Yêu cầu của bài toán 56
4.1.2 Mô tả ứng dụng 56
4.2 Xây dựng ứng dụng 57
4.2.1 Phân tích thiết kế 57
4.2.2 Kết quả đạt được 67
PHẦN V. NHẬN XÉT ĐÁNH GIÁ KẾT LUẬN 69
5.1 Nhận xét, đánh giá, kết luận 69
5.2 Hướng phát triển 69
PHỤ LỤC 71
Cài đặt Zope 2.7 71
Bổ sung của Zope 2.7 so với phiên bản trước: 71
Các phiên bản Zope/Plone đang sử dụng: 71
Cài đặt Zope/Plone: 71
Cài đặt ZEO 72
Thay đổi ZCatalog để xử lý được Unicode 74
Tài liệu tham khảo 75
75 trang |
Chia sẻ: huong.duong | Lượt xem: 1381 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Phát triển engine đa ngữ cho giải pháp cổng thông tin Zope - Plone và ứng dụng trong xây dựng website bộ môn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
nection với PostgreSQL:
Hình 7. Form tạo database connection
Để thao tác với CSDL ngoài thì ta phải dùng Z SQL Method, việc cài đặt các Z SQL Method cũng được hỗ trợ tối đa, có giao diện làm việc, có cả query builder và với những truy vấn phức tạp ta mới phải nhập vào truy vấn. Zope hỗ trợ các query template, hỗ trợ các view để thực hiện, xem kết quả truy vấn:
Hình 8. Form Add SQL Method
2.3.11 Security trong Zope
Zope là một hệ thống đa người dùng, tuy nhiên Zope không tin tưởng hoàn toàn vào tài khoản của người dùng trong hệ điều hành mà nó chạy. Zope duy trì một hoặc nhiều CSDL người dùng của riêng nó. Người dùng trong Zope thì không có những đặc quyền giống như người dùng trong hệ điều hành: thay đổi, xóa, sửa file trong hệ thống file của hệ điều hành.
Trong Zope thì người dùng chỉ có những quyền được cấp cho họ trong Zope’s security policy. Người dùng trong Zope chia ra làm 2 loại:
Người quản lý (Managers )
Người dùng nặc danh (Anonymous users)
Security trong Zope được thực hiện thông qua:
Identification
Authentication
Authorization
Role
Permission
Cụ thể là khi người dùng muốn truy cập hay tác động đến một nguồn tài nguyên nào đó trong Zope thì Zope sẽ yêu cầu người đó đăng nhập vào hệ thống bằng cách đưa ra các cửa sổ xác thực (Authentication) khác nhau sao cho phù hợp và yêu cầu người dùng đó nhập vào username và password. Khi người đó đăng nhập thì quá trình kiểm tra (Identification) diễn ra, username và password của người dùng đó được so sánh với dữ liệu có trong CSDL, nếu dữ liệu nhập vào khớp với dữ liệu có trong CSDL thì quá trình xác thực của người dùng đó là thành công.
Khi người dùng đó đã được xác thực thì Zope tiến hành kiểm tra xem người đó có được truy nhập đến những dữ liệu được bảo vệ trong Zope hay không, quá trình này gọi là Authorization. Sở dĩ phải có quá trình Authorization trong Zope là vì các tài nguyên (Resources) của Zope không thể bị truy nhập bởi người dung nặc danh (anonymous users). Quá trình Authorization giữa người dùng và các tài nguyên được bảo vệ trong Zope được thực hiện thông qua 2 lớp trung gian: vai trò (Roles) và quyền (Permissions)
Vai trò mô tả những gì người dùng có thể làm, trong Zope thì có 3 vai trò: “Author”, “Manager”, “Editor”. Những vai trò này được điều khiển bởi người quản trị của Zope (Zope Administrator). Người dùng có thể có nhiều hơn một vai trò và có thể có những tập hợp vai trò khác nhau trong những văn cảnh khác nhau.
Quyền trong Zope diễn tả cái có thể được làm khi có quyền là như vậy. Trong Zope có rất nhiều quyền chẳng hạn như: “View”, “Delete Objects”, “Manage Properties”. Những quyền này có thể đã được định nghĩa sẵn trong nhân của Zope hoặc trong Zope Products.
Văn cảnh trong Zope được định nghĩa là “nơi” mà trong cấu trúc phan cấp của Zope Objects. Chính sách bảo mật (security policies) trong Zope được dùng để phối hợp (map) giữa quyền (permissions) và văn cảnh “context” hay nói cách khác là security policies quy định ra “ai có thể làm gì” (who can do what). Vai trò trong Zope định nghĩa những hành động có thể thực hiện và Vai trò phân chia người dùng ra thành các lớp: Manager, Anonymous, Authenticated. Vai trò trong Zope cũng giống như nhóm (group) trong UNIX và cũng giống như trong UNIX thì một người dùng có thể có nhiều vai trò. Roles cho phép người quản trị dễ dàng hơn trong việc quản lý security. Thay vì việc người quản trị phải định nghĩa riêng từng chính sách an toàn cho từng người dùng khác nhau (rất mất công và chưa chắc đã chính xác) nay người quản trị có thể định nghĩa sẵn một số vai trò trong một số văn cảnh khác nhau và chỉ việc gán người dùng cho vai trò đó là xong.
Trong Zope có bốn vai trò được định nghĩa sẵn:
Manager
Vai trò này định nghĩa những người dùng có quyền quản lý Zope và thực hiện các chức năng quản lý chuẩn
Anonymous
Vai trò này định nghĩa những người dùng nặc danh, những người dùng chỉ có quyền xem những tài nguyên public của Zope
Owner
Vai trò này dành cho người dùng với những Objects mà họ tạo ra trong văn cảnh hiện thời của người dùng đó
Authenticated
Vai trò này được gán cho những người dùng mà họ đã Authentication thành công
Dưới đây là security policy của admin (root folder) trong Zope:
Hình 9. Security cho root Folder
Trong Zope còn định nghĩa Local Roles. Local Roles là một đặc điểm rất mạnh của Zope security. Một người dùng xác định có thể được gán thêm một số vai trò khi làm việc với những objects ở một văn cảnh cụ thể bằng việc sử dụng Local Roles. Nếu như các Objects này có local roles gắn với người dùng này thì người dùng này được cấp thêm những vai trò quy định trong Local Roles gắn với người dùng đó. Local Roles được điều khiển tự động bởi Zope thông qua Local Manager với Local Policies: từ các Local Policy Zope phân phối các điều khiển tới các Local Manager và định nghĩa các Local Roles.
Các nguyên tắc cơ bản trong thiết kế Security của Zope là:
Định nghĩa người dùng với mức điều khiển cao nhất mà họ có thể có nhưng không được phép có điều khiển cao hơn
Các Group Object nên được quản lý bởi cùng những người trong cùng Folder
Luôn giữ sao cho thật đơn giản
Chúng ta có thể thấy rằng cơ chế phân quyền của Zope là rất mềm dẻo và linh động. Chúng ta hãy xem xét tiếp hai điểm rất mạnh dưới đây trong cơ chế phân quyền của Zope:
Ownership
Zope sử dụng Ownership để gắn kết các đối tượng với người đã tạo ra chúng. Khi người dùng tạo ra các Objects thì người dùng đó sở hữu (own) các Objects đó, những Object mà không thuộc sở hữu của ai thì nó là Unowned Objects, Ownership rất quan trọng đối với Security bởi vì người dùng sẽ có Local Role “Owner” với những Object mà người đó sở hữu ngoài ra nó còn điều khiển Role’s Executable Content
Executable Content
Là những tham chiếu đến những đối tượng như: Scripts, DTML Methods, Documents. Nó rất quan trọng trong security của Zope bởi vì nó ngăn chặn người dùng không đủ thẩm quyền chạy những đoạn Script hay ứng dụng độc hại. Sở dĩ như vậy là vì: Role’s Executable Content chỉ cho phép người dùng chạy các Object mà mình tạo ra khi người đó có quyền Executable, nếu người đó không có quyền chạy thì dù người đó có làm cho người có thẩm quyền cao hơn chạy cũng không được. Đây chính là điểm mạnh của Executable Content: Một Executable Object chỉ có thể được thực thi khi mà cả Owner và Viewer của nó uỷ quyền (authorized) cho.
Với những cơ chế Security đặc biệt và rất mềm dẻo của mình security Zope có thể hỗ trợ cho bạn tối đa trong việc ngăn chặn Trojan, Spy…. Trojan hay Spy đều là những phần mềm gây nguy hiểm mà nó muợn vai trò hay quyền của những người dùng có đủ quyền và cài vào máy người dùng. Tuy nhiên nhờ Executable Content hay Ownership thì chúng ta có thể hạn chế được điều đó.
Đôi khi người dùng muốn có nhiều quyền hơn, nhiều khả năng hơn với Ownership của mình, khi đó Zope có hỗ trợ Proxy Role cho phép người dùng tăng cường Security trên những Executable Content của mình hơn cả Ownership.
Hình 10. Proxy Roles trong Zope
2.4 Hệ quản trị nội dung Plone – Content Management System
Plone là một hệ quản trị nội dung (CMS) nguồn mở, miễn phí được phát triển trên nền Zope. Plone cung cấp cho bạn tất cả các hỗ trợ quản lý rất mạnh để có thể quản lý tổ chức của bạn ở mọi cấp. Plone có một “workflow engine”, có một cơ chế phân quyền Security và Roles được cấu hình sẵn theo Zope, có một tập hợp các kiểu nội dung (content) rất mạnh (theo kiểu đối tượng) và đặc biệt Plone còn hỗ trợ đa ngữ. Vì là nguồn mở, miễn phí nên Plone rất được hưởng ứng, mọi người trên thế giới rất ủng hộ và đóng góp cho Plone rất nhiều.
Plone là một CMS phát triển dựa trên Content Management Framework (CMF)
2.4.1 Thế nào là một hệ quản trị nội dung
Hệ quản trị nội dung là phần mềm cho phép chúng ta thêm, thao tác nội dung trên một website. Một hệ quản trị nội dung bao gồm 2 thành phần:
Content Management Application (CMA)
CMA là thành phần cho phép người quản lý hoặc tác giả của nội dung (người không biết gì về HTML) quản lý việc tạo, sửa, xoá nội dung của một Website mà không cần kiến thức của một người quản trị Web (Webmaster)
Content Delivery Application (CDA)
CDA là phần sử dụng và biên dịch thông tin nhận được từ CMA và cập nhật vào website.
Các đặc trưng của một hệ quản trị nội dung thì rất nhiều nhưng thông thường thì hay có những đặc trưng cơ bản sau:
Web-based publishing
Format management
Revision control and indexing
Search
Retrieval
2.4.2 Vai trò của một hệ quản trị nội dung
Hệ quản trị nội dung càng ngày càng trở nên vô cùng quan trọng đối với mọi tổ chức, cá nhân. Lượng thông tin trao đổi, xử lý trên các ứng dụng web càng ngày càng lớn và rất phong phú về chủng loại nên việc quản lý sao cho thật tốt các thông tin đó là vấn đề cốt yếu đối với các ứng dụng web.
Ta có thể thấy rằng hệ quản trị nội dung là một trong những phần quan trọng nhất của các ứng dụng web, nó quyết định sự thành công và khả năng phát triển của ứng dụng Web. Chúng ta có thể tưởng tượng một tổ chức lớn như tổng công ty bưu chính viễn thông hoặc các bộ ngành chẳng hạn thì lượng thông tin phải xử lý trong một thời điểm lớn cỡ nào. Nếu như với những tổ chức lớn như vậy mà thông tin không được tổ chức và quản lý một cách khoa học và có tổ chức thì hệ thống của các tổ chức đó có thể tồn tại và ngày càng phát triển tốt như vậy không.
2.4.3 Điểm mạnh của hệ quản trị nội dung Plone
Plone là một hệ quản trị nội dung nguồn mở được xây dựng trên Zope. Đây là một hệ quản trị nội dung rất mạnh cũng được xây dựng chủ yếu trên ngôn ngữ Python và đã được tích hợp rất nhiều công nghệ và ứng dụng hỗ trợ. Hệ quản trị nội dung Plone được cài đặt hết sức dễ dàng và nó rất linh hoạt. Plone cung cấp cho bạn đầy đủ những công cụ và công nghệ cần thiết nhất và hợp lý nhất cho bạn để quản lý nội dung web. Dưới đây là một số điểm mạnh của Plone CMS:
Plone cho phép bạn tuỳ biến giao diện theo ý bản thân
Plone cho phép bạn quản lý nội dung, tạo nội dung, thêm nội dung rất dễ dàng
Plone có cơ chế Cache, Có Navigation, Form, Action, Slot là những công nghệ rất mạnh của CMS
Plone cung cấp cho bạn cơ chế để duy trì và tối ưu hoá Plone
Plone cho phép bạn mở rộng nó rất dễ dàng, linh động
Plone cho phép bạn định nghĩa các kiểu nội dung (content type) và tạo nội dung theo các kiểu đó rất thoải mái không gò bó
Plone kết hợp với Zope, ngôn ngữ Python cho phép bạn tuỳ biến, cải tiến, sửa đổi Plone theo ý mình. Bạn có thể nhúng các Product của bạn, nhúng các đoạn Script, các đối tượng Script vào Plone Site rất dễ dàng:
Plone với cơ chế bảo mật của Zope (Membership Services) và công nghệ Catalog với Catalog tool của Zope thì Plone rất an toàn và mạnh mẽ. Cho phép bạn tìm kiếm, phân loại nội dung rất khoa học.
2.4.4 Thế nào là một Content Management Framework (CMF)
Content Management Framework là một ứng dụng bao gồm một loạt các công cụ (tools) cho Zope. Những công cụ này kết hợp với nhau tạo nên một framework cung cấp những dịch vụ then chốt cho mọt hệ quản trị nội dung. CMF có thể dùng độc lập như một Product trong Zope và chúng ta vẫn khai thác được các dịch vụ mà nó cung cấp. Thông thường người ta hay dùng Zope như là cái nền và dùng Plone (với phần nhân là CMF) ở phía trên để khai thác các dịch vụ của CMF và cung cấp thêm các tính năng để tạo nên hệ quản trị nội dung Plone rất mạnh:
Hình 11. Kiến trúc của Plone trong Zope
Trong kiến trúc của Plone thì Plone có phần nhân là CMF (Content Types, Membership Service, Workflow, Catalog Tool…), CMF lại nằm trên nền Zope.
2.4.5 Các đặc điểm của Plone
Plone rất mạnh và rất linh động
Plone được lý tưởng hoá như là các Intranet và Extranet Server, Document Publishing Server, Portal Server. Hơn nữa Plone còn được coi là một Groupware tool cho việc làm việc cộng tác giữa các thực thể tách biệt
Plone rất dễ sử dụng
Cộng đồng phát triển Plone rất lớn, bao gồm nhiều chuyên gia chính vì vậy mà Plone đã được tối ưu và rất dễ dàng trong sử dụng, giao diện rất thân mật và dễ sử dụng.
Plone rất dễ cài đặt
Việc cài đặt Plone rất dễ dàng vì Plone đã được cấu hình và đóng gói bởi các công cụ cài đặt và bạn chỉ cần kick vào và chạy install là được
Plone mang tính chất quốc tế cao
Giao diện của Plone đã được dịch ra hơn 40 ngôn ngữ và Plone cung cấp công cụ cho bạn quản lý các nội dung đa ngữ
Plone đã được chuẩn hoá
Plone hỗ trợ các chuẩn, tuân theo các chuẩn: chuẩn của W3C, chuẩn về sử dụng, truy cập của Mỹ, các chuẩn về web, porlet…..
Plone là nguồn mở (Open Source)
Plone được hỗ trợ rất nhiều
Plone được hỗ trợ rất nhiều từ cộng đồng Plone, từ các công ty, tổ chức có sử dụng Plone. Đặc biệt Plone nhận được hỗ trợ rất nhiều từ cộng đồng Plone và Zope
Plone có tính mở rộng cao
Plone có phần nhân là CMF là một framework hỗ trợ việc tích hợp thêm các sản phẩm (add-on product) và bạn chỉ cần xây dựng một Product của mình trên nền Zope với ngôn ngữ Python chẳng hạn thì bạn có thể dễ mở rộng Plone với sản phẩm đó
Plone mang tính cơ động cao
Plone có thể chạy trên hầu như là mọi nền (platform) và hỗ trợ hầu như mọi CSDL mạnh ngày nay
Phát triển ứng dụng trên Plone rất nhanh
Plone được xây dựng và phát triển trên nền Zope - một môi trường phát triển ứng dụng web rất nhanh. Và phát triển các ứng dụng với Plone sẽ rất nhanh.
2.4.6 Workflow System trong Plone
Trong Plone thì Workflow là quy trình được sử dụng để quản lý các đối tượng (Objects) trong ứng dụng web của bạn. Plone có một Workflow System rất mạnh được phát triển trên Object States và User Roles.
Object States
Một trạng thái của đối tượng quyết định tính sẵn sàng của nó đối với các loại người dùng khác nhau định nghĩa trong Plone và quyết định những trạng thái mà đối tượng này có thể chuyển sang. Workflow System của Plone mặc định có bốn trạng thái:
Visible
Đây là trạng thái mặc định đối với các đối tượng được tạo ra. Ở trạng thái này thì mọi người dùng đều có thể thấy được đối tượng và có thể truy cập trực tiếp tới đối tượng này thông qua URL của đối tượng. Visible Object trong Private Folder thì những người dùng khác cũng có thể thấy được đối tượng này.
Pending
Là trạng thái của đối tượng được submit để publishing bởi các thành viên của site. Đối với người dùng cuối (End User) thì trạng thái Pending và trạng thái Visible chẳng khác gì nhau. Sự khác nhau duy nhất giữa trạng thái Pending và trạng thái Visible là đối tượng ở trạng thái Pending thì được bật cờ Review
Published
Ở trạng thái Published thì các đối tượng có thể được thấy đối với tất cả những người vào website. Published Items chỉ có thể bị thay đổi, chỉnh sửa bởi người quản lý nhưng nó có thể bị người sở hữu rút về không publishing nữa và người sở hữu lại có thể chỉnh sửa, thay đổi nó (rút đối tượng lại – retract thì đối tượng lại trả về trạng thái Visible)
Private
Đối tượng ở trạng thái này chỉ có thể thấy và có thể chỉnh sửa thay đổi bởi chủ sở hữu của đối tượng này và những người quản trị truy cập tới Folder có chứa đối tượng
User Roles
Plone sử dụng Role (vai trò) để định nghĩa những thứ khác nhau mà những người dùng khác nhau có thể thấy và làm. Và bằng cách này Plone xây dựng cơ chế bảo mật cho tất cả các khía cạnh của hệ thống.
Mặc định Plone có bốn vai trò:
Anonymous
Vai trò này dành cho bất cứ người nào vào website mà không đăng nhập. Thông thường thì người dùng với vai trò Anonymous thì có thể thấy được các đối tượng được Publishing
Member
Là vai trò được gán cho người dùng vào website mà đăng nhập. Với vai trò này thì người dùng có thể tạo nội dung trong Folder riêng của mình và submit cho reviewer của site để publishing. Thông thường thì người dùng với vai trò Member thì có thể thấy được các đối tượng ở trạng thái Visible, Published và Pending
Owner
Trong Plone cũng như trong Zope thì một người dùng có thể có nhiều hơn một vai trò. Trong Plone thì người dùng sẽ có vai trò Owner với những đối tượng mà họ tạo ra
Reviewer
Với vai trò này thì người dùng có thể Publish hoặc huỷ bỏ các nội dung được submit bởi người dùng
Manager
Đây là vai trò có được nhiều quyền nhất. Với vai trò này thì người dùng có thể làm mọi thứ với website, có thể thấy được mọi đối tượng ở mọi trạng thái.
Plone kế thừa mô hình Role từ Zope.
PHẦN III. PHÁT TRIỂN ENGINE ĐA NGỮ CHO ZOPE
4.1 Bài toán đa ngữ
Ngày nay các ứng dụng nói chung và các ứng dụng web nói riêng luôn luôn tìm cách để đáp ứng được tất cả người dùng từ khắp nơi trên thế giới Internet là mạng toàn cầu, nó có mặt ở khắp nơi trên thế giới vì vậy mà các ứng dụng web để đáp ứng được đông đảo hơn hay tất cả người dùng từ khắp nơi trên thế giới thì nó phải có cơ chế nào đó cho phép người dùng từ các quốc gia khác nhau, với các ngôn ngữ sử dụng khác nhau có thể làm việc được với ứng dụng. Một người Anh, một người Campuchia chỉ biết tiếng Campuchia, một người Trung Quốc chỉ biết tiếng Trung Quốc liệu có thể cùng làm việc với một ứng dụng hay một trang web mà lượng thông tin nhận được, chức năng của ứng dụng là như nhau? Cổng thông tin là một ứng dụng web điển hình với mục đích là phục vụ cộng đồng đông đảo người dùng, là nơi chia sẻ nguồn thông tin cho cộng đồng thì yêu cầu trên càng trở nên cấp bách và quan trọng.
4.2 Thế nào là đa ngữ
Đa ngữ đối với các ứng dụng nói chung và các ứng dụng web nói riêng là cơ chế cho phép người dùng làm việc với ứng dụng chọn ngôn ngữ hiển thị phù hợp với mình:
Chuyển đổi ngôn ngữ biên tập
Hình 12 . Lựa chọn ngôn ngữ
Khi lựa chọn ngôn ngữ thì thông tin hiển thị của ứng dụng sẽ được hiển thị trong các ngôn ngữ được chọn.
4.3 Phân loại đa ngữ
Đa ngữ đối với các ứng dụng web là cơ chế cho phép người dùng chọn ngôn ngữ hiển thị, làm việc phù hợp với mình
Đa ngữ đối với các website và cổng thông tin ngày nay được chia làm 2 loại:
Đa ngữ về giao diện
Đa ngữ về giao diện là cơ chế đa ngữ cho phép chúng ta thay đổi ngôn ngữ hiển thị của giao diện theo lựa chọn của người dùng:
Hình 13. Đa ngữ giao diện
Đa ngữ về nội dung
Đa ngữ nội dung là cơ chế đa ngữ cho phép chúng ta thay đổi ngôn ngữ hiển thị của phần nội dung theo lựa chọn của người dùng:
Hình 14. Đa ngữ nội dung
Khi chúng ta xây dựng được cơ chế đa ngữ nội dung thì chúng ta có thể đa ngữ giao diện luôn một cách khá đơn giản.
4.4 Tại sao cần phải đa ngữ cả giao diện và nội dung
Ngày nay thông tin được chia sẻ trên internet và con người từ khắp nơi trên thế giới đều có thể truy cập và chia sẻ nguồn thông tin này. Mỗi người ở một quốc gia và biết một thứ tiếng khác nhau chính vì vậy mà các website hoặc cổng thông tin cần phải có cơ chế sao cho bất cứ ai từ bất kỳ quốc gia nào, biết bất cứ ngôn ngữ nào cũng có thể đọc được thông tin từ các website hay cổng thông tin đó.
Vậy thì làm thế nào để có thể đáp ứng được yêu cầu đó? Một website hay cổng thông tin đáp ứng được những yêu cầu trên gọi là các website hay cổng thông tin đã được đa ngữ. Hiện nay phần lớn các website, cổng thông tin đã ít nhiều tích hợp được cơ chế đa ngữ tức là cho phép người dùng lựa chọn ngôn ngữ hiển thị phù hợp với ngôn ngữ mà mình biết. Tuy nhiên các website hay cổng thông tin này chỉ đáp ứng được đa ngữ về mặt giao diện. Khi chọn ngôn ngữ thì người dùng chỉ biết được phần người ta đang xem là phần gì mà không biết được nội dung của nó là gì vì nội dung của nó không được thay đổi theo ngôn ngữ được chọn. Điều này rất bất tiện và không hợp lý, nó làm giảm tính mở và khả năng quảng bá thông tin. Nhu cầu đa ngữ cả về giao diện và nội dung là rất cấp thiết và rất thực tế tuy nhiên một website hay cổng thông tin như thế nào thì đa ngữ được và cơ chế đa ngữ như thế nào còn là một câu hỏi rất hóc búa đối với những nhà thiết kế và phát triển ứng dụng web.
4.5 Yêu cầu đối với một giải pháp đa ngữ
Khi đưa ra một giải pháp đa ngữ thì có rất nhiều yêu cầu cần phải giải quyết. Những yêu cầu này một khi giải quyết được triệt để thì mới có một giải pháp đa ngữ thực sự, toàn diện. Các yêu cầu này bao gồm:
Yêu cầu về lưu trữ dữ liệu:
Cơ chế lưu trữ phải đảm bảo lưu đúng dữ liệu cho từng ngôn ngữ khác nhau
Yêu cầu về trích rút và hiển thị dữ liệu:
Dữ liệu khi được trích rút và hiển thị thì phải đảm bảo tuân thủ đúng theo ngôn ngữ được chọn, dữ liệu trích rút ra phải đúng như dữ liệu lúc lưu trữ
Yêu cầu về tìm kiếm sắp xếp dữ liệu:
Hệ thống phải đảm bảo cơ chế tìm kiếm và sắp xếp thoả mãn được với tất cả các ngôn ngữ hỗ trợ
Những yêu cầu này là rất quan trọng và nó là thiết yếu khi xây dựng một giải pháp đa ngữ. Nếu giải quyết được những yêu cầu này một cách tối ưu thì bạn sẽ có một giải pháp đa ngữ tối ưu.
4.6 Khó khăn gặp phải khi giải quyết bài toán đa ngữ
Như trên đã trình bày, khi giải quyết bài toán đa ngữ ta phải thoả mãn được các yêu cầu nói trên. Trong thực tế khi giải quyết những yêu cầu nói trên thì chúng ta gặp phải rất nhiều khó khăn.
Hai yêu cầu đầu tiên: yêu cầu về lưu trữ dữ liệu, yêu cầu về trích rút và hiển thị dữ liệu thì dễ giải quyết hơn tuy nhiên lại chỉ dễ giải quyết ở khâu định dạng (format) chứ cơ chế lưu trữ và trích rút ra làm sao lại là một vấn đề khó khăn. Cơ chế lưu trữ phải đáp ứng được yêu cầu về tốc độ thực hiện, tính toàn vẹn dữ liệu, điều này là khó khăn và vô cùng quan trọng trong việc giải quyết vấn đề đa ngữ nội dung (sẽ xem xét kỹ hơn trong phần giải quyết đa ngữ nội dung ở phần sau)
Yêu cầu thứ ba: yêu cầu về tìm kiếm và sắp xếp dữ liệu thì thực sự là một vấn đề khó khăn. Mỗi ngôn ngữ có một bộ chữ khác nhau, cách sắp xếp khác nhau. Các ngôn ngữ này có những cách sắp xếp khác với cách sắp xếp của Unicode đối với những từ được sắp xếp. Có những ngôn ngữ mà có những charset mà có nhiều phần Unicode không hỗ trợ.
Tất cả những vấn đề này chúng ta cần phải giải quyết đối với bất cứ ngôn ngữ nào khi muốn đa ngữ ngôn ngữ đấy đối với hệ thống.
4.7 Thực tại về đa ngữ của Zope-Plone
Hiện tại Zope cũng đã có cơ chế đa ngữ tuy nhiên lại chỉ thực hiện được đa ngữ về mặt giao diện, điều này đem lại một số bất tiện cho những ứng dụng portal phát triển trên Zope bên cạnh những điểm mạnh của nó.
Zope có hai product (plug-in) được xây dựng trên Plone đảm nhận việc đa ngữ là:
PlacelessTranslationService
Trong java chúng ta thực hiện đa ngữ giao thông qua “Locale” với việc sử dụng file “Resouces.properties” cho từng ngôn ngữ thì trong Zope (sử dụng python based script language và python language) thực hiện đa ngữ dựa trên chuẩn “I18N” - một chuẩn đa ngữ với việc sử dụng các “.po files”. “.po files” cũng như các “Resources.properties” files đối với từng ngôn ngữ, chúng chứa các cặp thông tin:
message_id: id của message giao diện cần đa ngữ
message_string:nội dung của message giao diện trong ngôn ngữ tương ứng
PlacelessTranslationService quản lý và tham chiếu các “.po files”
PlacelessTranslationService lấy ra “language_code” và tham chiếu đến “.po file” tương ứng
PlacelessTranslationService thông qua API của ZPT (Zope Page Template) để tham chiếu đến các Zope page tìm ra tất cả những “i18n label” và “message_id” đặt trong đó tiếp theo sẽ lấy phần “message_string” tương ứng trong “.po file” và thay vào phần nội dung được đặt trong “i18n label”. Kết quả ta đã có đa ngữ giao diện cho Zope tuy nhiên với việc sử dụng một mình PlacelessTranslationService thì việc đặt “language_code” phải đặt trong “browser setting” của trình duyệt, điều này là rất bất tiện cho người dùng - những người có am hiểu không sâu về tin học.
PloneLanguageTool
Để giải quyết những khó khăn gặp phải khi sử dụng Placelesstranslation Service thì PloneLanguageTool được phát triển. PloneLanguageTool cung cấp cho ta giao diện đồ hoạ ngay trong Zope để thực hiện các công việc sau:
Đặt “language_code” và thực hiện việc truyền và lưu trữ nó trong: cookie, url, browser
Đặt “default language_code” cho portal site
Đặt chế độ “fall back” - chuyển sang một ngôn ngữ chỉ định khi “.po file” không tồn tại
Dưới đây là minh hoạ cơ chế đa ngữ giao diện trong Zope-Plone:
PloneLanguage
Tool
Placless
Translation
Service
.po files
msg_id : msg_str
Cookie
URL
Browser
Language selector
msg_id : msg_str
msg_id : msg_str
msg_id : msg_str
msg_id : msg_str
translation
getLanguage()
language_code
language_code
language_code
get .po file
select language
enter language
ZPT API
editor
user
Hình 15. Cơ chế đa ngữ trong Zope-Plone
4.8 Kiến trúc phân cấp hướng đối tượng của Zope và khả năng đa ngữ nội dung, giao diện
Tất cả các thành phần trong Zope đều là các đối tượng, từ những thành phần cao nhất cho đến những thành phần thấp nhất:
Hình 16. Kiến trúc phân cấp hướng đối tượng
Trong kiến trúc trên đây sở dĩ phần tử trên cùng là “Plone root” là vì Plone chính là phần CMS, Portal của Zope như đã trình bày trong phần kiến trúc của Plone. Plone root là một đối tượng chứa những thông tin, thông số của portal và có các phương thức – method, hành vi – behavior để triệu gọi, yêu cầu các đối tượng ở mức dưới thực hiện những tác vụ cụ thể.
Có hai lớp đối tượng ở mức tiếp theo mức đỉnh là:
Portal Objects
Portal Objects hay còn gọi là Control Objects là những đối tượng được dùng để điều khiển, duy trì hoạt động của portal. Các đối tượng này cũng có các phương thức, hành vi, thuộc tính cho chúng ta điều khiển, duy trì hoạt động của portal
Content Objects
Content Objects là những đối tượng của Zope đảm nhậ
Các file đính kèm theo tài liệu này:
- DAN293.doc