加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

devanagari i18n in java

发布时间:2020-12-15 03:10:35 所属栏目:Java 来源:网络整理
导读:我正在尝试使用i18n在 java中使用来自互联网的示例ttf文件的devanagari / hindi. 我能够加载资源包条目,并加载ttf和设置字体,但它不会根据需要呈现jlabel.它显示了代替字符的块.如果我在eclipse中调试,我可以将鼠标悬停在unicode变量上,甚至可以渲染devanaga
我正在尝试使用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=u0915u0916u0917:
1=u090fu0915:
2=u0926u094b:
3=u0924u0940u0907:
4=u091au093eu0930:
5=u092au093eu091a:
6=u091bu0947:
7=u0938u093eu0924:
8=u0906u093eu0920:
9=u0928u094c:
10=u0926u0938:
random=Random
title=Key in numbers to match the words

解决方法

试试这个 https://stackoverflow.com/a/6995374/466250 正如原始问题所说,属性文件默认为ISO-8859-1.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读