macoolka-i18n
Version:
`macoolka-i18n` is a library for internationalization in TypeScript. It easily integrates some localization features to your Application.
96 lines • 3.58 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildi18n = exports.I18NValidationMonoid = void 0;
/**
* I18n type
* @desczh
* I18N类型
* @file
*/
var stand_1 = require("./i18nFormat/stand");
var macoolka_object_1 = require("macoolka-object");
var Semigroup_1 = require("fp-ts/Semigroup");
var E = __importStar(require("fp-ts/Either"));
var stringSemigroup = {
concat: function (a, b) { return "".concat(a, "\n").concat(b); },
};
/**
* Monoid for I18NValidation
* @since 0.2.3
*/
var I18NValidationMonoid = function (empty) { return E.getValidationMonoid(stringSemigroup, {
concat: (0, Semigroup_1.getLastSemigroup)().concat,
empty: empty
}); };
exports.I18NValidationMonoid = I18NValidationMonoid;
var getConfig = function (_a) {
var defaultLocale = _a.defaultLocale, _b = _a.data, data = _b === void 0 ? {} : _b;
return (0, stand_1.extendI18NConfig)({
defaultLocale: defaultLocale,
template: { messages: data[defaultLocale] }, templates: (0, macoolka_object_1.mapValues)(data, function (value) {
return {
messages: value
};
})
});
};
/**
* Build a MonadI18N from I18NOption
* @desczh
* 从I18NOption到MonidI18N
* @example
* import { buildi18n,setGlobalI18N} from 'macoolka-i18n'
* const options = {
* defaultLanguage: 'en',
* data: {
* en: {
* 'macoolka.test.noparam': 'noparam',
* 'macoolka.test.oneparam': 'one params {value}',
* },
* zh: {
* 'macoolka.test.noparam': '没有参数',
* 'macoolka.test.oneparam': '一个参数 {value}'
* }
* }
* }
* const formatMessage = buildi18n<keyof typeof options.data.en>(options).formatMessage
*
* const formatNoParam = formatI18N({ id: 'macoolka.test.noparam', value: { value: 0 } })
*
* expect(formatMessage({ id: 'macoolka.test.noparam', value: { value: 0 } })).toEqual('noparam')
* expect(formatMessage({ id: 'macoolka.test.oneparam', value: { value: 111 } })).toEqual('one params 111')
* setGlobalI18N({locale:'zh'})
* expect(formatMessage({ id: 'macoolka.test.noparam', value: { value: 0 } })).toEqual('没有参数')
* expect(formatMessage({ id: 'macoolka.test.oneparam', value: { value: 111 } })).toEqual('一个参数 111')
* @since 0.2.0
*/
var buildi18n = function (a) {
var value = getConfig(a);
return (0, stand_1.buildMonadI18N)(value);
};
exports.buildi18n = buildi18n;
exports.default = exports.buildi18n;
//# sourceMappingURL=index.js.map