UNPKG

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
"use strict"; 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