I am trying to use i18n in java for devanagari / hindi using sample ttf files from the internet.
I can download resource package entries as well as download ttf and install the font, but it will not display jlabel as desired. It shows blocks instead of characters. If I'm debugging in eclipse, I can hover over the unicode variable, and it even displays devanagari. Below is the code and resource kit for reference.
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)); } public static void main(String[] args) {
Here is the resource pack for MyNumbersrb_hi.properties created.
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
Miten
source share