GVKun编程网logo

devanagari i18n in java

22

在本文中,我们将为您详细介绍devanagarii18ninjava的相关知识,此外,我们还会提供一些关于asp.net–将unicode数字从英语转换为devanagari、cordova–I18n

在本文中,我们将为您详细介绍devanagari i18n in java的相关知识,此外,我们还会提供一些关于asp.net – 将unicode数字从英语转换为devanagari、cordova – I18n Phonegap App / gettext?、I18N / Angular JS / Javascript文本、i18next-react - 如何在同一个应用程序中拥有 2 个 i18next 实例的有用信息。

本文目录一览:

devanagari i18n in java

devanagari i18n in java

我正在尝试使用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://stackoverflow.com/a/6995374/466250 正如原始问题所说,属性文件默认为ISO-8859-1.

asp.net – 将unicode数字从英语转换为devanagari

asp.net – 将unicode数字从英语转换为devanagari

我正在寻找一些RegEx或任何其他方法将数字0-9转换为0-9(梵文脚本).我正在使用asp.net但在全球化命名空间中找不到任何方法来执行此操作.

任何帮助是极大的赞赏.

解决方法

发现类似的帖子 here!

虽然我知道源文化和目的地文化,但我的解决方案有点不同.所以我可以硬编码数字数组.

string devYear = "";
        string[] devD = { "०","१","२","३","४","५","६","७","८","९" };
        char[] digits = curYear.tochararray();
        foreach (char ch in digits)
        {
            devYear += devD[int.Parse(ch.ToString())];
        }

另一个变化是我迭代年份数字而不是devD数组.保存少量迭代,因为大多数数字将小于10位数.在我的情况下,只有四位数.

希望对于那些坚持类似路线的人有用.

cordova – I18n Phonegap App / gettext?

cordova – I18n Phonegap App / gettext?

我正在开发一个Phonegap应用程序.

我希望用户在启动应用程序时能够选择一种语言.

所以我希望将我的html和javascript文件中的所有字符串翻译成所选语言.

是否有“最佳实践”或我可以使用的插件?

Gettext http://jsgettext.berlios.de/对此非常重视,不是吗?
感谢帮助!

解决方法

如果您能接受这个想法,应用程序语言会自动设置为手机上配置的语言(我认为这更好,但可能不符合您的要求),您可能会看看我刚刚发送给github的 library,称为 phonegap-l10n.

I18N / Angular JS / Javascript文本

I18N / Angular JS / Javascript文本

我正在开发基于Angular JS的Phonegap应用程序.
我在Angular JS中找到了I18N的2个选项:

1)https://github.com/gertn/ng-i18n

2)http://angularjs.de/artikel/angularjs-i18n-ng-translate

它们都非常“类似”:有翻译的占位符(表达式).

所以我的问题是:如何翻译纯文本,例如
在角度服务内(而不是在表达式/占位符中)的通知警报?

解决方法

angular-translate允许您直接使用他们的 $translate service.以下是其文档中的示例代码.

var translations = {
  HEADLINE: 'What an awesome module!',ParaGRAPH: 'Srsly!',NAMESPACE: {
    ParaGRAPH: 'And it comes with awesome features!'
  }
};

var app = angular.module('myApp',['pascalprecht.translate']);

app.config(['$translateProvider',function ($translateProvider) {
  // add translation table
  $translateProvider.translations(translations);
}]);

app.controller('Ctrl',['$scope','$translate',function ($scope,$translate) {
  // expose translation via `$translate` service
  $scope.headline = $translate('HEADLINE');
  $scope.paragraph = $translate('ParaGRAPH');
  $scope.namespaced_paragraph = $translate('NAMESPACE.ParaGRAPH');
}]);

i18next-react - 如何在同一个应用程序中拥有 2 个 i18next 实例

i18next-react - 如何在同一个应用程序中拥有 2 个 i18next 实例

如何解决i18next-react - 如何在同一个应用程序中拥有 2 个 i18next 实例?

我开发了一个使用 18next 的组件 npm 库。图书馆的消费者,也使用 18next。 我们为每个实例创建了实例,并使用提供程序组件将其向下传递。

出于某种原因,翻译总是被消费者覆盖。

我尝试了解决方案here

但是当我删除 .use(initReactI18Next) 时,它破坏了组件中的翻译,并没有帮助消费者解决最初的问题。还有其他可行的解决方案吗?

I18n.js 文件 - 在组件项目中:

import i18n from ''i18next'';
import { initReactI18next } from ''react-i18next'';

const resources = {
  en: {
    translation: require(''./translations/messages_en.json''),},bg: {
    translation: require(''./translations/messages_bg.json''),}

const widgetInstance = i18n.createInstance();
widgetInstance
  // pass the i18n instance to react-i18next so the t function will be in the context.
  .use(initReactI18next)
  // init i18next
  // for all options read: https://www.i18next.com/overview/configuration-options
  .init({
    resources,react: {
      useSuspense: false,fallbackLng: ''en'',debug: true,interpolation: {
      escapeValue: false,// not needed for react as it escapes by default
    },})
  .then(result => result)
  .catch(error => console.error(error));

export default widgetInstance;

使用它的组件:

import i18next from ''../../../locale/i18next'';

....

<I18nextProvider i18n={i18next}>
<div className="myComponent"/>
</ I18nextProvider i18n={i18next}>

组件 npm 库的使用者中的 i18n.js:

import i18next from ‘i18next’;
import {initReactI18next} from “react-i18next”;
const newInstance1 = i18next.createInstance();
 export default function i18n(locale: string) {
   void  newInstance1.use(initReactI18next)
    .use({
     type: ‘backend’,read: (
        language: string,namespace: string,callback: (
          err: any | null,translations?: Record<string,string>,) => void,) => {
        return import(`./locales/messages_${locale}.json`)
          .then(translation => {
            callback(null,translation);
          })
          .catch(error => {
            callback(error);
          });
     },})
    .init({
      lng: locale,fallbackLng: “en”,keySeparator: false,});
     return newInstance1;
  }

在消费者的提供者中使用它的组件:

import i18n from ‘../../i18n’;
<I18nextProvider i18n={i18n(locale)}>
    <LibrayComponent {...props} />
    </I18nextProvider>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

关于devanagari i18n in java的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于asp.net – 将unicode数字从英语转换为devanagari、cordova – I18n Phonegap App / gettext?、I18N / Angular JS / Javascript文本、i18next-react - 如何在同一个应用程序中拥有 2 个 i18next 实例等相关知识的信息别忘了在本站进行查找喔。

本文标签: