mocoolka-i18n
v0.5.0
Published
mocoolka library for internationalization and localization
Downloads
5
Readme
mocoolka-setting
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
License
Licensed under the MIT, version 2.0. (see MIT).