Ich versuche, i18n in Java für devanagari/hindi mit Beispiel-ttf-Dateien aus dem Internet zu verwenden.devanagari i18n in Java
Ich bin in der Lage, Ressourcen-Bundle-Einträge zu laden und laden Sie auch die TTF und Schriftart, aber es wird jlabel nicht wie gewünscht rendern. Es zeigt Blöcke anstelle von Zeichen. Wenn ich in Eclipse debugge, kann ich über die Unicode-Variable schweben und es macht sogar devanagari. Unten ist Code und Ressourcenpaket als Referenz.
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");
}
}
Hier ist das Ressourcenpaket für MyNumbersrb_hi.properties, das ich erstellt habe.
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
Ich benutze bereits \ u Sequenz in Eigenschaften Dateien für nicht ASCII-Zeichen, so dass ich keine Konvertierung vornehmen muss. Die Datei ist eine einfache Ascii-Datei mit \ u Sequenz und Unicode-Variable ist in der Lage, sich im Debug-Modus gut zu machen, aber nur das Swing JLabel ist es nicht zu rendern. – Miten