我正在尝试使用i18n在
java中使用来自互联网的示例ttf文件的devanagari / hindi.
我能够加载资源包条目,并加载ttf和设置字体,但它不会根据需要呈现jlabel.它显示了代替字符的块.如果我在eclipse中调试,我可以将鼠标悬停在unicode变量上,甚至可以渲染devanagari.下面是代码和资源包供参考.
package i18n; import java.awt.Font; import java.awt.GridLayout; import java.io.InputStream; import java.util.Locale; import java.util.ResourceBundle; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class MyNumbers extends JFrame { private ResourceBundle rb; private Font devanagariFont; public MyNumbers (String language,String fontFile) { loadResourceBundle(language); loadFont(fontFile); display(); } private void display() { String unicode = null; JPanel labels = new JPanel(new GridLayout(0,2)); JLabel uni = null; for(int i=0; i<=10; i++) { unicode = rb.getString("" +i); labels.add(new JLabel("" + i)); labels.add(uni = new JLabel(unicode)); uni.setFont(devanagariFont); } getContentPane().add(labels); setDefaultCloSEOperation(disPOSE_ON_CLOSE); pack(); setVisible(true); } private void loadFont(String fontFile) { try { InputStream input = getClass().getResourceAsstream(fontFile); Font b = Font.createFont(Font.TRUETYPE_FONT,input); devanagariFont = b.deriveFont(Font.PLAIN,11); } catch(Exception e) { e.printstacktrace(); } } private void loadResourceBundle(String language) { String base = getClass().getName() + "rb"; rb = ResourceBundle.getBundle(base,new Locale(language)); } /** * @param args */ public static void main(String[] args) { // Todo Auto-generated method stub new MyNumbers("hi","Devnew.ttf"); } }
这是我创建的MyNumbersrb_hi.properties的资源包.
Default properties in Devnagari 0=\u0915\u0916\u0917: 1=\u090f\u0915: 2=\u0926\u094b: 3=\u0924\u0940\u0907: 4=\u091a\u093e\u0930: 5=\u092a\u093e\u091a: 6=\u091b\u0947: 7=\u0938\u093e\u0924: 8=\u0906\u093e\u0920: 9=\u0928\u094c: 10=\u0926\u0938: random=Random title=Key in numbers to match the words
解决方法
原文地址:https://www.jb51.cc/java/129027.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。