<![CDATA[Latest posts for the topic "Ứng dụng đa ngôn ngữ - Việt hóa bằng Reshack"]]> /hvaonline/posts/list/23.html JForum - http://www.jforum.net Ứng dụng đa ngôn ngữ - Việt hóa bằng Reshack /hvaonline/posts/list/33646.html#206863 /hvaonline/posts/list/33646.html#206863 GMT Việt hóa =Reshack /hvaonline/posts/list/33646.html#206864 /hvaonline/posts/list/33646.html#206864 GMT Việt hóa =Reshack /hvaonline/posts/list/33646.html#206867 /hvaonline/posts/list/33646.html#206867 GMT Việt hóa =Reshack Bảng mã: Một số ngôn ngữ có thể dùng bảng mã MBCS (multibyte character set) hoặc Unicode (2 bytes) để hiện thị (ví dụ Tiếng Việt, Trung, Nhật), một số ngôn ngữ bắt buộc phải dùng Unicode (2 byte) để hiện thị đầy đủ kí tự. Do vậy tùy vào ngôn ngữ cần hỗ trợ mà chọn char set phù hợp khi thiết kế ứng dụng. - Hiển thị giao diện: Là nơi người dùng nhận thấy đầu tiên, bao gồm các chữ thể hiện trên các control, menu (bar/popup), message box; trong các hình ảnh vẽ vời được thiết kế có yếu tố ngôn ngữ trên đó. Có 1 số nguyên tắc cơ bản sau: + Thường khi vẽ hình (logo, banner, ...) cần tránh dùng chữ viết trong đó để không tốn công thiết kế riêng cho từ ngôn ngữ. + Các câu chữ ở trên cần đặt trong 1 nguồn dữ liệu riêng (file text - INI/XML bản chất đều là text nên đều được, miễn sao tiện cho việc lập trình - hoặc Resource DLL trong Windows) để tiện việc chuyển ngữ và lập trình để tải các câu chữ này hiển thị ở nơi phù hợp. Dùng file text sẽ tiện ở chổ dễ chuyển ngữ, không phải biên dịch lại ứng dụng hoặc thư viện sau khi chuyển ngữ, nhưng sẽ có nguy cơ dễ bị người dùng can thiệp sửa đổi không phù hợp làm ứng dụng hoạt động không đúng. Dùng Resource DLL chứa toàn bộ tài nguyên của ứng dụng trong 1 thư viên binary giúp bảo vệ khỏi người dùng cuối, nhưng khi chuyển ngữ phức tạp hơn và phải biên dịch lại thư viên cho từng ngôn ngữ. + Ngoài ra, giao diện cũng cần quan tâm đến yếu tố đặc thù riêng ví dụ tiếng Trung Quốc, Ả Rập có thể đọc tự phải sang trái (Right to left) mà hiệu chỉnh thuộc tính để hiện thị và xử lý đúng. + Chú ý phần Ngữ pháp khi chuyển đổi giữa các ngôn ngữ, đặc biệt khi có nhu cầu ghép nối các chuỗi để hiện thị. Ví dụ chuỗi "Tên đăng nhập '%s' đã tồn tại" khi chuyển sang tiếng khác có thể không đơn thuần dịch riêng đoạn "Tên đăng nhập" và "đã tồn tại" ghép lại là đúng ngữ pháp. + Chú ý chiều dài các control bảo đảm đủ chổ chứa các chuỗi sau khi chuyển ngữ, ví dụ tiếng Anh "Nothing" rất ngắn, nhưng khi dịch sang Tiếng Việt là "Không có gì" sẽ cần nhiều chổ hơn để hiển thị đủ. + Ngôn ngữ thường được xác định khi ứng dụng bắt đầu chạy, có thể bằng cách xác định ngôn ngữ hiện tại của hệ thống (system language hay locale) mà tải ngôn ngữ phù hợp, hoặc chỉ định bắng chức năng của ứng dụng và cho phép người dùng chuyển đổi lúc đang chạy. - Nhập xuất dữ liệu: Các dữ liệu hiển thị trên các control có thể do người dùng nhập vào, hoặc tải từ cơ sở dữ liệu hoặc từ nguồn các. Các nguyên tắc cơ bản: + Luôn sử dụng các hàm (API) mang tính tổng quát (generic), đặc biệt các hàm xử lý chuỗi. Ví dụ trong C/C++ thay vì dùng "strcpy" thì dùng "_tcscpy", thay vì dùng "atoi" thì dùng "_ttoi", ... + Chú ý an toàn dữ liệu, đặc biệt với các kiểu chuỗi và số khi chuyển ngữ. Ví dụ dùng 1 buffer quá ngắn để chứa 1 chuỗi tiếng Anh có thể sẽ không đủ (dẫn đến buffer/stack overflow) sau khi chuyển ngữ. + Xác định font của control để hiện thị đúng ngôn ngữ mong muốn: font có thể tự thiết kế hoặc dùng font hệ thống có sẵn + Chuyển đổi dữ liệu khi hiển thị và khi lưu xuống cơ sở dữ liệu: cần quan tâm đến các bảng mã và kĩ thuật chuyển đổi phù hợp + Hỗ trợ các bộ gõ cho ngôn ngữ mong muốn. Vài ý kiến chia sẻ. ]]> /hvaonline/posts/list/33646.html#206901 /hvaonline/posts/list/33646.html#206901 GMT Việt hóa =Reshack /hvaonline/posts/list/33646.html#206907 /hvaonline/posts/list/33646.html#206907 GMT Ứng dụng đa ngôn ngữ - Việt hóa bằng Reshack /hvaonline/posts/list/33646.html#206919 /hvaonline/posts/list/33646.html#206919 GMT