Toàn cầu hoá ứng dụng RCP Eclipse của bạn pot

15 196 0
Toàn cầu hoá ứng dụng RCP Eclipse của bạn pot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Toàn cầu hoá ứng dụng RCP Eclipse của bạn Giao diện người dùng (UI) của bạn có thể dễ dàng hỗ trợ nhiều ngôn ngữ ra sao Wei Wang, Kỹ sư phần mềm, IBM Yuan Yao Deng, Kỹ sư phần mềm, IBM Tóm tắt: Rich Client Platform (RCP) của Eclipse đang được sự chấp nhận rộng rãi trong phát triển phần mềm. Đối với các doanh nghiệp đa quốc gia, việc phân phối phần mềm hỗ trợ đa ngôn ngữ đang ngày càng trở nên quan trọng đối với các khách hàng toàn thế giới. Trong bài này, bạn hãy học cách toàn cầu hoá các phần tử giao diện người dùng (UI) trong một ứng dụng RCP, bao gồm cửa sổ, thực đơn, thanh công cụ, hộp thoại, trang chào, màn hình gây chú ý và các phần tử giao diện người dùng của Eclipse chuẩn. Ứng dụng thí dụ Hello World cùng bạn trong suốt bài này. Giới thiệu Rich Client Platform (RCP) của Eclipse có rất nhiều lợi thế, chẳng hạn phát triển nhanh, nhìn và cảm nhận tự nhiên, có khả năng mở rộng và hỗ trợ nhiều nền tảng. Nhiều doanh nghiệp đã áp dụng RCP để phát triển phần mềm của họ. Đối với doanh nghiệp đa quốc gia, phân phối phần mềm hỗ trợ nhiều ngôn ngữ đang ngày càng trở nên quan trọng đối với việc bán hàng cho khách hàng toàn thế giới. Toàn cầu hóa là một phần cấp thiết trong phát triển phần mềm của RCP. Hãy tìm hiểu cách để toàn cầu hoá giao diện đối với ứng dụng RCP bằng cách sử dụng ví dụ Hello World. Ứng dụng mẫu Ví dụ trong bài này sẽ toàn cầu hoá ứng dụng Hello World với một số chức năng đơn giản. Hình 1 là hình giao diện chính của ứng dụng Hello World của ta. Hình 1. Ứng dụng RCP Hello World Khi bạn nhấn mục Say Hello trong thực đơn File, sẽ thấy hộp thoại với "Xin chào! Đây là một ví dụ!". Khi bạn khởi động ứng dụng hoặc nhấn Welcome trong thực đơn Help, trang chào sẽ xuất hiện trong giao diện chính, cung cấp vài thông tin giới thiệu. Nhấn About Hello World từ thực đơn Help cung cấp thông tin về ứng dụng và phiên bản. Đó là về các chức năng — rất đơn giản. Ứng dụng Hello World được tạo với Eclipse phiên bản 3.4.1, dựa trên khuôn mẫu "hướng dẫn ứng dụng RCP” sau hướng dẫn từng bước của dự án trình cắm thêm. Một số mã bổ sung là cần sau khi kết thúc hướng dẫn từng bước này. Hãy tham khảo nguồn của ví dụ này, mà bạn có thể tải về. Trọng tâm của bài này là toàn cầu hóa, do đó sẽ không thảo luận về mã đối với chức năng khác. Sau khi bạn hoàn thành mã hóa Hello World, chỉ có thể hỗ trợ tiếng Anh theo mặc định. Bạn đang bổ sung hỗ trợ đa ngôn ngữ cho ứng dụng này. Các phần tử giao diện người dùng cần toàn cầu hóa bao gồm các thực đơn, thanh công cụ, hộp thoại, màn hình gây chú ý, trang chào, trình cắm thêm và thông tin sản phẩm và các phần tử giao diện người dùng Eclipse chuẩn. Bó tài nguyên chung Như với các ứng dụng Java™ khác, bạn cần phải tạo một bó tài nguyên cho các ứng dụng RCP. Trong ví dụ này, bó tài nguyên được đặt trong gói helloworld.resource và có tên là "custom". Tên tệp của bó tài nguyên phải tuân theo các bó tài nguyên của Java đặt tên theo các quy ước: <resource_name>_<Language Code>_<Country Code>.properties. Ví dụ custom_fr.properties là bó tài nguyên cho tiếng Pháp và custom_zh_CN.properties là cho chữ Trung Quốc giản thể. Xem phần Tài nguyên để có thêm thông tin về mã ngôn ngữ và mã quốc gia. Hình 2 là hình các bó tài nguyên đối với Hello World. Hình 2. Cấu trúc bó tài nguyên Các tệp bó tài nguyên chứa các cặp khóa/giá trị. Các khóa xác định duy nhất đối tượng ngôn ngữ cụ thể trong bó này. Bạn cần phải tạo một cặp khoá/giá trị cho mỗi phần tử giao diện người dùng mà bạn muốn toàn cầu hoá. Liệt kê 1 là tệp thuộc tính cho tiếng Anh. Liệt kê 1. Nội dung của tệp bó nguồn custom_en.properties MAIN_WINDOW_TITLE=Hello World MENU_FILE=&File MENU_FILE_SAY_HELLO=Say Hello MENU_HELP=&Help DIALOG_TITLE=Hello DIALOG_MESSAGE=Hello! This is a sample! Tại điểm này, bạn cần một tiện ích để đọc các bó tài nguyên. Như thấy trong liệt kê 2, bó CustomString cung cấp hai chức năng:  setBundle khởi tạo một bó tài nguyên đối tượng theo phương ngữ.  getString trả về một giá trị cho một khóa đã cho trong ngôn ngữ cụ thể. Liệt kê 2. Tiện ích để đọc bó tài nguyên (CustomString.java) public class CustomString { private static final String BUNDLE_NAME = "helloworld.resource.custom"; private static ResourceBundle rb = null; public static void setBundle(Locale locale) { try { rb = ResourceBundle.getBundle(BUNDLE_NAME, locale); } catch (Exception e) { rb = ResourceBundle.getBundle(BUNDLE_NAME, Locale.ENGLISH); } } public static String getString(String key) { try { String keyValue = new String(rb.getString(key).getBytes("ISO-8859-1"), "UTF-8"); return keyValue; } catch (Exception e) { return key; } } } Sau khi bó tài nguyên và tiện ích đã sẵn sàng, bạn thông báo cho ứng dụng về ngôn ngữ nào nên được sử dụng khi nó khởi chạy. Application.java là lối vào của một ứng dụng RCP. Khuyên bạn khởi tạo các bó tài nguyên trong phương thức start(). Locale.getDefault() trả về ngôn ngữ hệ thống mặc định và phương ngữ này được chuyển tới CustomString.setLocale(), như hình dưới đây. Ứng dụng sẽ khởi tạo bó tài nguyên bằng cách sử dụng phương ngữ hệ thống. Liệt kê 3. Thiết lập phương ngữ trong Application.java public Object start(IApplicationContext context) { CustomString.setLocale(Locale.getDefault()); } Bây giờ bó tài nguyên chung đã sẵn sàng sử dụng cho toàn bộ ứng dụng. Phần tiếp sẽ giải thích cách gọi các bó tài nguyên trong giao diện người dùng. Thanh công cụ, thực đơn và hộp thoại Trong ứng dụng RCP, các lối vào thực đơn và thanh công cụ được đại diện bằng hành động. Có thể bổ sung thực đơn và thanh công cụ nhờ mã hoặc mở rộng. Ví dụ của chúng ta đăng ký các hành động của thực đơn theo mã. Trong lớp định nghĩa hành động, nhãn hành động được xác định trong trình kiến thiết theo phương thức setText(). Văn bản sẽ hiển thị như nhãn thực đơn. Như có thể thấy, văn bản bây giờ được mã hóa cứng chỉ cho tiếng Anh. Mã được thay đổi thay thế dòng chữ "Say Hello" bằng cách sử dụng bó tài nguyên trong phương thức setText() . Liệt kê 4. Thiết lập văn bản hành động trong HelloAction.java đối với thực đơn và thanh công cụ public HelloAction(IWorkbenchWindow iworkbenchwindow) { this.window = iworkbenchwindow; this.setText("Say Hello"); this.setImageDescriptor(WorkbenchImages.getImageDescriptor( IWorkbenchGraphicConstants.IMG_VIEW_DEFAULTVIEW_MISC)); // Must setId,otherwise can not leverage Register method setId("helloworld.actions.HelloAction"); window.getSelectionService().addSelectionListener(this); } /** Modified Code **/ public HelloAction(IWorkbenchWindow iworkbenchwindow) { this.setText(CustomString.getString("MENU_FILE_SAY_HELLO")); } Các hộp thoại có các mã khác nhau để hiển thị văn bản trên giao diện người dùng, nhưng phương thức toàn cầu hóa là như nhau. Bạn có thể sử dụng cùng cách tiếp cận để toàn cầu hoá các giao diện người dùng khác do mã Java tạo ra — nó không chỉ giới hạn ở thực đơn, thanh công cụ và hộp thoại. Liệt kê 5. Thiết đặt tiêu đề hộp thoại và thông báo MessageDialog.openInformation(PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getShell(), "Hello", "Hello! This is a sample!"); /** Modified Code **/ MessageDialog.openInformation(PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getShell(), CustomString.getString("DIALOG_TITLE"), CustomString.getString("DIALOG_MESSAGE")); Như vậy đến đây, việc toàn cầu hóa giao diện người dùng là tương tự như ứng dụng Java thông thường. Phần tiếp giới thiệu các đặc tính của ứng dụng RCP. Màn hình gây chú ý Màn hình gây chú ý là một hình ảnh xuất hiện trong khi ứng dụng đang được nạp. Nó thông báo cho người sử dụng là chương trình này đang được nạp và cung cấp các thông tin về ứng dụng, chẳng hạn như tên của sản phẩm và bản quyền. Thông thường màn hình gây chú ý đối với ứng dụng RCP được đặt tên là splash.bmp và ở dưới thư mục gốc của dự án trình cắm thêm. Tuy nhiên, tệp splash.bmp ở dưới thư mục gốc chỉ cho tiếng Anh. Để cung cấp các màn hình gây chú ý khác nhau theo các ngôn ngữ trong ứng dụng đa ngôn ngữ, bạn cần phải thực hiện theo các quy tắc đường dẫn của màn hình gây chú ý. Hình 3 là một ví dụ. Đặt tên thư mục gốc của dự án trình cắm thêm là <plugin-root>. splash.bmp. Nó phải được đặt vào trong bó <plugin-root>/nl/<Language Code>/<Country Code>. Ví dụ bạn cần phải đặt tệp màn hình gây chú ý đối với chữ Trung Quốc giản thể vào bó <plugin-root>/nl/zh/CN. Hình 3. Các quy tắc đường dẫn của màn hình gây chú ý Trang chào Các tính năng trang chào được cung cấp bởi trình cắm thêm org.eclipse.ui.intro. Bạn có thể xác định các trang riêng giới thiệu sản phẩm cho các khách hàng mới. Các trang Chào được hiển thị lần đầu tiên khi một sản phẩm được bắt đầu và là cách để cho người dùng biết các chức năng sản phẩm. Các trang Chào RCP bao gồm một tệp giới thiệu nội dung và các tệp của trang (HTML, hình ảnh, CSS, …). Do có thể có tập các tệp trang đối với mỗi ngôn ngữ, nên bạn cần sử dụng các introContent.xml khác nhau để trỏ đến các trang Chào khác nhau theo phương ngữ. Tệp nội dung giới thiệu được tệp plugin.xml tham chiếu. Bạn viết gọn tên tệp nội dung giới thiệu trong tệp plugin.xml bằng chuỗi ngoài. Các chuỗi ngoài được lưu trong tệp thuộc tính với quy ước đặt tên plugin_<Language_Code>_<Country_Code>.properties. Các mối quan hệ này giữa các tệp được thấy trong hình 4. Hình 4. Mối quan hệ giữa các trang Chào được toàn cầu hóa Đoạn mã trong liệt kê 6 là từ tệp plugin.xml. Biến %welcome.page được sử dụng trong thuộc tính nội dung thay vì tên tệp introContent.xml được mã hóa cứng. Tên tệp thực được đặt trong tệp thuộc tính để tệp plugin.xml có thể tìm thấy tệp nội dung tương ứng theo phương ngữ. Liệt kê 6. Phần trang Chào của tệp plugin.xml <extension point="org.eclipse.ui.intro.config"> <config introId="helloworld.intro" content="%welcome.page" id="HelloWorld.configId"> <presentation home-page-id="root"> <implementation kind="html" os="win32,linux,macosx"> </implementation> </presentation> </config> </extension> Chúng ta hãy sử dụng chữ Trung Quốc làm ví dụ. Khi người dùng khởi chạy ứng dụng Hello World trong môi trường chữ Trung Quốc, tệp plugin.xml sẽ tìm thấy tệp chuỗi ngoài chữ Trung Quốc plugin_zh_CN.properties và sẽ nhận được tên tệp theo tên khóa welcome.page trong tệp thuộc tính. Tệp nội dung [...]... của bạn, cũng cần phải toàn cầu hoá những thành phần giao diện người dùng này May mắn là Eclipse sẽ giúp giải quyết vấn đề này Hãy tải gói ngôn ngữ cho Eclipse và đặt chúng dưới thư mục của trình cắm thêm của ứng dụng RCP của bạn Các phần tử giao diện người dùng sẽ được toàn cầu hóa một cách tự động khi bạn khởi chạy ứng dụng của mình Tóm tắt Có nhiều loại phần tử giao diện người dùng trong ứng dụng RCP. .. tử giao diện người dùng trong ứng dụng RCP Bạn cần sử dụng các tiếp cận khác nhau đối với toàn cầu hoá các phần tử khác nhau của giao diện người dùng Bài này giới thiệu việc thực hiện toàn cầu hóa (G11N) của thanh công cụ, thực đơn, hộp thoại, màn hình gây chú ý, trang Chào, thông tin sản phẩm, và các phần tử giao diện người dùng Eclipse chuẩn Mặc dù ứng dụng thí dụ Hello World có chức năng rất hạn... hầu hết các phần tử giao diện người dùng Bây giờ bạn có thể xây dựng một giao diện người dùng được trợ giúp toàn cầu hóa hoàn toàn cho ứng dụng RCP của mình Mục lục  Giới thiệu  Ứng dụng mẫu  Bó tài nguyên chung  Thanh công cụ, thực đơn và hộp thoại  Màn hình gây chú ý  Trang chào  Trình cắm thêm và sản phẩm  Các phần tử giao diện người dùng Eclipse chuẩn  Tóm tắt ... = RCP Perspective product.name = \u4f60\u597d welcome.page=welcome/introContent_zh_CN.xml about.text=\u8fd9\u662f\u4e00\u4e2a\u4f8b\u5b50\n\ \n\ \u7248\u672c 1.0 Các phần tử giao diện người dùng Eclipse chuẩn Eclipse có một số phần tử giao diện người dùng mà không là một phần ứng dụng của bạn, chẳng hạn như mẹo công cụ tối đa hóa và giảm thiểu các nút cửa sổ Đối với ứng dụng giao diện người dùng của. .. có thể được toàn cầu hóa Thông tin này được lưu trong tệp plugin.xml Bạn có thể sử dụng cùng cách tiếp cận toàn cầu hóa như với trang Chào Chỉ có bó plugin.xml và plugin.properties là cần cho công việc này Tất cả các thông tin trong tệp plugin.xml có thể được đưa ra ngoài, vào bó plugin.properties Liệt kê 9 Phần thông tin về sản phẩm của tệp plugin.xml ... Bằng cách sử dụng tệp plugin.properties trước đây, bạn bổ sung hai thuộc tính: product.name và about.text Giá trị của thuộc tính product.name được thấy trên tiêu đề cửa sổ và thực đơn About Giá trị của about.text được hiển thị khi bạn mở hộp thoại About Liệt kê 10 plugin.properties #Properties file for HelloWorld Bundle-Name = HelloWorld Plug-in perspective.name = RCP Perspective welcome.page=welcome/introContent.xml...introContent_zh_CN.xml của chữ Trung Quốc sẽ được sử dụng, như thấy trong liệt kê dưới đây Liệt kê 7 Tên tệp nội dung giới thiệu trong plugin_zh_CN.properties #Properties file for HelloWorld Bundle-Name = HelloWorld Plug-in perspective.name = RCP Perspective product.name = Hello World welcome.page=welcome/introContent_zh_CN.xml Bạn có thể thấy cách tệp introContent_zh_CN.xml... có thể thấy cách tệp introContent_zh_CN.xml trỏ đến trang Chào bằng chữ Trung Quốc ở định dạng HTML Tệp welcome_zh_CN.html là tệp HTML với thông tin giới thiệu sản phẩm bằng chữ Trung Quốc Người sử dụng ứng dụng trong hệ điều hành chữ Trung Quốc sẽ thấy trang Chào bằng chữ Trung Quốc Liệt kê 8 Trang Chào được thiết lập bằng tệp introContent_zh_CN.xml ... tệp thuộc tính chứa ký tự không thuộc bảng ASCII, chẳng hạn tên sản phẩm hoặc văn bản About, bạn cần chuyển tệp từ bảng mã nguyên thủy sang mã ASCII với bộ mã Unicode escape \bin\native2ascii có thể được dùng để kết thúc việc chuyển đổi Đối với các bó tài nguyên chữ Trung Quốc plugin_zh_CN.properties, bạn cần chuyển đổi Sau khi chuyển đổi, plugin_zh_CN.properties trông giống như liệt kê 11 Liệt . giới. Toàn cầu hóa là một phần cấp thiết trong phát triển phần mềm của RCP. Hãy tìm hiểu cách để toàn cầu hoá giao diện đối với ứng dụng RCP bằng cách sử dụng ví dụ Hello World. Ứng dụng. bài này sẽ toàn cầu hoá ứng dụng Hello World với một số chức năng đơn giản. Hình 1 là hình giao diện chính của ứng dụng Hello World của ta. Hình 1. Ứng dụng RCP Hello World Khi bạn nhấn. dưới thư mục của trình cắm thêm của ứng dụng RCP của bạn. Các phần tử giao diện người dùng sẽ được toàn cầu hóa một cách tự động khi bạn khởi chạy ứng dụng của mình. Tóm tắt Có nhiều

Ngày đăng: 07/08/2014, 10:22

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan