Viết các portlet hỗ trợ đa ngôn ngữ

Bài viết trình bày thao tác cơ bản để viết các portlet đa ngôn ngữ trong Liferay Extension Environment

1 - Nguyên tắc cơ bản:

Không bao giờ viết các Key liên quan đến ngôn ngữ (title, message, label) một cách trực tiếp trong file jsp. Bạn hãy lưu tất cả các Key này trong file Language-ext.properties (đối với ngôn ngữ là English)

Đối với các ngôn ngữ khác bạn cũng lưu trong các file Language-ext_countrycode.properties (Lưu ý: dấu gạch dưới, underscore, chứ không phải dấu trừ, minus).
See also:ISO 3166 Codes (Countries)

Ví dụ cụ thể đối với một số ngôn ngữ thông dụng:

  • tiếng Việt: Language-ext_vn.properties
  • tiếng Đức: Language-ext_de.properties
Các file Language_ext.properties được lưu trữ trong thư mục: liferay\ext\ext-ejb\classes\content



2 - Format của file Language_ext.properties
Các file .properties có format vô cùng đơn giản như sau:
Key = value

Comment (ghi chú) bắt đầu bằng dấu thăng #

Ví dụ 1: File Language_ext.properties (English)
## This is the comment
## Portlet names
##

javax.portlet.title.EXT_1=Reports

## This is the comment
## Messages
##

view-reports=View Reports
product=Product


Ví dụ 2: File Language_ext_vn.properties (tiếng Việt)
## Đây là phần ghi chú
## Tên Portlet
##

javax.portlet.title.EXT_1=Báo cáo

## Đây là phần ghi chú
## Messages
##

view-reports=Xem báo cáo
product=Sản phẩm


Lưu ý: phần value không đặt trong dấu quote ("" hoặc '')



3 - Sử dụng (key,value) như thế nào trong file JSP:
Bây giờ chúng ta đã có danh sách các cặp (key,value) trong file .properties, mỗi lần cần lấy giá trị của Key trong file JSP, bạn sử dụng lệnh sau:

<%=LanguageUtil.get(pageContext, "Ở đây bạn đặt KEY")%>


Ví dụ 3: Tạo 1 Button View Report trong file JSP

<input class="portlet-form-button" type="submit"

value="<%=LanguageUtil.get(pageContext,"view-report")%>">

Chúc thành công !

(Xem chi tiết)

Giới hạn danh sách ngôn ngữ được hỗ trợ

Theo mặc định thì Liferay hỗ trợ rất nhiều ngôn ngữ, trong đó có cả tiếng Việt :).

Trong khi xây dựng website, thực sự bạn khó có thể hỗ trợ được hết các ngôn ngữ trong danh sách đó, sức người có hạn mà ;). Đa số chúng ta đáp ứng được việc hỗ trợ tiếng Anh và tiếng Việt. Trong khi hỗ trợ được có 2 ngôn ngữ mà lại để danh sách một tá quốc kỳ các nước ở Footer như thế thì không sợ bị người ta nói là "treo đầu dê bán thịt chó" sao. Vậy làm cách nào để giới hạn danh sách này lại.

Lúc đầu tôi thấy danh sách các lá cờ nằm ở Footer, nên cố gắng tìm code có liên quan ở file template của theme. Vô ích! Thực sự chỉ cần chỉnh sửa trong file portal-ext.properties là xong.

Bước 1:
Mở file ext\ext-ejb\classes\portal-ext.properties


Bước 2:
Chèn đoạn code sau vào cuối file (or anywhere)

##
## Languages and Time Zones
## Supported Language: English (US), French, German, Spanish
locales=en_US,fr_FR,de_DE,es_ES


Bước 3:
Stop Tomcat, chạy CMD, rồi gõ lệnh sau

C:\>cd C:\Projects\liferay\ext
C:\Projects\liferay\ext>ant clean deploy

Bước 4: Start Tomcat, kiểm tra kết quả trên browser:




Chúc bạn thành công !

(Xem chi tiết)