UNPKG

ajv-ftl-i18n

Version:

Transpile Fluent (ftl) files into ajv error translations.

166 lines (161 loc) 6.78 kB
const __locales = ["hu"] const __formatNumber = (value, options) => { return new Intl.NumberFormat(__locales, options).format(value) } const __formatVariable = (value) => { if (typeof value === 'string') return value const decimal = Number.parseFloat(value) const number = Number.isInteger(decimal) ? Number.parseInt(value) : decimal return __formatNumber(number) } const __select = (value, cases, fallback, options) => { const pluralRules = new Intl.PluralRules(__locales, options) const rule = pluralRules.select(value) return cases[value] ?? cases[rule] ?? fallback } const defaultMessage = (params) => `át kell adnia a "${params?.keyword}" kulcsszóérvényesítést` const comparisonLimit = (params) => `kell legyen ${params?.comparison} ${params?.limit}` export const items = (params) => `nem lehet több, mint ${__formatVariable(params?.limit)} eleme` export const additionalItems = (params) => `${items(params)}` export const additionalProperties = `nem lehetnek további elemei` export const anyOf = `meg kell feleljen legalább egy "anyOf" alaknak` export const _const = `állandóval egyenlőnek kell lennie` export const contains = `érvényes tételt kell tartalmaznia` export const dependencies = (params) => `-nak kell ${__select( params?.depsCount, { 'one': `legyen` }, `legyenek` )} a következő ${__select( params?.depsCount, { 'one': `tulajdonsága` }, `tulajdonságai` )}: ${__formatVariable(params?.deps)}, ha van ${__formatVariable(params?.property)} tulajdonsága` export const dependentRequired = (params) => `${dependencies(params)}` export const _enum = `egyenlő kell legyen valamely előre meghatározott értékkel` export const falseSchema = `a logikai séma hamis` export const format = (params) => `meg kell feleljen a következő formátumnak: "${__formatVariable(params?.format)}"` export const formatMaximum = (params) => `${comparisonLimit(params)}` export const formatExclusiveMaximum = (params) => `${comparisonLimit(params)}` export const formatMinimum = (params) => `${comparisonLimit(params)}` export const formatExclusiveMinimum = (params) => `${comparisonLimit(params)}` export const _if = (params) => `meg kell egyeznie a "${__formatVariable(params?.failingKeyword)}" sémával` export const maximum = (params) => `${comparisonLimit(params)}` export const exclusiveMaximum = (params) => `${maximum(params)}` export const maxItems = (params) => `nem lehet több, mint ${__formatVariable(params?.limit)} eleme` export const maxLength = (params) => `nem lehet hosszabb, mint ${__formatVariable(params?.limit)} szimbólum` export const maxProperties = (params) => `nem lehet több, mint ${__formatVariable(params?.limit)} tulajdonsága` export const minimum = (params) => `${comparisonLimit(params)}` export const exclusiveMinimum = (params) => `${minimum(params)}` export const minItems = (params) => `nem lehet kevesebb, mint ${__formatVariable(params?.limit)} eleme` export const minLength = (params) => `nem lehet rövidebb, mint ${__formatVariable(params?.limit)} szimbólum` export const minProperties = (params) => `nem lehet kevesebb, mint ${__formatVariable(params?.limit)} tulajdonsága` export const multipleOf = (params) => `a többszöröse kell legyen a következő számnak: ${__formatVariable(params?.multipleOf)}` export const not = `nem lehet érvényes a "not" alaknak megfelelően` export const oneOf = `meg kell feleljen pontosan egy "oneOf" alaknak` export const pattern = (params) => `meg kell feleljen a következő mintának: "${__formatVariable(params?.pattern)}"` export const patternRequired = (params) => `tulajdonságmegfeleltetési mintával kell rendelkeznie: "${__formatVariable(params?.missingPattern)}"` export const propertyNames = `tulajdonság neve érvénytelen` export const required = (params) => `kell legyen ${__formatVariable(params?.missingProperty)} tulajdonsága` export const type = (params) => `${__formatVariable(params?.type)}${__select( params?.nullable, { 'true': `/null` }, `${""}` )} kell legyen` export const unevaluatedItems = (params) => `nem lehet több, mint ${__formatVariable(params?.len)} eleme` export const unevaluatedProperties = `nem rendelkezhetnek értéktelen tulajdonságokkal` export const uniqueItems = (params) => `nem lehetnek azonos elemei (${__formatVariable(params?.j)} és ${__formatVariable(params?.i)} elemek azonosak)` export const discriminator = (params) => `${__select( params?.error, { 'tag': `címke "${__formatVariable(params?.tag)}" karakterláncnak kell lennie`, 'mapping': `a "${__formatVariable(params?.tag)}" címke értékének leképezésben kell lennie` }, `${type(params)}` )}` export const properties = (params) => `${__select( params?.error, { 'additional': `nem lehetnek további elemei`, 'missing': `kell legyen ${__formatVariable(params?.missingProperty)} tulajdonsága` }, `${type(params)}` )}` export const elements = (params) => `${type(params)}` export const values = (params) => `${type(params)}` export const union = `meg kell feleljen legalább egy "union" alaknak` const __exports = { items, additionalItems, additionalProperties, anyOf, 'const': _const, contains, dependencies, dependentRequired, 'enum': _enum, falseSchema, format, formatMaximum, formatExclusiveMaximum, formatMinimum, formatExclusiveMinimum, 'if': _if, maximum, exclusiveMaximum, maxItems, maxLength, maxProperties, minimum, exclusiveMinimum, minItems, minLength, minProperties, multipleOf, not, oneOf, pattern, patternRequired, propertyNames, required, type, unevaluatedItems, unevaluatedProperties, uniqueItems, discriminator, properties, elements, values, union } export default (errors) => { if (!errors?.length) return for (const e of errors) { let { keyword } = e if (keyword === 'false schema') keyword = 'falseSchema' let source = __exports[keyword] ?? __exports['_'+keyword] let values = {} if (keyword === 'errorMessage') { const [message, ...valuesPairs] = e.message.split(', ') ;(valuesPairs.join(', ').match(regExpJsonPointerPairs) ?? []).forEach(pair => { const [key, value] = pair.split(':') values[key] = value.replace(regExpJsonPointerQuote, '') }) source ??= __exports[message] ?? __exports['_'+message] ?? e.message } else { source ??= __exports.defaultMessage } if (typeof source === 'function') { e.message = source({keyword:e.keyword, ...e.params, ...values}) } else { e.message = source } } } const regExpJsonPointerPairs = /([a-zA-Z0-9_-]+):(".*"|[^,"]+)/g const regExpJsonPointerQuote = /(^"|"$)/g