function buildDistanceInWordsLocale () { var distanceInWordsLocale = { lessThanXSeconds: { one: { standalone: 'manje od 1 sekunde', withPrepositionAgo: 'manje od 1 sekunde', withPrepositionIn: 'manje od 1 sekundu' }, dual: 'manje od {{count}} sekunde', other: 'manje od {{count}} sekundi' }, xSeconds: { one: { standalone: '1 sekunda', withPrepositionAgo: '1 sekunde', withPrepositionIn: '1 sekundu' }, dual: '{{count}} sekunde', other: '{{count}} sekundi' }, halfAMinute: 'pola minute', lessThanXMinutes: { one: { standalone: 'manje od 1 minute', withPrepositionAgo: 'manje od 1 minute', withPrepositionIn: 'manje od 1 minutu' }, dual: 'manje od {{count}} minute', other: 'manje od {{count}} minuta' }, xMinutes: { one: { standalone: '1 minuta', withPrepositionAgo: '1 minute', withPrepositionIn: '1 minutu' }, dual: '{{count}} minute', other: '{{count}} minuta' }, aboutXHours: { one: { standalone: 'oko 1 sat', withPrepositionAgo: 'oko 1 sat', withPrepositionIn: 'oko 1 sat' }, dual: 'oko {{count}} sata', other: 'oko {{count}} sati' }, xHours: { one: { standalone: '1 sat', withPrepositionAgo: '1 sat', withPrepositionIn: '1 sat' }, dual: '{{count}} sata', other: '{{count}} sati' }, xDays: { one: { standalone: '1 dan', withPrepositionAgo: '1 dan', withPrepositionIn: '1 dan' }, dual: '{{count}} dana', other: '{{count}} dana' }, aboutXMonths: { one: { standalone: 'oko 1 mjesec', withPrepositionAgo: 'oko 1 mjesec', withPrepositionIn: 'oko 1 mjesec' }, dual: 'oko {{count}} mjeseca', other: 'oko {{count}} mjeseci' }, xMonths: { one: { standalone: '1 mjesec', withPrepositionAgo: '1 mjesec', withPrepositionIn: '1 mjesec' }, dual: '{{count}} mjeseca', other: '{{count}} mjeseci' }, aboutXYears: { one: { standalone: 'oko 1 godinu', withPrepositionAgo: 'oko 1 godinu', withPrepositionIn: 'oko 1 godinu' }, dual: 'oko {{count}} godine', other: 'oko {{count}} godina' }, xYears: { one: { standalone: '1 godina', withPrepositionAgo: '1 godine', withPrepositionIn: '1 godinu' }, dual: '{{count}} godine', other: '{{count}} godina' }, overXYears: { one: { standalone: 'preko 1 godinu', withPrepositionAgo: 'preko 1 godinu', withPrepositionIn: 'preko 1 godinu' }, dual: 'preko {{count}} godine', other: 'preko {{count}} godina' }, almostXYears: { one: { standalone: 'gotovo 1 godinu', withPrepositionAgo: 'gotovo 1 godinu', withPrepositionIn: 'gotovo 1 godinu' }, dual: 'gotovo {{count}} godine', other: 'gotovo {{count}} godina' } } function localize (token, count, options) { options = options || {} var result if (typeof distanceInWordsLocale[token] === 'string') { result = distanceInWordsLocale[token] } else if (count === 1) { if (options.addSuffix) { if (options.comparison > 0) { result = distanceInWordsLocale[token].one.withPrepositionIn } else { result = distanceInWordsLocale[token].one.withPrepositionAgo } } else { result = distanceInWordsLocale[token].one.standalone } } else if ( count % 10 > 1 && count % 10 < 5 && // if last digit is between 2 and 4 String(count).substr(-2, 1) !== '1' // unless the 2nd to last digit is "1" ) { result = distanceInWordsLocale[token].dual.replace('{{count}}', count) } else { result = distanceInWordsLocale[token].other.replace('{{count}}', count) } if (options.addSuffix) { if (options.comparison > 0) { return 'za ' + result } else { return 'prije ' + result } } return result } return { localize: localize } } module.exports = buildDistanceInWordsLocale