UNPKG

i18ntk

Version:

i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.

56 lines (47 loc) 1.5 kB
'use strict'; const YES_TOKENS = { en: ['y', 'yes'], de: ['j', 'ja'], es: ['s', 'si', 's\u00ed'], fr: ['o', 'oui'], ru: ['\u0434', '\u0434\u0430'], ja: ['\u306f\u3044', '\u306f', 'y', 'yes'], zh: ['\u662f', '\u5bf9', '\u5c0d', '\u597d', 'y', 'yes'], }; const NO_TOKENS = { en: ['n', 'no'], de: ['n', 'nein'], es: ['n', 'no'], fr: ['n', 'non'], ru: ['\u043d', '\u043d\u0435\u0442'], ja: ['\u3044\u3044\u3048', '\u3044\u3048', '\u3044\u3084', 'n', 'no'], zh: ['\u5426', '\u4e0d', '\u4e0d\u8981', 'n', 'no'], }; function normalizeToken(value) { return String(value || '').trim().toLowerCase(); } function getTokens(language, tokenMap) { const lang = normalizeToken(language || 'en'); return new Set([...(tokenMap.en || []), ...(tokenMap[lang] || [])].map(normalizeToken)); } function isAffirmative(value, language = 'en') { return getTokens(language, YES_TOKENS).has(normalizeToken(value)); } function isNegative(value, language = 'en') { return getTokens(language, NO_TOKENS).has(normalizeToken(value)); } function parseConfirmation(value, options = {}) { const { language = 'en', defaultValue = false } = options; const normalized = normalizeToken(value); if (!normalized) return Boolean(defaultValue); if (isAffirmative(normalized, language)) return true; if (isNegative(normalized, language)) return false; return Boolean(defaultValue); } module.exports = { YES_TOKENS, NO_TOKENS, isAffirmative, isNegative, parseConfirmation, };