与iLib一起苦苦挣扎

时间:2016-04-21 00:40:11

标签: javascript internationalization

我已经下载了令人惊叹的iLib Javascript I18N库的当前版本(11.0),用于解析国际地址。不幸的是,我无法使用它来解决问题。文档说要加载iliball.js,它不在Github上的文件分发或列表中。尝试使用js / assemble / ilib-full-compiled.js,我能够:

% js
> var module = require("./ilib-full-compiled.js")
> module.ilib.getVersion()
'11.0.006'

但是模块中没有定义地址:

> module.Address("1234 Main Street\nDenver CO")
TypeError: Object #<Object> has no method 'Address'
    at repl:1:10
    at REPLServer.self.eval (repl.js:110:21)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.EventEmitter.emit (events.js:95:17)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
    at ReadStream.onkeypress (readline.js:99:10)
    at ReadStream.EventEmitter.emit (events.js:98:17)
    at emitKey (readline.js:1095:12)

,类似于module.ilib.Address。

此外,我找不到允许我创建自己的汇编库的“jsa”工具。此外,尝试从iLib源构建时会产生大量错误。

这不是很难用的。我在这里错过了什么? (我没有声誉点来创建“ilib”标签,所以我希望这会引起与项目有关的人的注意。)

1 个答案:

答案 0 :(得分:0)

我不确定这是否适用于Go / Otto,但是在nodejs上,您可以通过使用require访问它来获取ilib内部的一个类。基本上,添加&#34; ilib / lib /&#34; +获取它的类名:

> var ilib = require("ilib");
> var Address = require("ilib/lib/Address");
> var add = new Address("1234 Main Street, Denver CO 80202");
> add
{ sync: true,
  loadParams: {},
  locale: 
   { language: 'en',
     region: 'US',
     script: undefined,
     variant: undefined,
     spec: 'en-US' },
  lines: undefined,
  country: undefined,
  countryCode: 'US',
  info: 
   { formats: 
      { default: '{streetAddress}\n{locality} {region} {postalCode}\n{country}',
        nocountry: '{streetAddress}\n{locality} {region} {postalCode}' },
     startAt: 'end',
     fields: [ [Object], [Object], [Object] ] },
  compare: [ [Function: Function] ],
  postalCode: '80202',
  region: 'CO',
  locality: 'Denver',
  streetAddress: '1234 Main Street' }

或者,require中返回的对象将包含一个Address类,但是你应该使用&#34; new&#34;用它来创建一个新实例:

var module = require("ilib");
new module.Address("1234 Main Street\nDenver CO");

生成的实例上有几个方法以及解析后的属性。

关于ilib维基的更多细节:https://sourceforge.net/p/i18nlib/wiki/New%20Modularization%20Support/

至于npm,当你在本地而不是全局安装时,它会找到node_modules而不需要设置你的路径。

要组装自己的ilib,首先需要安装一些东西:

  • Oracle Java JDK 1.7或更高版本
  • Apache ant
  • Nodejs 0.10
  • NPM

一旦他们在路径中,滚动你自己的ilib版本应该更顺利。 Jsa是一个基于java的工具,源代码在ilib中。 Ant首先编译它,然后用它来组装ilib。 (有一天我会为nodejs重写它。)