Anh ơi, sao khi em việt hóa Reload Editor. Trên thanh menu thì hiện thị được hết ra Tiếng Việt rất đẹp còn một số chỗ thì không thể nào hiện thị đúng được. Ví dụ như phần chữ thông báo trong Dialogue box. Không phải là Dialogue box nào cũng bị hiển thị sai, một số thông báo trong Dialogue box vẫn hiển thị tiếng Việt bình thường. Em đã thử nhiều cách những vẫn không giải quyết được vấn đề này. Tại phiên bản JDK, tại Win hay tại Reload? Em không hiểu được, anh giúp em với nhé.
Hoàng Oanh dùng bộ gõ gì? Và chọn character set nào?
Mình dùng Unikey, chọn các character set khác nhau sẽ hiển thị khác nhau đấy.
Mình thử đưa ra một ví dụ về tình trạng của mình. Bạn xem thế nào nhé. (Mình vẫn chưa chuyển sang tiếng việt hết, thử chạy xem thế nào thôi).
Bạn nhìn xuống thử xem, đó đó, message ở phía dưới :" Bạn có muốn ghi đè lên không?" hòan tòan bình thường. Còn message ở trên: "Đang nhập..." thì bị hiển thị sai. Mình không hiểu tại sao cả mà cùng là hộp dialogue box. Thế mới ấm ức chứ...huhu...
Mình cũng chưa Việt hóa hết các message, nhưng mình đã thử rồi.
Dùng Unikey, nếu chọn character set là Unicode thì trong message box sẽ không hiển thị đúng tiếng Việt, mặc dù trên Menu và Title Bar thì OK.
Nếu chọn Vietnamese Locale CP 1258 thì sẽ hiển thị đúng tiếng Việt trong cả mấy trường hợp. Hoàng Oanh thử xem sao nhé.
OK, mình cũng chưa thử test hết các trường hợp. Nhưng rõ ràng là trong một số trường hợp, khi dùng Unicode hiển thị không đúng, chuyển sang Vietnamese locale CP 1258 thì hiển thị đúng. Và có trường hợp như Oanh nói, cả hai đều không được. Vậy vấn đề là ở đâu?
Oanh dùng Windows phải không? Vậy có lẽ vấn đề liên quan đến font hệ thống. Bạn thử đổi font hệ thống đi nhé. Mình đã đổi appearance font của Windows, thử một số trường hợp, thì thấy dùng Unicode hay Vietnamese locale 1285 đều hiển thị đúng. Mình đã thử trường hợp 1 mà bạn post lên-khi nhập tài nguyên (Đang nhập... Bạn có muốn ghi đè lên không?) và thấy hiển thị đúng. Không rõ là còn có exception nào nữa không?
Mình cũng chưa hiểu rõ về font nên cần thời gian tìm hiểu thêm.
Trong thời gian đó thì có lẽ chúng ta cứ thử một vài trường hợp xem sao nhỉ:
1. Giữ cố định font hệ thống, và đổi character set trong Unikey xem có những trường hợp nào không thỏa mãn.
2. Thay đổi font hệ thống ứng với từng character set trong Unikey. Mình đã thử, có một số font không bị ảnh hưởng khi thay đổi character set, nó luôn hiển thị đúng tiếng Việt.
Hic, thế này thì hơi bị lâu đấy. Phải có cách nào thông minh hơn chứ nhỉ!
Có "cao thủ" nào hiểu biết về font rồi thì cho xin vài lời chỉ giáo với!
Cám ơn và xin hậu tạ
Giờ mình sẽ thử cách của bạn Tuyên xem sao.
Thúy định phát triển Reload như thế nào? Hay tụi mình gặp nhau một bữa đi, cùng thảo luận xem nhé? Bạn thấy thế nào?
Oanh log lại xem những trường hợp nào không hiển thị được nhé, bọn mình sẽ so sánh. Mình đã nói rồi đấy, mình định tạo gói nội dung tuân theo SCORM 2004. Vẫn chỉ import tài nguyên thôi, sẽ không làm từ raw media. Sẽ cho người dùng chọn các chiến lược học tập khác nhau và xuất ra gói thôi.
Có gì Oanh email cho mình nhé. Gọi di động tốn tiền lắm! Sinh viên ta còn nghèo mà!
Chao Thuy, Oanh,
Mình đang nghiên cứu về SCORM. Mình download Reload Edittor về mà sao thiếu thư viện nhiều wá, mà download từng file rất tốn thời gian mà lại còn thiếu thư viện của org.apach.tools.
Mình được biết 2 bạn đang nghiên cứu về cách việt hóa Reload Editor. Vậy 2 bạn có thể gửi cho mình link để download trực tiếp source code, hoặc có thể thì mail attach kem theo source code cho mình theo địa chỉ: vpbinh2001@yahoo.com.
Cám ơn 2 bạn rất nhiều. Vì thời giàn quá gấp, mong các bạn giúp mình nha.
Chao anh Hung,
Cam on anh rat nhieu. Nhung em can source code de nghien cuu tren ngon ngu Java, khong phai file .jar. Vay mong anh Hung gui lai cho em link source code nha. Mong anh som gui lai cho em, em dang can gap. Cam on anh Hung.
Chào các em Oanh, Thuý, và Tuyên
Khi nhận được câu hỏi của các em, anh đã xem lại kiến trúc và hệ thống mã của Reload Editor.
Hệ thống viết bằng Java, phải nói rằng họ viết cực kì chuyên nghiệp.
Anh đã migrate mã vào trong jBuilder và thấy các lỗi các em gặp phải không phải do là bộ gõ hoặc thống số của bộ gõ tiếng Việt.
Anh đã xem một số lỗi hiển thị tiếng Việt của Oanh và thấy là đa số nguyên nhân là các font mặc định trong code không phải là font Unicode. Và anh set lại, kết quả là tốt.
Bây giờ, ai còn lỗi Việt hoá Reload hãy thông báo với anh và chỉ rõ lỗi.
Chào thân ái !
Cám ơn anh Hùng đã trả lời bọn em. Em sẽ kiểm tra lại xem.
Font mặc định được set trong class DweezilUIManager đúng không anh Hùng?
Em đã set font mặc định thành Arial Unicode MS nhưng vẫn còn có lỗi. Messages sau luôn không hiển thị được: File XML hoặc file nén (Menu File-> Mở -> dropdown list Files of type)
Chắc là phải đổi font trong mã rồi.
Em chụp màn hình và gửi lên đây, anh sẽ xem cho.
Cheers!
Nếu trong Unikey em chọn character set là Vietnamese Locale CP 1258 thì chỗ này lại hiển thị được (các thông số khác vẫn giữ nguyên).
Với kiểu chọn là Vietnamese Locale CP 1258 thì tiếng Việt có hiển thị tốt ở mọi chỗ không ngay cả những lỗi mà Oanh đã chỉ ra?
Em đã thử một số trường hợp sau với Font Windows là Arial Unicode MS và Trebuchet MS, lần lượt với các character set là Unicode và Vietnamese locale CP 1258. Trong class DweezilUIManager, set font mặc định là Arial Unicode MS.
Kết quả là Vietnamese locale CP 1258 với Arial Unicode MS cho kết quả chính xác nhất.
Bạn Hoàng Oanh đã thử những trường hợp nào không thỏa mãn? Bạn có log lại không? Nếu có thì upload lên đây nhé.
Đừng chọn Trebuchet MS mà chọn thử Verdana đi, đó là font Unicode 100% với tiếng Việt.
Good luck!
Mà em thắc mắc là Test 2b, tại sao 2 Dialog Box mà cái thì hiển thị được, cái thì không? 2 cái Dialog Box đấy có gì khác nhau không vậy?
Có lẽ phải đọc code mới biết được thôi. Tóm lại hiểu được kiến trúc của ReloadEditor tại thời điểm này vẫn là quan trọng nhất!
Đúng thế anh sửa lại font trong code đấy chứ, mọi việc hiển thị tiếng Việt đều OK, đừng sửa font bộ gõ nữa làm gì cho mất thời gian
Chỗ nào nhỉ? Em thấy nó toàn gọi font mặc định trong DweezilUIManager mà. Em đã sửa chỗ đấy rồi mà vẫn phải chỉnh font hệ thống đấy.
Thế còn chỗ nào phải sửa nữa anh?
Anh Hùng và các bạn ơi, chỉ cho mình cách tải source code của ReloadEditor tại địa chỉ http://x4l-reload.cvs.sourceforge.net/x4l-reload/editor-eclipse/ cho nhanh với, chứ mình tải từng file rất lâu. Nếu được cho mình xin đường link đến Source code ReloadEditor chuẩn SCORM 2004 (việt hóa càng tốt).
Anh hùng ơi, lần trước tải về bản Reload SCORM 1.2 thôi, đang nghiên cứu cải tiến chuẩn SCORM 2004 nhưng không kịp. Bây giờ tải về để học thôi, không còn thời gian nữa.
Nhờ Anh Hùng và các bạn giúp. Cám ơn rất nhiều.
Anh đánh giá dựa trên thiết kế của Reload Editor nhằm đạt được các yêu cầu quan trọng nhất như tạo, chỉnh sửa, đóng gói nội dung theo SCORM. Các gói và lớp được thiết kế rất khoa học, dễ mở rộng.
Hơn nữa, phong cách viết mã của họ rất chuẩn, tuân thủ nghiêm ngặt các yêu cầu viết mã với ngôn ngữ Java.
Xin chào mọi người và anh Hùng, về phần Việt hóa Reload em còn 2 chỗ nữa vẫn không tài nào việt hóa nổi. Dù cho em đã tác động được đến đối tượng đó nhưng mà vẫn không hiển thị được tiếng Việt. Em đã thử đổi size chữ và thấy có thay đổi nhưng dù cho đã dùng font Verdana, thì khi mở form ra, vẫn bị lỗi font.
Như mọi người thấy đó, em còn phần "thuộc tính, giá trị" và cửa sổ trạng thái nữa là chưa làm được. Có ai biết thì chỉ cho em với.
Chào Hoàng Oanh,
Ngoài 2 lỗi còn lại này, những lỗi bạn đã post trước đó bạn đã sửa bằng cách nào? Bạn dùng WinXP hay Win2K? JDK phiên bản nào? Và bạn dùng trình text editor nào để Việt hóa các Message?
Mình dùng WinXP, JDK 1.5.0_02, bộ gõ Unikey 3.55, Việt hóa ngay trong JBuilder, JBuilder sẽ sinh các Unicode character.
Theo release information thì JDK 1.5.0 đã hỗ trợ Vietnamese locale, nhưng mình test thử với character set Unicode trong Unikey thì vẫn còn lỗi.
Mình dùng character set Vietnamese locale CP 1258 trong WinXP thì OK, chưa thấy có lỗi nào cả, còn trong Win2K lại có một số lỗi. Lý do là vì, nếu mình không nhầm, WinXP có hỗ trợ gói Vietnamese 1258, còn Win2K thì không.
Vậy nên nếu chúng ta chưa tìm ra được giải pháp nào thì đành dùng character set 1258, hơi xấu một tẹo, và khi đi bảo vệ nhớ cài WinXP
Mình vẫn chưa giải quyết được với character set Unicode. Cuối cùng lỗi do đâu? Do cơ chế sinh mã của JBuilder hay là do bộ gõ?
Vấn đề Việt hoá của Reload Editor không nằm ở bộ gõ (miễn là bộ gõ hỗ trợ Unicode). Em chỉ cần sửa một số thông tin trong mã của Reload là OK thôi.
Em có thể hỏi Oanh sửa những chỗ nào trong mã.
Chúc thành công!
Sửa thông tin nào (dùng thuộc tính hoặc method nào), anh có thể nói luôn giùm em được không? Cám ơn anh nhiều.
Nhân tiện em muốn hỏi anh về cách mapping logical font to physical font trong file font.properties (java_installation_dir/jre/lib)?
Anh Hùng nói đúng đó Thuý à, vấn đề Việt hoá của Reload không nằm ở bộ gõ. Mình hoàn toàn sửa các lỗi Việt hoá ở trong code của Reload. Vấn đề là mình phải hiểu rõ về hệ thống của Reload để có thể biết đoạn code nào tác động đến đối tượng mà mình cần Việt hoá. Do chưa hiểu về hệ thống của Reload lắm cho nên mình phải sử dụng phương pháp mò. Mình đã sửa thêm được một lỗi nữa rồi, hiện giờ chỉ còn bị lỗi trong cửa sổ trạng thái nữa thôi. Mình đã thử đủ cách rồi nhưng mà chưa sửa được do có lệnh "System.out.println" lôi tham số trong file message.properties hiện thị ra màn hình giao diện. Thuý có cách nào khắc phục nó được không? Và mình còn muốn tất cả các thông tin mô tả các thành phần của Metadata cũng hiện thị ra được tiếng Việt nhưng mà chưa tìm ra được đoạn code chứa nó.
À, thuý đã phát triển thêm được gì cho Reload chưa. Mình định làm thêm phần Quiz nữa nhưng mà khó quá, vẫn chưa làm được mà thời gian làm đồ án sắp hết rồi. Ôi, lo lắng quá.
Mình thì lại biết rõ phải tác động đến đối tượng nào để sửa, nhưng lại chưa tìm thấy có thuộc tính nào liên quan đến việc hiển thị để sửa. Bạn đã sửa thuộc tính nào thế?
"Thông tin về các thành phần metadata", có phải ý Oanh muốn nói đến các Description khi mình click vào một item trong Manifest Pane? Các Description đó thì không nằm trong code mà nằm trong file XML.
Bạn để ý thư mục helpers, trong thư mục đó có các thư mục con (cp, md, scorm, ss). Các thư mục này đều có cấu trúc giống nhau, và chức năng cũng tương tự nhau, chỉ khác biệt là chúng dành cho những đối tượng (gói nội dung) khác nhau. Ví dụ muốn sửa description cho gói nội dung IMS thì bạn sửa trong cp/schemahelper/IMS CP Helper.xml.
Theo mình, trong editor, ngoài thư mục src có mấy thư mục đáng lưu ý nữa là schema và helpers. Reload Editor được viết theo kiểu schema-driven. Bạn đọc doc đi kèm là hiểu ngay thôi mà.
Cứ bình tĩnh thôi, chúc may mắn!
Thân mến,
Nếu nói là không liên quan đến bộ gõ thì theo mình cũng chưa chính xác.
Vietkey cũng hỗ trợ Unicode nhưng mình không thể dùng Vietkey để gõ tiếng Việt trong JBuilder được.
Có thể bộ gõ đó, hoặc ngay cả font mà mình sử dụng, chưa hỗ trợ Unicode hoàn toàn.
Vậy tại sao em đã dùng tool native2ascii của JDK để convert sang kí tự unicode mà vẫn không được?
To Oanh: Bạn thử post một ví dụ mà bạn đã sửa lên đây có được không? Cám ơn nhé.
uh, gỉa sử bạn muốn sửa toàn bộ pane General trong Tools/ Options/ General để hiện thị được tiếng Việt nhé.
Trong code ở JBuider của mình, chọn package prefs/General_PrefsPanel.java, cứ đối tượng nào mà bạn cần việt hóa thì bạn đặt font cho nó bằng lệnh: "setFont(new java.awt.Font("Verdana", 0, 11)). Ở đây, mình đặt font là Verdana.
private void constructFields() {
int x = 10;
int y = 10;
// ============ Default Open Folder ==================
JLabel label = new JLabel(Messages.getString("uk.ac.reload.editor.prefs.General_PrefsPanel.0")); //$NON-NLS-1$
label.setFont(new java.awt.Font("Verdana", 0, 11));
add(label, new XYConstraints(x, y + 2, 0, 0));
_tfDefaultFolder = new FileTextField(FileTextField.FOLDER_TYPE, Messages.getString("uk.ac.reload.editor.prefs.General_PrefsPanel.1"), DweezilUIManager.getIcon(ICON_OPEN)); //$NON-NLS-1$
_tfDefaultFolder.setFont(new java.awt.Font("Verdana", 0, 11));
add(_tfDefaultFolder, new XYConstraints(x + 230, y, 300, TEXTBOX_HEIGHT));
_checkSupportBox = new JCheckBox(Messages.getString("uk.ac.reload.editor.prefs.General_PrefsPanel.2")); //$NON-NLS-1$
_checkSupportBox.setFont(new java.awt.Font("Verdana", 0, 11));
JButton repairButton = new JButton(new AbstractAction(Messages.getString("uk.ac.reload.editor.prefs.General_PrefsPanel.3")) { //$NON-NLS-1$
public void actionPerformed(ActionEvent e) {
try {
checkSupportFolder();
JOptionPane.showMessageDialog(General_PrefsPanel.this,
Messages.getString("uk.ac.reload.editor.prefs.General_PrefsPanel.4") //$NON-NLS-1$
);
} catch (IOException e1) {
JOptionPane.showMessageDialog(General_PrefsPanel.this,
Messages.getString("uk.ac.reload.editor.prefs.General_PrefsPanel.5") + ": " + e1.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
}
}
});
repairButton.setFont(new java.awt.Font("Verdana", 0, 11));
add(_checkSupportBox, new XYConstraints(x, y + 30, 0, 0));
add(repairButton, new XYConstraints(x + 390, y + 27, 0, 0));
}
Thúy thử xem nhé.
Chào Oanh,
Theo mình thì không nhất thiết phải hardcode một đối tượng Font mới mỗi khi cần setFont.
ReloadEditor được thiết kế rất khoa học, nó có thư viện dweezil chứa các lớp, tiện ích cho giao diện. Class DweezilUIManager (package uk.ac.reload.dweezil.util) có định nghĩa sẵn các đối tượng Font ứng với các style khác nhau, mỗi khi cần setFont mình đều tham chiếu đến các đối tượng này (code ReloadEditor cũng làm như vậy). Như thế mỗi lần muốn thay đổi font chữ, bạn chỉ cần sửa tập trung ở một chỗ, nhanh hơn rất nhiều.
1. Một ví dụ về Unicode character do JBuilder sinh ra (dùng character set Unicode trong Unikey): hoặc --> ho\ulEB7c.
String này khi đưa vào JFileChooser sẽ hiển thị không đúng, nếu thêm vào bằng tay một kí tự u nữa --> ho\uulEB7c: hiển thị OK.
(Nếu sử dụng tool native2ascii của JDK thì cũng không giải quyết được trường hợp này).
Oops! Anyone can explain this one for me?
2. Dưới đây là một đoạn code mình viết thử để kiểm tra xem những font nào của hệ thống có thể display được tiếng Việt.
GraphicsEnvironment g=GraphicsEnvironment.getLocalGraphicsEnvironment();
Font allFonts[]=g.getAllFonts();
String str="xâu kiểm tra";
int i=0;
for (i=0; i<allFonts.length;i++){
if (allFonts[i].canDisplayUpto(str)==-1){
System.out.print("This font is OK: ");
System.out.println(allFonts[i].getFontName();
}
}
Nhưng dùng các font hiển thị trong kết quả với character set Unicode thì vẫn có lỗi.
Vậy nguyên nhân là do đâu nhỉ? Có ai biết bộ gõ nào tốt hơn Unikey không?
Lỗi của mình bị như hình ở dưới đây, Hùng có khuyên mình build lại Reload Editor nhưng mình chưa biết chỗ nào để chỉnh lại. Vậy mong mọi người giúp mình chỉ rõ phần cần thay đổi trong source ( cụ thể là lớp nào, thay cái gì ) để vượt qua trở ngại này.
Nếu có cách nào không phải build lại thì tốt quá
Thanks all,
Vấn đề lỗi phông tiếng Việt ở đây không phải cứ thử hết là xong đâu, kinh nghiệm dịch thuật các dự án mã nguồn mở cho thấy "Khi dịch thì cần contact với tổ chức phát triển" để có thể hỗ trợ hoàn toàn. M không thạo Java chứ nếu không đã dịch nó lâu rồi.
Anh Hùng ơi! ANh có thể hướng dẫn cụ thể các bước để việt hóa reload editor được ko? E đang rất cần. Thank Anh nhiều
a Hùng. A linh ơi. cái này a làm chưa ạ.giúp em với ạ. help me..
chỉ cho e các bước để việt hóa với ạ
Tại sao phải việt hóa, trong khi có rất nhiều công cụ tốt hơn; nếu không cần dựng riêng thì nên nghĩ đến 1 công cụ phù hợp