Cách thức việt hóa giao diện

Một phần của tài liệu Tăng cường tính năng của internet explorer bằng kĩ thuật plug ins (Trang 40 - 84)

Chương 3 Phân Tích Đề Tài

3.1 Phân tích nội dung

3.1.1 Cách thức việt hóa giao diện

Trước tiên chúng ta sẽ tìm hiểu về cách việt hóa giao diên.

Câu hỏi đặt ra : tại sao phải việt hóa giao diện ?

Ngày nay khi mà nhu cầu cuộc sống tăng cao, hầu như mọi thành phần đều sử dụng chương trình và phần mềm máy tính. Thế nhưng đa số các phần mềm đang sử dụng đề xuất phát từ nước ngoài ví dụ như : Microsoft Word, Exel, hay các phần mềm kế toán…vvv. Vì phần phần mềm phục vụ có nhiều thành phần như : nhân viên văn phòng, sinh viên hay các trường phổ thông.

Chính vì vậy, mà nhu cầu việt giáo giao diện các phần mềm là một nhu cầu thực tế cần có nhằm phục vụ cho người sử dụng. khi ta làm việc với một phần mềm mang ngôn ngữ của ta sẽ dễ dàng và thân thiện hơn nhiều so với ngôn ngữ khác, từ đó ta có thể tìm hiểu tất cả các tính năng và tiện ích mà phần mềm cung cấp. đôi khi cũng có những suy nghĩ ngược lại, một số người cho rằng dùng phần mềm tiếng anh thì dể sử dụng hơn. Nhưng dù sao đi nữa thì đó cũng là lý do mà chúng ta phải tìm hiểu về các giải pháp để việt hóa giao diện của một phần mềm hay một ứng dụng nào đó.

Cụ thể hơn với yêu cầu đề tài là việt hóa giao diện Internet Explorer.

Thật may khi chúng ta đã liên kết với tập đoàn Microsoft, và Microsoft cũng đã cho ra hệ điều hành windows tiếng việt. trong đó Microsoft đã chỉ dẩn các file dll để tham chiếu tới hệ thông ngôn ngữ, trong đó có tiếng việt của chúng ta. Đó là là các file: acctres.dll, browselc.dll, inetcplc.dll, inetres.dll, mshtmler.dll, msidntld.dll, msoeres.dll, shdoclc.dll.

SVTH: Trần Thanh Tùng Trang 40/84 Đây là những file hệ thống của hệ điều hành windows. Vì Internet Explorer và windows Explorer cùng tham chiếu đến các file này nên khi ta việt hóa giao diện Internet Explorer thì Windows Explorer cũng bị ảnh hưởng. vấn đề còn lại của chúng ta là làm sao copy các file này vào thư mục hệ thống sau đó khởi động lại IE là xong.

Tóm lại: khi chúng ta muốn việt hóa một phần mềm nào đó, đầu tiên chúng ta chỉ cần tìm được tập tin chứa hệ ngôn ngữ của chương trình đó và thay đổi nó. Ví dụ như Fire Fox chẳng hạn, ta chỉ cần lựa chọn hệ ngôn ngữ tiếng việt trong tập tin ngôn ngữ là có thể việt hóa được firefox, đó là phần mềm hổ trợ tiếng việt, còn những phần mềm không hổ trợ tiếng việt ta phải thay thế tập tin đó bằng tập tin chứa hệ ngôn ngữ, trong đó có tiếng việt.

3.1.2 Viết Plug-Ins Đăng Ký Sự Kiện Với Internet Explorer

Thực chất của cơ chết Plug-Ins là tạo ra một đối tượng chờ đợi và lắng nghe những thông điệp được thiết lập cho nó và rồi nó sẽ thực thi. Nó hoạt động như mô hình COM. Trong đó Internet Explorer là COM server còn chương trình Plug-ins của chúng ta là COM client.

Chúng ta đã tìm hiểu về kiến trúc IE trong chương 2 và thấy rằng Internet Explorer được xây dụng theo kiến trúc nhiều thành phần, mỗi thành phần là một đối tượng COM, vì vậy chúng ta có thể can thiệp vào IE, bắt các sự kiện phục vụ nhu cầu của ta.

Để đăng ký sự kiện chúng ta phải kế thừa giao diên IObjectWithSite, khi chúng ta kế thừa từ giao diện này chúng ta sẽ nhận được con trỏ site trong phương thức SetSite của giao diện IObjectWithSite.

Giao diện IObjectWithSite là giao diện mà IE cung cấp để chúng ta có thể giao tiếp với IE, tùy nhu cầu mà ta bắt lấy các sự kiện của IE.

Đây là GUID của giao diện IObjectWithSite được đăng ký trong Registry :

SVTH: Trần Thanh Tùng Trang 41/84 Danh sách một số sự kiện Internet Explorer 5 hổ trợ :

SVTH: Trần Thanh Tùng Trang 42/84 Với yêu cầu của đề tài chúng ta chỉ quan tâm đến sự kiện DocumentComple. Đây là sự kiện xảy ra sau sự kiện BeforeNavigate2, DownloadBegin, DownloadComplete và NavigateCOMplete2.

Ngoài việc kế thừa giao diện IObjectWithSite chúng ta phải đăng ký với hệ thống, cụ thể là registry bằng một GUID nhằm chỉ định đối tượng COM của chúng ta, để khi IE load nó biết phải tìm chương trình của chúng ta ở đâu. Chi tiết của việc đăng ký sẽ được nói đến trong phần hiện thực đăng ký plug-ins.

3.1.3 Phân Tích Các Thức Duyệt Trang HTML

Hiện nay có rất nhiều trình duyệt web như : Netscep, Mozilla Firefox, Internet Explorer …vv . Tất cả các trình duyệt web đều hiển thị được nội dung trang HTML, tại sao vậy, đơn giản là vì cấu trúc trang HTML được thiết lập theo một dạng chuẩn nhất định, và được w3c chứng nhận.

Đây là trang HTML đơn giản nhất :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">

<head>

<title>Title here</title>

<meta http-equiv="cóntent-type" cóntent="text/html;

charset=ISO-8859-1" />

<!-- other head information here -->

</head>

<body>

<!-- other body information here -->

</body>

SVTH: Trần Thanh Tùng Trang 43/84

</html>

Vì trang HTML được xây dụng theo cấu trúc nên ta có thể duyệt theo cấu trúc thẻ tag của trang. Tùy thuộc vào nhu cầu mà ta có các cách duyệt khác nhau. Theo yêu cầu đề tài chúng ta sẽ có hai cách duyệt trang như sau : - Duyệt trang theo cấu trúc tag cha con bắt đầu từ BODY.

- Duyệt trang theo kiến trúc DOM.

3.1.3.1 Duyệt Trang Theo cấu trúc thẻ Tag Cha Con:

Từ đối tượng WebBrowser mà IE cung cấp ta lấy các tag con của nó, với mỗi tag con ta lại duyệt tất cả các phần tử con của tag con đó cứ như thế cho đến tag cuối cùng.

Các đối tượng hổ trợ cơ chế duyệt :

SVTH: Trần Thanh Tùng Trang 44/84 - Đối tượng htmlelement: Một đối tượng htmlelement tương ứng với một tag trong tài liệu html.

- Thuộc tính innerhtml kiểu string là đoạn html nằm ở bên trong thẻ.

- Thuộc tính outerhtml kiểu string là đoạn html nằm bên trong thẻ cộng với cả thẻ của nó.

- Thuộc tính tagname kiểu string là tên của tag.

- Thuộc tính childrent là một đối tượng htmlelementcóllection, đối tượng htmlelementcóllection là một tập hợp chứa các phần tử htmlelement tập hợp này chỉ cung cấp phương thức để duyệt, không cho phép chèn, chỉnh sửa. Thuộc tính childrent chứa các thực thể con htmlelement.

Xét đoạn html như sau:

<p align=”center”>click here<br><a href=”http://abc.COM”>

website abc</a></p>

Theo đoạn html trên thì thẻ cha lớn nhất là thẻ p. Bên trong thẻ p gồm các thẻ con như br và thẻ a.

Theo đoạn html trên thì ta có mô hình các phần tử của nó thể hiện dưới dạng đối tượng htmlelement như sau:

- Thẻ br: tương ứng với một thể hiện của đối tượng htmlelement với các thuộc tính như sau:

• Innerhtml: null

• Outerhtml: “<br>”

• Tagname: “br”

- Thẻ a: tương ứng với một thể hiện của đối tượng htmlelement với các thuộc tính như sau:

• Innerhtml: “website abc”

• Outerhtml: “<a href=”http://abc.COM”> website abc</a>”

• Tagname: “a”

- Thẻ p: tương ứng với một thể hiện của đối tượng htmlelement với các thuộc tính như sau:

• Innerhtml: “click here<br><a href=”http://abc.COM”> website abc</a>”

SVTH: Trần Thanh Tùng Trang 45/84

• Outerhtml: “<p align=”center”>click here<br><a href=”http://abc.COM”> website abc</a></p>”

• Tagname: “p”

• Childrent: là một thực thể htmlelementcollection, thực thể này có chứa 2 thực thể gồm thực thể htmlelement với tagname là br và thực thể htmlelement với tagname là a.

• Đối tượng htmldocument: đối tượng này có một thuộc tính là all là một đối tượng kiểu htmlelementcollection lưu trữ tất cả các tag trên trang tài liệu html.

Ta cũng có thể duyệt trang tài liệu một cách đơn giản bằng cách lấy tập hợp All của đối tượng htmldocument, rồi duyệt từng phần tử trong tập hợp All đó. Nhưng cách duyệt ấy không đáp ứng được yêu cầu của đề tài, vì chúng ta phải lấy nội dụng thẻ tag theo đúng cấu trúc, rồi chuyển đổi nó.

Cách duyệt này chỉ hiệu quả khi ta dùng nó vào những mục đích liên quan đến thẻ tag, riêng nhu cầu của chúng ta là lấy nội dung theo đúng cấu trúc để chuyển mã. Vì vậy ta không dùng giải pháp này.

3.1.3.2 Duyệt Trang HTML Theo Kiến Trúc DOM

Các đối tượng phục vụ duyệt trang theo kiến trúc DOM :

- HTMLDomcument.

Đối tượng nắm giữ trang HTML, nó chứa tất cả các tag trong trang.

- IHTMLDomNode .

Đối tượng này cung cấp khả năng truy cập đến tất cả các Node trong kến trúc DOM. Ta có thể thêm, xóa, sửa từng Node mà nó duyệt qua đồng thời nhận được thuộc tính của Node mà nó đang duyệt hay các node con của nó.

Các thuộc tính của đối tương IHTMLDomNode :

- AppendChile : nối một phần tử như là con của đối tượng.

- Atributes : nhận về một tập hợp các thuộc tính của đối tượng.

- ChildNodes : nhận về một tập hợp các đối tượng HTML Element hoặc các đối tượng TextNode là cón của đối tượng hiện hành . - CloneNode : copy một đối tượng từ một tài liệu có cấu trúc, tức

copy đối tượng mà vẫn giữ nguyên cấu trúc các phần tử con.

SVTH: Trần Thanh Tùng Trang 46/84 - firstChile : nhận về một phần tử con, đây là phần tử có trong tập

hợp mà thuộc tính ChildNodes lấy về.

- hasChileNodes : hỏi xem phần tử này có các phần tử con không, nếu có trả về true, không trả về false.

- insertBefore : chèn một phần tử vào tài liệu mà vẫn giữ nguyên cấu trúc, đồng thời phần tử chèn vào là phần tử cha của đối tượng.

- lastChile : đây là phần tử con cuối cùng của đối tượng.

- NextSibling : nhận được phần tử kế tiếp của phần tử cha.

- NodeName : trả về tên thực sự của node.

- NodeType : trả về một trị số đã được quy định trước ví dụ ; node text thì trị trả về là 3, nodehtml thì trị trả về là 1, #COMment tức chú thích thì trị trả về là 8…vvv.

- NodeValue : thiết lập hoặc nhận giá trị của Node.

- ParentNode : nhận được node cha của đối tượng, theo kiến trúc của tài liệu.

- previousSibling : nhận được node trước của node cha của đối tượng.

- RemoveChild : gở bỏ một node của đối tượng.

- RemoveNode : gở bỏ đối tượng ra khỏi cấu trúc tài liệu.

- ReplaceChild : thay thế một node con với một node tương ứng.

- ReplaceNode : thay thế đối tượng bằng một node khác tương ứng.

- swapNode : thay đổi vị trí hai đối tượng trong kiến trúc thứ bậc của tài liệu.

Trang HTML được xây dụng trên kiến trúc DOM, tức từng thẻ tag, từng đoạn nội dung riêng lẻ trong từng thẻ tag đều được xem như là một đối tượng, nói cách khác tất cả các thành phần trong trang HTML đều được xem là đối tượng, từ đó ta có thể duyệt trang theo cấu trúc cha con, và mỗi phần tử là một đối tượng nên ta dễ dàng thao tác với các đối tượng như SET hay GET đối tượng , cũng như từng thuộc tính của đối tượng.

3.1.4 Chuyển nội dung trang HTML san mã Unicode : 3.1.4.1 Chuyển đổi nội dung Trang

SVTH: Trần Thanh Tùng Trang 47/84 Khi ta duyệt nội dung trang HTML theo kiến trúc DOM ta sẽ lấy được từng đối tượng Text với thuộc tính nodetype là 3 , từ đó ta tiến hành chuyển mã.

Câu hỏi đặt ra, khi ta chuyển mã thuộc tính text của một đối tượng nó có tự động cập nhật cho đối tượng đó không hay phải gán lại thuộc tính đó.

Thật may là khi ta thay đổi thuộc tính của một đối tượng thì nó tự động thay đổi theo trong nội dung trang.

3.1.4.2 Chuyển Font trong thẻ tag cuản Trang HTML

Một vấn đề liên quan đến chuyển mã : liệu rằng khi ta chuyển mã nội dung mà không chuyển mã font của nó thì nó có hiển thị đúng không. Từ ứng dụng cho thấy khi ta chuyển mã nội dung trang mà không chuyễn mã của font tương ứng của bản mã đó nó sẽ không thể hiển thị đúng.

Một cách khác : khi chúng ta tiến hành chuyển mã nếu ta chuyển mã rồi lấy những ký tự đặc biệt như ơ, ô , ê .. chuyển thành mã ký tự, tức đưa về dạng mã như Macromedia Dreamweaver làm thì không cần chuyển font tương ứng cũng hiển thị đúng, đó là cách mà Macromedia Dreamweaver làm.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Cóntent-Type" cóntent="text/html; charset=iso-8859-1"

/>

<title>bai test</title>

</head>

<body>

t&ocirc;i c&oacute; ngh&Scaron; nghi&OElig;p &deg;n &Ccedil;&Icirc;nh.

VPS

</body>

</html>

SVTH: Trần Thanh Tùng Trang 48/84 Một rắc rối khác trong quá trình chuyển font chữ của trang HTML.

Theo nội dung trang HTML thì chỉ tag Font mới có thuộc tính “face”, thuộc tính này chứa font name, cái mà ta cần chuyển đổi. đối với font face của tag font lại có các trường hợp cần sử lý :

- thuộc tính face chỉ chứa một tên font.

<FONT face = “VNI-Times”> nội dung .. </FONT>

- thuộc tính face chứa nhiều tên font.

<FONT face = “.VnArial, .VnAptima, .VnTimeH”> nôi dung </FONT>

- trường hợp các tên font có khoảng trắng.

<FONT face = “VPS Tieng Giang” > nội dung </FONT>

Ngoài thuộc tính face của tag font chứa tên font ta còn có thẻ Style có thuộc tính font-faminly cũng chứa tên font và các dạng tên font cũng gồm một tên và nhiều tên, rồi tên font có thể có khoảng trắng.

SVTH: Trần Thanh Tùng Trang 49/84 Thực chất tag Style là kĩ thuật nhúng CSS vào trang web để làm tăng tính tiện dụng cho trang web, bởi vì khi ta thiết lập CSS cho các phần tử thẻ tag, thì chỉ cần thay đổ tập tin CSS hay thuộc tính CSS thì tất cả các tag có quy định sẽ thay đổi theo.

Có ba dạng CSS được thêm vào trang web :

SVTH: Trần Thanh Tùng Trang 50/84 - External Style Sheets :

Đây là cách thức áp dụng một file css rời nằm ngoài trang web, ta có thể ấn định những thẻ tag với các thuộc tính ở đây. Thường External Style Sheets dùng cho toàn trang web, các thuộc tính của các thẻ tag sẽ không có giá trị nếu trong trang có định Style cho tag hay thuộc tính đó. Nói chung External Style Sheets có độ ưu tiên thấp nhất .

Cú pháp một External Style Sheets :

<link rel = “stylesheet” href=”main.css” />

Nội dung một file css :

SVTH: Trần Thanh Tùng Trang 51/84 - DoCument-Wide Style :

Đây là thẻ tag nằm trong thẻ Head, nó là một thẻ tag đặc biệt chỉ thiết lập thuộc tính cho các thẻ tag khác. Những thuộc tính được thiết lập ở đây sẽ vô hiệu hóa các thuộc tính có trong External Style Sheet của tag đó. Cú pháp cuae Document wide Style :

<Style type=”text/css” body { Font-Family : .VniArial } </Style>

- Cuối cùng là Inline Style : thuộc tính nay nhằm áp đặc lên tại vị trí thẻ tag, Inline Style là thuộc tính có độ ưu tiên cao nhất trong ba loại css. Khi một thẻ tag được add một inline css thì các loại external style sheet và Document Style Sheet đều bị vô hiệu hóa tại tag này.

Cú pháp Inline Style : <p Style= “font-family: VNI-Times”> text </p>

SVTH: Trần Thanh Tùng Trang 52/84

<h1 style="font-size: 48pt; font-family: Arial; cólor:

green;">CSS1 Inline</h1>

3.1.4.3 Nguyên lý chuyển bản mã từ bản mã tiếng việt sang mã Unicode:

Nội dung hiển thị trên trang web là những ký tự nằm trong một bản mã xác định nào đó, nếu máy có font của bản mã đó thì nó sẽ hiển thị đúng, vậy tạo sao trình duyệt có thể nhận dạng được bản mã này với bản mã khác.

Đây là mấu chối và là cốt lõi của chuyển mã ký tự. vì mỗi ký tự được thể hiện bằng một ký số ví dụ : chữ “á” theo bản mã Unicode là : E1, còn mã VNI là 61F9 còn mã TCVN là B8, mã VPS , VISCII và VIQR đều là E1. vì vậy ta dựa vào mã ký tự của từng ký tự để chuyển mã từ bản mã này san bản mã khác.( có thể đối chiếu bản mã Unicode ở chương 2).

Như cầu của chúng ta là phải đoán được chuổi văn bản chỉ định thuộc bản mã nào và tiến hành chuyển mã.

Cách thức đoán chuổi và chuyển mã :

Trước tiên chúng ta duyệt từng ký tự của chuổi văn bản tìm các ký tự đặt biệt của tiếng việt như : â, à, ă, ơ , ô , ỏ…( tức những nguyên âm có dấu hoặc mũ) bởi vì các phụ âm như c, t, h, k… là những ký tự có mã ký tự không thay đổi đối với các bản mã khác nhau.

Sau khi duyệt từng ký tự và tìm được ký tự nguyên âm ta đem so sánh mã của nó với mã kí tự trong bản mã, cứ như thế ta duyệt hết chuổi văn bản nếu bản mã nào có số ký tự nhiều nhất thì chuổi văn bản thuộc bản mã ấy.

chính vì vậy nếu ta cho một chuổi văn bản quá ngắn, hay không có các nguyên âm có dấu thì giải pháp chuyển mã có thể sai, thế nhưng khả năng xảy ra là rất thấp vì đa số một chuổi văn bản luôn có nghĩa và có nguyên âm.

Một phần của tài liệu Tăng cường tính năng của internet explorer bằng kĩ thuật plug ins (Trang 40 - 84)

Tải bản đầy đủ (PDF)

(85 trang)