mocoolka-i18n

0.5.0 • Public • Published

mocoolka-setting

npm package license

Mocoolka-i18n is base module for mocoolka application. The module is for internationalization and localization that leverage the official Unicode CLDR JSON data.

Install

$ npm install mocoolka-i18n

Usage

edit file "messages.mk-message.json" on intl directory

{
  "root"{
    "i18n" :{
      "E-MISS-MESSAGE" : "Missing required message content '{value}'.",
      "E-MISS-FORMAT-MESSAGE" : "format {type} error. value:{value} options:{options} language:{language}.",
      "E-MISS-FORMAT-DATE" : "format date '{value}' error in language:{language} using options '{options}'.",
      "E-MISS-FORMAT-PLURAL" : "format plural '{value}' error in language:{language} using options '{options}'.",
      "E-MISS-FORMAT-NUMBER" : "format number '{value}' error in language:{language} using options '{options}'.",
      "E-MISS-FORMAT-RELATIVE-TIME" : "format relative date '{value}' error in language:{language} using options '{options}' and unit '{unit}'.",
      "E-MISS-FORMAT-CURRENCY" : "formatCurrency error. currencySymbol:{currencySymbol} value:{value} options:{options} language:{language}",
      "E-MISS-FORMAT-UNIT" : "formatUnit error. unit:{unit} value:{value} options:{options} language:{language}"
 
    },
    "ERROR"{
      "E-MISS-TYPE" : "The variable({variable})'s type expected is '{expected}',actual is '{actual}'",
      "E-DIR-NOT-EXIST" : "The path ({path}) is not a directory",
      "E-FILE-NOT-EXIST" : "The file be not found on '{path}'",
      "E-LANG-NOT-SUPPORT" : "The language ({language}) be not supported by Application.Application support is '{supportLanguages}'",
      "E-NOT-INIT" : "The module ({moduleName}) must init ,please first call function.",
      "E-NOT-BLANK""The variable can't be blank",
      "E-MISS-PARSE-FILE" :"The error be throw while file be parsed on '{path}'",
      "E-MISS-CALLBACK" :"callback function must exist"
    }
  },
  "zh-Hans":{
    "i18n" :{
      "E-MISS-PARSE-FILE" :"CLDR文件读取时发生错误{path}",
      "E-MISS-MESSAGE" : "'{value}'消息没有被发现,请核对配置消息配置文件.",
      "E-MISS-FORMAT-DATE" : "日期'{value}'格式化时发生错误,使用语言{language}选项为'{options}'.",
      "E-MISS-FORMAT-CURRENCY" : "格式化货币发生错误. 货币符号{currencySymbol} 值:{value} 选项:{options} 语言:{language}",
      "E-MISS-FORMAT-UNIT" : "格式化单位时货币发生错误. 单位:{unit}  值:{value} 选项:{options} 语言:{language}"
    },
    "ERROR"{
      "E-MISS-TYPE" : "类型错误。期望是 {expected},实际是 {actual}",
      "E-DIR-NOT-EXIST" : "{path} 文件路径不存在",
      "E-FILE-NOT-EXIST" : "没有找到指定的文件'{path}'",
      "E-LANG-NOT-SUPPORT" : "CLDR不支持{languageNotSupport} be not supported by CLDR.支持的语言有 {supportLanguages}",
      "E-NOT-INIT" : " 模块必须先初始化 {moduleName}  ,请先调用初速化函数 {initFunction}.",
      "E-NOT-BLANK""变量不能为空值",
      "E-MISS-CALLBACK" :"要求的回调函数不存在"
    }
  }
}

start micro service

const i18nService = require('mocoolka-i18n');
i18nService(__dirname);

format date

serviceTools.standClientPromise('mocoolka-i18n''formatDate',
 {value: (new Date()).toUTCString()}).then(data=> {
 console.log(data)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatDate',
 {value: (new Date()).toUTCString(), language: 'zh-Hans'}).then(data=> {
 console.log(data)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatDates',
 {value: (new Date()).toUTCString()}).then(data=> {
 
 console.log(data)
}).catch(error=> {
 console.error(error);
});
 
output:
{ result: 'Apr 26, 2017, 9:05:28 AM' }
{ result: '2017年4月26日 上午9:05:28' }
{ result: 
  { value: 'Wed, 26 Apr 2017 01:05:28 GMT',
    message: 
     { en: 'Apr 26, 2017, 9:05:28 AM',
       'zh-Hans''2017年4月26日 上午9:05:28' } } }

format relative times

serviceTools.standClientPromise('mocoolka-i18n''formatRelativeTime',
 {value: 30000, unit: 'second'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatRelativeTime',
 {value: 30000, unit: 'second', language: 'zh-Hans'}).then(data=> {
 
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatRelativeTimes',
 {value: 30000, unit: 'second'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
output:
in 30,000 seconds
30,000秒钟后
{ value: 30000,
 unit: 'second',
 message: { en: 'in 30,000 seconds''zh-Hans''30,000秒钟后' } }

format unit

serviceTools.standClientPromise('mocoolka-i18n''formatUnit',
 {value: 30000, unit: 'second'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatUnit',
 {value: 30000, unit: 'second', language: 'zh-Hans'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatUnits',
 {value: 30000, unit: 'second'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
output:
30,000 sec
30,000秒
{ value: 30000,
 unit: 'second',
 message: { en: '30,000 sec''zh-Hans''30,000秒' } }

format currency

serviceTools.standClientPromise('mocoolka-i18n''formatCurrency',
 {value: 30000, currencySymbol: 'USD'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatCurrency',
 {value: 30000, currencySymbol: 'USD', language: 'zh-Hans'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatCurrencies',
 {value: 30000, currencySymbol: 'USD'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
output:
30,000.00 US dollars
30,000.00美元
{ value: 30000,
 currencySymbol: 'USD',
 message: { en: '30,000.00 US dollars''zh-Hans''30,000.00美元' } }

format number

serviceTools.standClientPromise('mocoolka-i18n''formatNumber',
 {value: 30000}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatNumber',
 {value: 30000, language: 'zh-Hans'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatNumbers',
 {value: 30000}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
output:
30,000
30,000
{ value: 30000, message: { en: '30,000''zh-Hans''30,000' } }

format plural

serviceTools.standClientPromise('mocoolka-i18n''plural',
 {value: 30000}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
output:
other

load message

serviceTools.standClientPromise('mocoolka-i18n''loadMessage',
 {rootPath: fileTools.path(__dirname, 'intl')}).then(data=> {
 serviceTools.standClientPromise('mocoolka-i18n''formatMessage',
   {id: 'log/start'}).then(data=> {
   console.log(data.result)
 }).catch(error=> {
   console.error(error);
 });

format message

serviceTools.standClientPromise('mocoolka-i18n''formatMessage',
 {id: 'i18n/E-MISS-MESSAGE', value: {value: 'test'}}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatMessage',
 {id: 'i18n/E-MISS-MESSAGE', value: {value: 'test'}, language: 'zh-Hans'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatMessages',
 {id: 'i18n/E-MISS-MESSAGE', value: {value: 'test'}}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
output:
Missing required message content 'test'.
'test'消息没有被发现,请核对配置消息配置文件.
{ id: 'i18n/E-MISS-MESSAGE',
 value: { value: 'test' },
 message: 
  { en: 'Missing required message content \'test\'.',
    'zh-Hans''\'test\'消息没有被发现,请核对配置消息配置文件.' } }

format abbreviation

serviceTools.standClientPromise('mocoolka-i18n''formatAbbreviation',
 {id: 'i18n/E-MISS-MESSAGE', value: {value: 'test'}}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatAbbreviation',
 {id: 'i18n/E-MISS-MESSAGE', value: {value: 'test'}, language: 'zh-Hans'}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''formatAbbreviations',
 {id: 'i18n/E-MISS-MESSAGE', value: {value: 'test'}}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
serviceTools.standClientPromise('mocoolka-i18n''getSupportedLanguages',
 {}).then(data=> {
 console.log(data.result)
}).catch(error=> {
 console.error(error);
});
 
output:
Missing required message content 'test'.
'test'消息没有被发现,请核对配置消息配置文件.
{ id: 'i18n/E-MISS-MESSAGE',
 value: { value: 'test' },
 message: 
  { en: 'Missing required message content \'test\'.',
    'zh-Hans''\'test\'消息没有被发现,请核对配置消息配置文件.' } }

Docs

link to Docs!

License

Licensed under the MIT, version 2.0. (see MIT).

Readme

Keywords

Package Sidebar

Install

npm i mocoolka-i18n

Weekly Downloads

1

Version

0.5.0

License

MIT

Last publish

Collaborators

  • mocoolka