Initial import from local backup (Documents-Playground/pakerpale)

This commit is contained in:
jeonghwa
2026-07-03 05:27:29 +09:00
commit d918e2eddc
2971 changed files with 264195 additions and 0 deletions

13
node_modules/relative-time-format/CHANGELOG.md generated vendored Normal file
View File

@@ -0,0 +1,13 @@
0.1.1 / 13.01.2018
===================
* Added "the day after tomorrow" / "the day before yesterday" messages (for example, for German language).
* Fixed "yesterday"/"tomorrow" being applied only to days (can now be applied, say, to seconds returning "now").
* Formatting numbers now uses `Intl.NumberFormat` when available.
0.1.0 / 12.01.2018
===================
* Initial release.

22
node_modules/relative-time-format/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,22 @@
(The MIT License)
Copyright (c) 2016 @catamphetamine <purecatamphetamine@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

103
node_modules/relative-time-format/README.md generated vendored Normal file
View File

@@ -0,0 +1,103 @@
# relative-time-format
[![npm version](https://img.shields.io/npm/v/relative-time-format.svg?style=flat-square)](https://www.npmjs.com/package/relative-time-format)
[![npm downloads](https://img.shields.io/npm/dm/relative-time-format.svg?style=flat-square)](https://www.npmjs.com/package/relative-time-format)
[![coverage](https://img.shields.io/coveralls/catamphetamine/relative-time-format/master.svg?style=flat-square)](https://coveralls.io/r/catamphetamine/relative-time-format?branch=master)
[`Intl.RelativeTimeFormat`](https://github.com/tc39/proposal-intl-relative-time) polyfill.
## Install
```
npm install relative-time-format --save
```
## Use
```js
import RelativeTimeFormat from 'relative-time-format'
import en from 'relative-time-format/locale/en'
RelativeTimeFormat.addLocale(en)
// Returns "2 days ago"
new RelativeTimeFormat('en').format(-2, 'day')
```
## Locales
The localization resides in the [`locale`](https://github.com/catamphetamine/relative-time-format/tree/master/locale) folder. The format of a localization is:
```js
{
"day": {
"past": {
"one": "{0} day ago",
"other": "{0} days ago"
},
"future": {
"one": "in {0} day",
"other": "in {0} days"
}
},
}
```
The `past` and `future` can be defined by any of: `zero`, `one`, `two`, `few`, `many` and `other`. For more info on which is which read the [official Unicode CLDR documentation](http://cldr.unicode.org/index/cldr-spec/plural-rules). [Unicode CLDR](http://cldr.unicode.org/) (Common Locale Data Repository) is an industry standard and is basically a collection of formatting rules for all locales (date, time, currency, measurement units, numbers, etc).
To determine whether a certain amount of time (number) is `one`, `few`, or something else, `relative-time-format` uses Unicode CLDR rules for formatting plurals. These rules are number quantifying functions (one for each locale) which can tell if a number should be treated as `zero`, `one`, `two`, `few`, `many` or `other`. Knowing how these pluralization rules work is not required but anyway here are some links for curious advanced readers: [rules explanation](http://cldr.unicode.org/index/cldr-spec/plural-rules), [list of rules for all locales](http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html), [converting those rules to javascript functions](https://github.com/eemeli/make-plural.js). These quantifying functions can be found as `quantify` properties of a locale data.
The `locale` folder is generated from CLDR data by running:
```sh
npm run generate-locales
```
Locale data is extracted from `cldr-data` (quantifiers) and `cldr-dates-full` (relative time messages) packages which usually get some updates once or twice a year.
```sh
npm install cldr-data@latest cldr-dates-full@latest --save
npm run generate-locales
```
## Contributing
After cloning this repo, ensure dependencies are installed by running:
```sh
npm install
```
This module is written in ES6 and uses [Babel](http://babeljs.io/) for ES5
transpilation. Widely consumable JavaScript can be produced by running:
```sh
npm run build
```
Once `npm run build` has run, you may `import` or `require()` directly from
node.
After developing, the full test suite can be evaluated by running:
```sh
npm test
```
When you're ready to test your new functionality on a real project, you can run
```sh
npm pack
```
It will `build`, `test` and then create a `.tgz` archive which you can then install in your project folder
```sh
npm install [package-name]-[version].tar.gz
```
## License
[MIT](LICENSE)

View File

@@ -0,0 +1,267 @@
import path from 'path'
import fs from 'fs-extra'
import extractRelativeTimeMessages from '../source/CLDR/extractRelativeTimeMessages'
import getLocalesListInCLDR from '../source/CLDR/getLocalesList'
// CLDR stubs missing translations with English ones.
// This can be used to find out whether a translation is missing.
const LONG_STYLE_TRANSLATION_STUB = `{
"year": {
"previous": "last year",
"current": "this year",
"next": "next year",
"past": "-{0} y",
"future": "+{0} y"
}`
// Generate plurals first, then run this script.
// Generating plurals creates locale folder structure.
//
// ```
// npm run generate-locale-quantifiers
// npm run generate-locale-messages
// // npm run generate-load-all-locales
// ````
for (const locale of getLocalesListInCLDR())
{
if (
// Different variations of "en" language have `en/short.json` and `en/narrow.json`
// which differ from one another by a simple dot, e.g. `yr.` vs `yr`.
// To reduce the resulting bundle size this dot difference is considered unimportant.
locale.indexOf('en-') === 0 ||
// For "pt" language the relative time messages seem to be different
// from all other "pt-" variations which are identical to "pt-PT".
// Seems like a bug in CLDR.
// To reduce the resulting bundle size "pt" language is discarded
// and "pt-PT" is used instead. All other "pt-" variations
// seems to be identical to "pt-PT" so they're not included.
locale.indexOf('pt-') === 0
) {
// Delete the locale folder.
// (previously created by `npm run generate-locale-quantifiers`).
fs.removeSync(path.join(__dirname, '../locale', locale))
continue
}
// console.log(locale)
// "language" is the top-most parent locale of the `locale`.
const language = locale.split('-')[0]
// For "pt" language the relative time messages seem to be different
// from all other "pt-" variations which are identical to "pt-PT".
// Seems like a bug in CLDR.
// To reduce the resulting bundle size "pt" language is discarded
// and "pt-PT" is used instead. All other "pt-" variations
// seems to be identical to "pt-PT" so they're not included.
const localeInCLDR = locale === 'pt' ? 'pt-PT' : locale
const cldrJsonPath = `cldr-dates-full/main/${localeInCLDR}/dateFields.json`
const localeDirectory = path.join(__dirname, '../locale', locale)
const languageDirectory = path.join(__dirname, '../locale', language)
// If there's no pluralization classifier function
// for this language then don't add it.
const quantifyDirectory = findQuantifyDirectory(locale)
const localeMessages = extractRelativeTimeMessages(require(cldrJsonPath))
// "long" messages are always present.
if (!localeMessages.long) {
throw new Error(`Default (long) locale data is missing for locale "${locale}".`)
}
// If there are no translations for a locale then skip it.
if (JSON.stringify(localeMessages.long, null, '\t').indexOf(LONG_STYLE_TRANSLATION_STUB) === 0) {
// console.log(`No translation for "${locale}". Skipping.`)
fs.removeSync(localeDirectory)
continue
}
// "short" messages are always present.
if (!localeMessages.short) {
throw new Error(`Short locale data is missing for locale "${locale}".`)
}
// "narrow" messages are always present.
if (!localeMessages.narrow) {
throw new Error(`Narrow locale data is missing for locale "${locale}".`)
}
// Drop duplicate quantifier messages.
compactQuantifiersData(localeMessages.long)
compactQuantifiersData(localeMessages.short)
compactQuantifiersData(localeMessages.narrow)
// What are "narrow" and "short" styles and how are they constructed:
// http://cldr.unicode.org/translation/plurals#TOC-Narrow-and-Short-Forms
// Create `index.js` file in the locale directory.
fs.outputFileSync(
path.join(localeDirectory, 'index.js'),
`
module.exports = {
${[
"locale: '" + locale + "'",
"long: require('" + createTimeLabels(locale, 'long', localeMessages) + "')",
"short: require('" + createTimeLabels(locale, 'short', localeMessages) + "')",
"narrow: require('" + createTimeLabels(locale, 'narrow', localeMessages) + "')",
quantifyDirectory && ("quantify: require('" + quantifyDirectory + "/quantify')")
]
.filter(_ => _)
.join(',\n\t')}
}
`.trim()
)
// Remove all locales containing just `index.js`
// which means they're fully inherting from their parent locale.
for (const locale of getLocalesListGenerated()) {
const files = fs.readdirSync(path.join(__dirname, '../locale', locale))
if (files.length === 1 && files[0] === 'index.js') {
fs.removeSync(path.resolve(__dirname, '../locale', locale))
}
}
// Remove strange locales.
fs.removeSync(path.resolve(__dirname, '../locale/en-001'))
fs.removeSync(path.resolve(__dirname, '../locale/en-150'))
fs.removeSync(path.resolve(__dirname, '../locale/en-US-POSIX'))
fs.removeSync(path.resolve(__dirname, '../locale/es-419'))
}
/**
* CLDR data always has relative time messages duplicated
* for all keys if they're the same.
* For example, if relative time messages are the same for
* "one", "many" and "other" they will still be duplicated
* in CLDR data files.
* This function removes such duplication to reduce the
* resulting bundle size.
* Mutates the object passed as the argument directly.
* @param {object} flavor — Relative time messages of a given flavor.
*/
function compactQuantifiersData(flavour) {
for (const unit of Object.keys(flavour)) {
for (const pastOrFuture of Object.keys(flavour[unit])) {
for (const quantifier of Object.keys(flavour[unit][pastOrFuture])) {
// "other" is the one holding the relative time message in case of duplication.
if (quantifier === 'other') {
continue
}
if (flavour[unit][pastOrFuture][quantifier] === flavour[unit][pastOrFuture].other) {
delete flavour[unit][pastOrFuture][quantifier]
}
}
}
}
}
/**
* Returns a list of all supported locales.
* @return {string[]}
*/
function getLocalesListGenerated() {
return fs.readdirSync(path.join(__dirname, '../locale'))
.filter(_ => fs.statSync(path.join(__dirname, '../locale', _)).isDirectory())
}
/**
* Creates a file with the time messages
* of a given style for a given locale.
* @param {string} locale
* @param {string} style
* @param {object} localeMessages — Time messages object containing all styles.
* @return {object} The relative path to the time messages file.
*/
function createTimeLabels(locale, style, localeMessages) {
const content = JSON.stringify(localeMessages[style], null, '\t')
// `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.
const parentLocale = findParentLocaleHavingFile(locale, `${style}.json`, {
condition: (file) => fs.readFileSync(file, 'utf-8') === content
})
if (parentLocale) {
return `../${parentLocale}/${style}.json`
}
fs.outputFileSync(path.join(__dirname, '../locale', locale, `${style}.json`), content)
return `./${style}.json`
}
/**
* Returns the relative path to a directory where
* `quantify.js` resides for a given locale.
* For example, there are different locales: "ar" and "ar-AE".
* But their `quantify()` function is identical.
* Therefore, it's only stored inside `ar` folder
* and `getQuantifyDirectory('ar-AE')` is "../ar".
* @param {string} locale
* @return {string} [directory]
*/
function findQuantifyDirectory(locale) {
// Look in parent locales' folders.
// Example: `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.
const parentLocale = findParentLocaleHavingFile(locale, 'quantify.js')
if (parentLocale) {
return `../${parentLocale}`
}
// Look in this locale's folder.
if (fs.existsSync(path.join(__dirname, '../locale', locale, 'quantify.js'))) {
return '.'
}
}
/**
* Returns the relative path to a directory where
* a given "flavor" (short, long, narrow) labels file
* resides for a given locale.
* @param {string} locale
* @param {string} flavor
* @return {string} [directory]
*/
function findFlavorDirectory(locale, flavour) {
// Look in parent locales' folders.
// Example: `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.
const parentLocale = findParentLocaleHavingFile(locale, `${flavour}.json`, { self: true })
if (parentLocale) {
if (parentLocale === locale) {
return '.'
}
return `../${parentLocale}`
}
}
/**
* Some files are inherited from a parent locale to a child locale.
* For example, there are different locales: "ar" and "ar-AE".
* But their `quantify()` function is identical.
* Therefore, it's only stored inside `ar` folder
* and "ar-AE" locale reuses that file.
* @param {string} locale
* @param {string} fileName
* @param {object} [options]
* @param {boolean} [options.self] — Allow returning same `locale`.
* @param {function} [options.condition] — An extra condition imposed on the absolute file path of the file.
* @return {string} [locale]
*/
function findParentLocaleHavingFile(locale, fileName, options = {}) {
const restParts = locale.split('-')
const parts = []
let inheritFrom
while (restParts.length > 0) {
parts.push(restParts.shift())
const parentLocale = parts.join('-')
if (!options.self && parentLocale === locale) {
continue
}
if (!fs.existsSync(path.join(__dirname, '../locale', parentLocale))) {
continue
}
if (fs.existsSync(path.join(__dirname, '../locale', parentLocale, fileName))) {
if (!options.condition || options.condition(path.join(__dirname, '../locale', parentLocale, fileName))) {
inheritFrom = parentLocale
}
}
}
return inheritFrom
}

View File

@@ -0,0 +1,75 @@
// CLDR data package is periodically being updated.
// `npm install cldr-data@latest --save-dev`
import CLDR from 'cldr-data'
import plurals from 'make-plural'
import MakePlural from 'make-plural/make-plural'
import UglifyJS from 'uglify-js'
import path from 'path'
import fs from 'fs-extra'
import getLocalesListInCLDR from '../source/CLDR/getLocalesList'
const CLDR_LOCALES = getLocalesListInCLDR()
// Generate a pluralization function for each language
for (const locale of Object.keys(plurals)) {
// // Some keys are locales, e.g. "pt-PT".
// // (whatever that means)
// const language = locale.split('-')[0]
// Don't know what the "root" key is for so skip it.
if (locale === 'root') {
continue
}
// If this locale has no relative time labels
// in CLDR data then skip it.
if (CLDR_LOCALES.indexOf(locale) < 0) {
continue
}
// `make-plural` library converts
// CLDR pluralization rules
// into a javascript function.
// https://github.com/eemeli/make-plural.js
const MakePlurals = MakePlural.load(
CLDR('supplemental/plurals'),
// Ordinals aren't needed for relative date/time formatting
// CLDR('supplemental/ordinals')
)
// Pluralization function code
const functionCode = new MakePlurals(locale).toString('classify')
// Minify pluralization function code
let { error, code } = UglifyJS.minify(functionCode)
if (error) {
throw error
}
// Strip function name.
code = code.replace('function classify(', 'function(')
// If quantifier always returns "other"
// it's as if it wasn't specified at all.
if (code === 'function(n){return"other"}') {
continue
}
// Write pluralization function to a file.
fs.outputFileSync(
path.join(__dirname, '../locale', locale, 'quantify.js'),
`module.exports=${code}`
)
}
/**
* Returns a list of all locales supported by CLDR.
* @return {string[]}
*/
function listAllCLDRLocales() {
return fs.readdirSync(path.join(__dirname, '../node_modules/cldr-dates-full/main/'))
.filter(name => fs.statSync(path.join(__dirname, '../node_modules/cldr-dates-full/main', name)).isDirectory())
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("relative-time-format",[],t):"object"==typeof exports?exports["relative-time-format"]=t():e["relative-time-format"]=t()}(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t);var n="en",o={};function a(){return n}function i(e){return o[e]}function l(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).localeMatcher||"lookup";switch(t){case"lookup":case"best fit":return u(e);default:throw new RangeError('Invalid "localeMatcher" option: '.concat(t))}}function u(e){if(i(e))return e;for(var t=e.split("-");e.length>1;)if(t.pop(),i(e=t.join("-")))return e}function c(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var s=["second","minute","hour","day","week","month","quarter","year"],h=["auto","always"],p=["long","short","narrow"],d=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),f(this,"numeric","always"),f(this,"style","long"),f(this,"localeMatcher","lookup");var n=r.numeric,o=r.style,i=r.localeMatcher;if(n){if(h.indexOf(n)<0)throw new RangeError('Invalid "numeric" option: '.concat(n));this.numeric=n}if(o){if(p.indexOf(o)<0)throw new RangeError('Invalid "style" option: '.concat(o));this.style=o}if(i&&(this.localeMatcher=i),"string"==typeof t&&(t=[t]),t.push(a()),this.locale=e.supportedLocalesOf(t,{localeMatcher:this.localeMatcher})[0],!this.locale)throw new TypeError("No supported locale was found");this.locale=l(this.locale,{localeMatcher:this.localeMatcher}),"undefined"!=typeof Intl&&Intl.NumberFormat&&(this.numberFormat=new Intl.NumberFormat(this.locale))}var t,r,n;return t=e,(r=[{key:"format",value:function(e,t){return this.getRule(e,t).replace("{0}",this.formatNumber(Math.abs(e)))}},{key:"formatToParts",value:function(e,t){var r=this.getRule(e,t),n=r.indexOf("{0}");if(n<0)return[{type:"literal",value:r}];var o=[];return n>0&&o.push({type:"literal",value:r.slice(0,n)}),o.push({unit:t,type:"integer",value:this.formatNumber(Math.abs(e))}),n+"{0}".length<r.length-1&&o.push({type:"literal",value:r.slice(n+"{0}".length)}),o}},{key:"getRule",value:function(e,t){if(s.indexOf(t)<0)throw new RangeError("Unknown time unit: ".concat(t,"."));var r=i(this.locale)[this.style][t];if("auto"===this.numeric)if(-2===e||-1===e){var n=r["previous".concat(-1===e?"":"-"+Math.abs(e))];if(n)return n}else if(1===e||2===e){var o=r["next".concat(1===e?"":"-"+Math.abs(e))];if(o)return o}else if(0===e&&r.current)return r.current;var a=r[e<=0?"past":"future"];if("string"==typeof a)return a;var l=i(this.locale).quantify,u=l&&l(Math.abs(e));return a[u=u||"other"]||a.other}},{key:"formatNumber",value:function(e){return this.numberFormat?this.numberFormat.format(e):String(e)}},{key:"resolvedOptions",value:function(){return{locale:this.locale,style:this.style,numeric:this.numeric}}}])&&c(t.prototype,r),n&&c(t,n),e}();d.supportedLocalesOf=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.filter(function(e){return l(e,t)})},d.addLocale=function(e){if(!e)throw new Error("No locale data passed");o[e.locale]=e},d.setDefaultLocale=function(e){n=e},d.getDefaultLocale=a,r.d(t,"default",function(){return d})}])});
//# sourceMappingURL=relative-time-format.min.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,276 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = extractRelativeTimeMessages;
var _RelativeTimeFormat = require("../RelativeTimeFormat");
// import { isEqual } from 'lodash'
// Detects short and narrow flavours of labels (yr., mo., etc).
// E.g. there are "month", "month-short", "month-narrow".
// More on "narrow" vs "short":
// http://cldr.unicode.org/translation/plurals#TOC-Narrow-and-Short-Forms
var short = /-short$/;
var narrow = /-narrow$/; // Converts locale data from CLDR format to this library's format.
//
// CLDR locale data example:
//
// ```json
// {
// "main": {
// "en-US-POSIX": {
// "identity": {
// "language": "en",
// ...
// },
// "dates": {
// "fields": {
// "year": {
// "displayName": "year",
// "relative-type--1": "last year",
// "relative-type-0": "this year",
// "relative-type-1": "next year",
// "relativeTime-type-future": {
// "relativeTimePattern-count-one": "in {0} year",
// "relativeTimePattern-count-other": "in {0} years"
// },
// "relativeTime-type-past": {
// "relativeTimePattern-count-one": "{0} year ago",
// "relativeTimePattern-count-other": "{0} years ago"
// }
// },
// ...
// ```
//
// Parsed locale data example:
//
// ```json
// {
// "long":
// {
// ...
// "second": [
// {
// "one": "a second ago",
// "other": "{0} seconds ago"
// },
// {
// "one": "in a second",
// "other": "in {0} seconds"
// }
// ],
// ...
// },
// "short":
// {
// ...
// },
// ...
// }
// ```
function extractRelativeTimeMessages(localeData) {
// Extract `locale` from CLDR locale data.
var locale = Object.keys(localeData.main)[0];
var timeUnitsFormattingRules = localeData.main[locale].dates.fields;
return Object.keys(timeUnitsFormattingRules).filter(function (unit) {
// Take only the generic time measurement units
// (skip exotic ones like "fri" on "thu").
return _RelativeTimeFormat.UNITS.indexOf(parseUnit(unit).unit) >= 0;
}).reduce(function (localeData, _unit) {
var _parseUnit = parseUnit(_unit),
unit = _parseUnit.unit,
type = _parseUnit.type;
return setUnitRules(localeData, type, unit, extractTimeUnitFormattingRules(timeUnitsFormattingRules[_unit]));
}, {});
}
/**
* Parses CLDR time unit formatting rules.
* @param {object} - CLDR time unit formatting rules.
* @return {(object|string)}
*/
function extractTimeUnitFormattingRules(rulesCLDR) {
var rules = {}; // "relative" values aren't suitable for "ago" or "in a" cases,
// because "1 year ago" != "last year" (too vague for Jan 30th)
// and "in 0.49 years" != "this year" (it could be Nov 30th).
// Still including them here for `Intl.RelativeTimeFormat` polyfill.
// "yesterday".
//
// "the day before yesterday".
// For example, in German it's "Vorgestern".
//
// etc.
//
var previousIndex = 1;
while (rulesCLDR["relative-type--".concat(previousIndex)]) {
rules["previous".concat(previousIndex === 1 ? '' : '-' + previousIndex)] = rulesCLDR["relative-type--".concat(previousIndex)];
previousIndex++;
} // "today"
/* istanbul ignore else */
if (rulesCLDR['relative-type-0']) {
rules.current = rulesCLDR['relative-type-0'];
} // "tomorrow".
//
// "the day after tomorrow".
// For example, in German it's "Übermorgen".
//
// etc.
//
var nextIndex = 1;
while (rulesCLDR["relative-type-".concat(nextIndex)]) {
rules["next".concat(nextIndex === 1 ? '' : '-' + nextIndex)] = rulesCLDR["relative-type-".concat(nextIndex)];
nextIndex++;
} // Formatting past times.
//
// E.g.:
//
// "relativeTime-type-past":
// {
// "relativeTimePattern-count-one": "{0} mo. ago",
// "relativeTimePattern-count-other": "{0} mo. ago"
// }
//
/* istanbul ignore else */
if (rulesCLDR['relativeTime-type-past']) {
var past = rulesCLDR['relativeTime-type-past'];
rules.past = {}; // Populate all quantifiers ("one", "other", etc).
var _arr = Object.keys(past);
for (var _i = 0; _i < _arr.length; _i++) {
var quantifier = _arr[_i];
rules.past[quantifier.replace('relativeTimePattern-count-', '')] = past[quantifier];
} // Delete all duplicates of "other" rule.
var _arr2 = Object.keys(rules.past);
for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
var _quantifier = _arr2[_i2];
if (_quantifier !== 'other' && rules.past[_quantifier] === rules.past.other) {
delete rules.past[_quantifier];
}
} // If only "other" rule is present then "rules" is not an object and is a string.
if (Object.keys(rules.past).length === 1) {
rules.past = rules.past.other;
}
} // Formatting future times.
//
// E.g.:
//
// "relativeTime-type-future":
// {
// "relativeTimePattern-count-one": "in {0} mo.",
// "relativeTimePattern-count-other": "in {0} mo."
// }
//
/* istanbul ignore else */
if (rulesCLDR['relativeTime-type-future']) {
var future = rulesCLDR['relativeTime-type-future'];
rules.future = {}; // Populate all quantifiers ("one", "other", etc).
var _arr3 = Object.keys(future);
for (var _i3 = 0; _i3 < _arr3.length; _i3++) {
var _quantifier2 = _arr3[_i3];
rules.future[_quantifier2.replace('relativeTimePattern-count-', '')] = future[_quantifier2];
} // Delete all duplicates of "other" rule.
var _arr4 = Object.keys(rules.future);
for (var _i4 = 0; _i4 < _arr4.length; _i4++) {
var _quantifier3 = _arr4[_i4];
if (_quantifier3 !== 'other' && rules.future[_quantifier3] === rules.future.other) {
delete rules.future[_quantifier3];
}
} // If only "other" rule is present then "rules" is not an object and is a string.
if (Object.keys(rules.future).length === 1) {
rules.future = rules.future.other;
}
} // // If `.past` === `.future` then replace them with `.other`.
// // (only eligible for "tiny" and "*-time" locale data which is not part of CLDR)
// if (isEqual(rules.past, rules.future)) {
// rules.other = rules.past
// delete rules.future
// }
// // If only "other" rule is defined for a time unit
// // then make "rules" a string rather than an object.
// if (Object.keys(rules).length === 1) {
// rules = rules.other
// }
return rules;
}
/**
* Sets time unit formatting rules in locale data.
* @param {object} localeData
* @param {string} type
* @param {string} unit
* @param {object} rules
* @return {object} Locale data.
*/
function setUnitRules(localeData, type, unit, rules) {
if (!localeData[type]) {
localeData[type] = {};
}
localeData[type][unit] = rules;
return localeData;
}
/**
* Parses CLDR time unit into `unit` and `type`.
* @param {string} CLDR_unit
* @return {object} `{ type, unit }`.
*/
function parseUnit(unit) {
if (narrow.test(unit)) {
return {
type: 'narrow',
unit: unit.replace(narrow, '')
};
}
if (short.test(unit)) {
return {
type: 'short',
unit: unit.replace(short, '')
};
}
return {
type: 'long',
unit: unit
};
}
//# sourceMappingURL=extractRelativeTimeMessages.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,704 @@
"use strict";
var _extractRelativeTimeMessages = _interopRequireDefault(require("./extractRelativeTimeMessages"));
var _en = require("../../locale/en");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('CLDR', function () {
it('should parse Unicode CLDR locale data', function () {
// console.log(JSON.stringify(extractRelativeTimeMessages(englishDateMessagesInCLDR), null, 2))
(0, _extractRelativeTimeMessages.default)(englishDateMessagesInCLDR).should.deep.equal(englishRelativeTimeMessages);
});
});
var englishRelativeTimeMessages = {
"long": {
"year": {
"previous": "last year",
"current": "this year",
"next": "next year",
"past": {
"one": "{0} year ago",
"other": "{0} years ago"
},
"future": {
"one": "in {0} year",
"other": "in {0} years"
}
},
"quarter": {
"previous": "last quarter",
"current": "this quarter",
"next": "next quarter",
"future": {
"one": "in {0} quarter",
"other": "in {0} quarters"
},
"past": {
"one": "{0} quarter ago",
"other": "{0} quarters ago"
}
},
"month": {
"previous": "last month",
"current": "this month",
"next": "next month",
"past": {
"one": "{0} month ago",
"other": "{0} months ago"
},
"future": {
"one": "in {0} month",
"other": "in {0} months"
}
},
"week": {
"previous": "last week",
"current": "this week",
"next": "next week",
"past": {
"one": "{0} week ago",
"other": "{0} weeks ago"
},
"future": {
"one": "in {0} week",
"other": "in {0} weeks"
}
},
"day": {
"previous-2": "the day before yesterday (test)",
"previous": "yesterday",
"current": "today",
"next": "tomorrow",
"next-2": "the day after tomorrow (test)",
"past": {
"one": "{0} day ago",
"other": "{0} days ago"
},
"future": {
"one": "in {0} day",
"other": "in {0} days"
}
},
"hour": {
"current": "this hour",
"past": {
"one": "{0} hour ago",
"other": "{0} hours ago"
},
"future": {
"one": "in {0} hour",
"other": "in {0} hours"
}
},
"minute": {
"current": "this minute",
"past": {
"one": "{0} minute ago",
"other": "{0} minutes ago"
},
"future": {
"one": "in {0} minute",
"other": "in {0} minutes"
}
},
"second": {
"current": "now",
"past": {
"one": "{0} second ago",
"other": "{0} seconds ago"
},
"future": {
"one": "in {0} second",
"other": "in {0} seconds"
}
}
},
"short": {
"year": {
"previous": "last yr.",
"current": "this yr.",
"next": "next yr.",
"past": "{0} yr. ago",
"future": "in {0} yr."
},
"quarter": {
"previous": "last qtr.",
"current": "this qtr.",
"next": "next qtr.",
"future": {
"one": "in {0} qtr.",
"other": "in {0} qtrs."
},
"past": {
"one": "{0} qtr. ago",
"other": "{0} qtrs. ago"
}
},
"month": {
"previous": "last mo.",
"current": "this mo.",
"next": "next mo.",
"past": "{0} mo. ago",
"future": "in {0} mo."
},
"week": {
"previous": "last wk.",
"current": "this wk.",
"next": "next wk.",
"past": "{0} wk. ago",
"future": "in {0} wk."
},
"day": {
"previous": "yesterday",
"current": "today",
"next": "tomorrow",
"past": {
"one": "{0} day ago",
"other": "{0} days ago"
},
"future": {
"one": "in {0} day",
"other": "in {0} days"
}
},
"hour": {
"current": "this hour",
"past": "{0} hr. ago",
"future": "in {0} hr."
},
"minute": {
"current": "this minute",
"past": "{0} min. ago",
"future": "in {0} min."
},
"second": {
"current": "now",
"past": "{0} sec. ago",
"future": "in {0} sec."
}
},
"narrow": {
"year": {
"previous": "last yr.",
"current": "this yr.",
"next": "next yr.",
"future": "in {0} yr.",
"past": "{0} yr. ago"
},
"quarter": {
"previous": "last qtr.",
"current": "this qtr.",
"next": "next qtr.",
"future": {
"one": "in {0} qtr.",
"other": "in {0} qtrs."
},
"past": {
"one": "{0} qtr. ago",
"other": "{0} qtrs. ago"
}
},
"month": {
"previous": "last mo.",
"current": "this mo.",
"next": "next mo.",
"future": "in {0} mo.",
"past": "{0} mo. ago"
},
"week": {
"previous": "last wk.",
"current": "this wk.",
"next": "next wk.",
"future": "in {0} wk.",
"past": "{0} wk. ago"
},
"day": {
"previous": "yesterday",
"current": "today",
"next": "tomorrow",
"past": {
"one": "{0} day ago",
"other": "{0} days ago"
},
"future": {
"one": "in {0} day",
"other": "in {0} days"
}
},
"hour": {
"current": "this hour",
"future": "in {0} hr.",
"past": "{0} hr. ago"
},
"minute": {
"current": "this minute",
"future": "in {0} min.",
"past": "{0} min. ago"
},
"second": {
"current": "now",
"future": "in {0} sec.",
"past": "{0} sec. ago"
}
}
};
var englishDateMessagesInCLDR = {
"main": {
"en-US-POSIX": {
"identity": {
"version": {
"_number": "$Revision: 11914 $",
"_cldrVersion": "29"
},
"language": "en",
"territory": "US",
"variant": "POSIX"
},
"dates": {
"fields": {
"era": {
"displayName": "era"
},
"year": {
"displayName": "year",
"relative-type--1": "last year",
"relative-type-0": "this year",
"relative-type-1": "next year",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} year",
"relativeTimePattern-count-other": "in {0} years"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} year ago",
"relativeTimePattern-count-other": "{0} years ago"
}
},
"year-short": {
"displayName": "yr.",
"relative-type--1": "last yr.",
"relative-type-0": "this yr.",
"relative-type-1": "next yr.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} yr.",
"relativeTimePattern-count-other": "in {0} yr."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} yr. ago",
"relativeTimePattern-count-other": "{0} yr. ago"
}
},
"year-narrow": {
"displayName": "yr.",
"relative-type--1": "last yr.",
"relative-type-0": "this yr.",
"relative-type-1": "next yr.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} yr.",
"relativeTimePattern-count-other": "in {0} yr."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} yr. ago",
"relativeTimePattern-count-other": "{0} yr. ago"
}
},
"quarter": {
"displayName": "quarter",
"relative-type--1": "last quarter",
"relative-type-0": "this quarter",
"relative-type-1": "next quarter",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} quarter",
"relativeTimePattern-count-other": "in {0} quarters"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} quarter ago",
"relativeTimePattern-count-other": "{0} quarters ago"
}
},
"quarter-short": {
"displayName": "qtr.",
"relative-type--1": "last qtr.",
"relative-type-0": "this qtr.",
"relative-type-1": "next qtr.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} qtr.",
"relativeTimePattern-count-other": "in {0} qtrs."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} qtr. ago",
"relativeTimePattern-count-other": "{0} qtrs. ago"
}
},
"quarter-narrow": {
"displayName": "qtr.",
"relative-type--1": "last qtr.",
"relative-type-0": "this qtr.",
"relative-type-1": "next qtr.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} qtr.",
"relativeTimePattern-count-other": "in {0} qtrs."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} qtr. ago",
"relativeTimePattern-count-other": "{0} qtrs. ago"
}
},
"month": {
"displayName": "month",
"relative-type--1": "last month",
"relative-type-0": "this month",
"relative-type-1": "next month",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} month",
"relativeTimePattern-count-other": "in {0} months"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} month ago",
"relativeTimePattern-count-other": "{0} months ago"
}
},
"month-short": {
"displayName": "mo.",
"relative-type--1": "last mo.",
"relative-type-0": "this mo.",
"relative-type-1": "next mo.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} mo.",
"relativeTimePattern-count-other": "in {0} mo."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} mo. ago",
"relativeTimePattern-count-other": "{0} mo. ago"
}
},
"month-narrow": {
"displayName": "mo.",
"relative-type--1": "last mo.",
"relative-type-0": "this mo.",
"relative-type-1": "next mo.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} mo.",
"relativeTimePattern-count-other": "in {0} mo."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} mo. ago",
"relativeTimePattern-count-other": "{0} mo. ago"
}
},
"week": {
"displayName": "week",
"relative-type--1": "last week",
"relative-type-0": "this week",
"relative-type-1": "next week",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} week",
"relativeTimePattern-count-other": "in {0} weeks"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} week ago",
"relativeTimePattern-count-other": "{0} weeks ago"
}
},
"week-short": {
"displayName": "wk.",
"relative-type--1": "last wk.",
"relative-type-0": "this wk.",
"relative-type-1": "next wk.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} wk.",
"relativeTimePattern-count-other": "in {0} wk."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} wk. ago",
"relativeTimePattern-count-other": "{0} wk. ago"
}
},
"week-narrow": {
"displayName": "wk.",
"relative-type--1": "last wk.",
"relative-type-0": "this wk.",
"relative-type-1": "next wk.",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} wk.",
"relativeTimePattern-count-other": "in {0} wk."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} wk. ago",
"relativeTimePattern-count-other": "{0} wk. ago"
}
},
"day": {
"displayName": "day",
"relative-type--2": "the day before yesterday (test)",
"relative-type--1": "yesterday",
"relative-type-0": "today",
"relative-type-1": "tomorrow",
"relative-type-2": "the day after tomorrow (test)",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} day",
"relativeTimePattern-count-other": "in {0} days"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} day ago",
"relativeTimePattern-count-other": "{0} days ago"
}
},
"day-short": {
"displayName": "day",
"relative-type--1": "yesterday",
"relative-type-0": "today",
"relative-type-1": "tomorrow",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} day",
"relativeTimePattern-count-other": "in {0} days"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} day ago",
"relativeTimePattern-count-other": "{0} days ago"
}
},
"day-narrow": {
"displayName": "day",
"relative-type--1": "yesterday",
"relative-type-0": "today",
"relative-type-1": "tomorrow",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} day",
"relativeTimePattern-count-other": "in {0} days"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} day ago",
"relativeTimePattern-count-other": "{0} days ago"
}
},
"weekday": {
"displayName": "day of the week"
},
"sun": {
"relative-type--1": "last Sunday",
"relative-type-0": "this Sunday",
"relative-type-1": "next Sunday"
},
"sun-short": {
"relative-type--1": "last Sun.",
"relative-type-0": "this Sun.",
"relative-type-1": "next Sun."
},
"sun-narrow": {
"relative-type--1": "last Su",
"relative-type-0": "this Su",
"relative-type-1": "next Su"
},
"mon": {
"relative-type--1": "last Monday",
"relative-type-0": "this Monday",
"relative-type-1": "next Monday"
},
"mon-short": {
"relative-type--1": "last Mon.",
"relative-type-0": "this Mon.",
"relative-type-1": "next Mon."
},
"mon-narrow": {
"relative-type--1": "last M",
"relative-type-0": "this M",
"relative-type-1": "next M"
},
"tue": {
"relative-type--1": "last Tuesday",
"relative-type-0": "this Tuesday",
"relative-type-1": "next Tuesday"
},
"tue-short": {
"relative-type--1": "last Tue.",
"relative-type-0": "this Tue.",
"relative-type-1": "next Tue."
},
"tue-narrow": {
"relative-type--1": "last Tu",
"relative-type-0": "this Tu",
"relative-type-1": "next Tu"
},
"wed": {
"relative-type--1": "last Wednesday",
"relative-type-0": "this Wednesday",
"relative-type-1": "next Wednesday"
},
"wed-short": {
"relative-type--1": "last Wed.",
"relative-type-0": "this Wed.",
"relative-type-1": "next Wed."
},
"wed-narrow": {
"relative-type--1": "last W",
"relative-type-0": "this W",
"relative-type-1": "next W"
},
"thu": {
"relative-type--1": "last Thursday",
"relative-type-0": "this Thursday",
"relative-type-1": "next Thursday"
},
"thu-short": {
"relative-type--1": "last Thu.",
"relative-type-0": "this Thu.",
"relative-type-1": "next Thu."
},
"thu-narrow": {
"relative-type--1": "last Th",
"relative-type-0": "this Th",
"relative-type-1": "next Th"
},
"fri": {
"relative-type--1": "last Friday",
"relative-type-0": "this Friday",
"relative-type-1": "next Friday"
},
"fri-short": {
"relative-type--1": "last Fri.",
"relative-type-0": "this Fri.",
"relative-type-1": "next Fri."
},
"fri-narrow": {
"relative-type--1": "last F",
"relative-type-0": "this F",
"relative-type-1": "next F"
},
"sat": {
"relative-type--1": "last Saturday",
"relative-type-0": "this Saturday",
"relative-type-1": "next Saturday"
},
"sat-short": {
"relative-type--1": "last Sat.",
"relative-type-0": "this Sat.",
"relative-type-1": "next Sat."
},
"sat-narrow": {
"relative-type--1": "last Sa",
"relative-type-0": "this Sa",
"relative-type-1": "next Sa"
},
"dayperiod": {
"displayName": "AM/PM",
"displayName-alt-variant": "am/pm"
},
"hour": {
"displayName": "hour",
"relative-type-0": "this hour",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} hour",
"relativeTimePattern-count-other": "in {0} hours"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} hour ago",
"relativeTimePattern-count-other": "{0} hours ago"
}
},
"hour-short": {
"displayName": "hr.",
"relative-type-0": "this hour",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} hr.",
"relativeTimePattern-count-other": "in {0} hr."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} hr. ago",
"relativeTimePattern-count-other": "{0} hr. ago"
}
},
"hour-narrow": {
"displayName": "hr.",
"relative-type-0": "this hour",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} hr.",
"relativeTimePattern-count-other": "in {0} hr."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} hr. ago",
"relativeTimePattern-count-other": "{0} hr. ago"
}
},
"minute": {
"displayName": "minute",
"relative-type-0": "this minute",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} minute",
"relativeTimePattern-count-other": "in {0} minutes"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} minute ago",
"relativeTimePattern-count-other": "{0} minutes ago"
}
},
"minute-short": {
"displayName": "min.",
"relative-type-0": "this minute",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} min.",
"relativeTimePattern-count-other": "in {0} min."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} min. ago",
"relativeTimePattern-count-other": "{0} min. ago"
}
},
"minute-narrow": {
"displayName": "min.",
"relative-type-0": "this minute",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} min.",
"relativeTimePattern-count-other": "in {0} min."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} min. ago",
"relativeTimePattern-count-other": "{0} min. ago"
}
},
"second": {
"displayName": "second",
"relative-type-0": "now",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} second",
"relativeTimePattern-count-other": "in {0} seconds"
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} second ago",
"relativeTimePattern-count-other": "{0} seconds ago"
}
},
"second-short": {
"displayName": "sec.",
"relative-type-0": "now",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} sec.",
"relativeTimePattern-count-other": "in {0} sec."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} sec. ago",
"relativeTimePattern-count-other": "{0} sec. ago"
}
},
"second-narrow": {
"displayName": "sec.",
"relative-type-0": "now",
"relativeTime-type-future": {
"relativeTimePattern-count-one": "in {0} sec.",
"relativeTimePattern-count-other": "in {0} sec."
},
"relativeTime-type-past": {
"relativeTimePattern-count-one": "{0} sec. ago",
"relativeTimePattern-count-other": "{0} sec. ago"
}
},
"zone": {
"displayName": "time zone"
}
}
}
}
}
};
//# sourceMappingURL=extractRelativeTimeMessages.test.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getLocalesList;
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Returns a list of all locales supported by CLDR.
* @return {string[]}
*/
function getLocalesList() {
return _fs.default.readdirSync(_path.default.join(__dirname, '../../node_modules/cldr-dates-full/main/')).filter(function (name) {
return _fs.default.statSync(_path.default.join(__dirname, '../../node_modules/cldr-dates-full/main', name)).isDirectory();
});
}
//# sourceMappingURL=getLocalesList.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../source/CLDR/getLocalesList.js"],"names":["getLocalesList","fs","readdirSync","path","join","__dirname","filter","name","statSync","isDirectory"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;AAIe,SAASA,cAAT,GAA0B;AACxC,SAAOC,YAAGC,WAAH,CAAeC,cAAKC,IAAL,CAAUC,SAAV,EAAqB,0CAArB,CAAf,EACLC,MADK,CACE,UAAAC,IAAI;AAAA,WAAIN,YAAGO,QAAH,CAAYL,cAAKC,IAAL,CAAUC,SAAV,EAAqB,yCAArB,EAAgEE,IAAhE,CAAZ,EAAmFE,WAAnF,EAAJ;AAAA,GADN,CAAP;AAEA","sourcesContent":["import fs from 'fs'\r\nimport path from 'path'\r\n\r\n/**\r\n * Returns a list of all locales supported by CLDR.\r\n * @return {string[]}\r\n */\r\nexport default function getLocalesList() {\r\n\treturn fs.readdirSync(path.join(__dirname, '../../node_modules/cldr-dates-full/main/'))\r\n\t\t.filter(name => fs.statSync(path.join(__dirname, '../../node_modules/cldr-dates-full/main', name)).isDirectory())\r\n}\r\n"],"file":"getLocalesList.js"}

View File

@@ -0,0 +1,41 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getDefaultLocale = getDefaultLocale;
exports.setDefaultLocale = setDefaultLocale;
exports.getLocaleData = getLocaleData;
exports.addLocaleData = addLocaleData;
// Fallback locale.
// (when not a single one of the supplied "preferred" locales is available)
var defaultLocale = 'en'; // For all locales added
// their relative time formatter messages will be stored here.
var localesData = {};
function getDefaultLocale() {
return defaultLocale;
}
function setDefaultLocale(locale) {
defaultLocale = locale;
} // export function isLocaleDataAvailable(locale) {
// return localesData.hasOwnProperty(locale)
// }
function getLocaleData(locale) {
return localesData[locale];
}
function addLocaleData(localeData) {
if (!localeData) {
throw new Error('No locale data passed');
} // This locale data is stored in a global variable
// and later used when calling `.format(time)`.
localesData[localeData.locale] = localeData;
}
//# sourceMappingURL=LocaleDataStore.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../source/LocaleDataStore.js"],"names":["defaultLocale","localesData","getDefaultLocale","setDefaultLocale","locale","getLocaleData","addLocaleData","localeData","Error"],"mappings":";;;;;;;;;AAAA;AACA;AACA,IAAIA,aAAa,GAAG,IAApB,C,CAEA;AACA;;AACA,IAAMC,WAAW,GAAG,EAApB;;AAEO,SAASC,gBAAT,GAA4B;AACjC,SAAOF,aAAP;AACD;;AAEM,SAASG,gBAAT,CAA0BC,MAA1B,EAAkC;AACvCJ,EAAAA,aAAa,GAAGI,MAAhB;AACD,C,CAED;AACA;AACA;;;AAEO,SAASC,aAAT,CAAuBD,MAAvB,EAA+B;AACpC,SAAOH,WAAW,CAACG,MAAD,CAAlB;AACD;;AAEM,SAASE,aAAT,CAAuBC,UAAvB,EAAmC;AACxC,MAAI,CAACA,UAAL,EAAiB;AACf,UAAM,IAAIC,KAAJ,CAAU,uBAAV,CAAN;AACD,GAHuC,CAIxC;AACA;;;AACAP,EAAAA,WAAW,CAACM,UAAU,CAACH,MAAZ,CAAX,GAAiCG,UAAjC;AACD","sourcesContent":["// Fallback locale.\r\n// (when not a single one of the supplied \"preferred\" locales is available)\r\nlet defaultLocale = 'en'\r\n\r\n// For all locales added\r\n// their relative time formatter messages will be stored here.\r\nconst localesData = {}\r\n\r\nexport function getDefaultLocale() {\r\n return defaultLocale\r\n}\r\n\r\nexport function setDefaultLocale(locale) {\r\n defaultLocale = locale\r\n}\r\n\r\n// export function isLocaleDataAvailable(locale) {\r\n// return localesData.hasOwnProperty(locale)\r\n// }\r\n\r\nexport function getLocaleData(locale) {\r\n return localesData[locale]\r\n}\r\n\r\nexport function addLocaleData(localeData) {\r\n if (!localeData) {\r\n throw new Error('No locale data passed')\r\n }\r\n // This locale data is stored in a global variable\r\n // and later used when calling `.format(time)`.\r\n localesData[localeData.locale] = localeData\r\n}"],"file":"LocaleDataStore.js"}

View File

@@ -0,0 +1,10 @@
"use strict";
var _LocaleDataStore = require("./LocaleDataStore");
describe('LocaleDataStore', function () {
it('"addLocaleData" should throw if no locale data passed', function () {
expect(_LocaleDataStore.addLocaleData).to.throw('No locale data passed');
});
});
//# sourceMappingURL=LocaleDataStore.test.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../source/LocaleDataStore.test.js"],"names":["describe","it","expect","addLocaleData","to","throw"],"mappings":";;AAAA;;AAEAA,QAAQ,CAAC,iBAAD,EAAoB,YAAM;AAChCC,EAAAA,EAAE,CAAC,uDAAD,EAA0D,YAAM;AAChEC,IAAAA,MAAM,CAACC,8BAAD,CAAN,CAAsBC,EAAtB,CAAyBC,KAAzB,CAA+B,uBAA/B;AACD,GAFC,CAAF;AAGD,CAJO,CAAR","sourcesContent":["import { addLocaleData } from './LocaleDataStore'\r\n\r\ndescribe('LocaleDataStore', () => {\r\n it('\"addLocaleData\" should throw if no locale data passed', () => {\r\n expect(addLocaleData).to.throw('No locale data passed')\r\n })\r\n})"],"file":"LocaleDataStore.test.js"}

View File

@@ -0,0 +1,369 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.UNITS = void 0;
var _LocaleDataStore = require("./LocaleDataStore");
var _resolveLocale = _interopRequireDefault(require("./resolveLocale"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
// Valid time units.
var UNITS = ["second", "minute", "hour", "day", "week", "month", "quarter", "year"]; // Valid values for the `numeric` option.
exports.UNITS = UNITS;
var NUMERIC_VALUES = ["auto", "always"]; // Valid values for the `style` option.
var STYLE_VALUES = ["long", "short", "narrow"];
/**
* Polyfill for `Intl.RelativeTimeFormat` proposal.
* https://github.com/tc39/proposal-intl-relative-time
* https://github.com/tc39/proposal-intl-relative-time/issues/55
*/
var RelativeTimeFormat =
/*#__PURE__*/
function () {
/**
* @param {(string|string[])} [locales] - Preferred locales (or locale).
* @param {Object} [options] - Formatting options.
* @param {string} [options.style="long"] - One of: "long", "short", "narrow".
* @param {string} [options.numeric="always"] - (Version >= 2) One of: "always", "auto".
* @param {string} [options.localeMatcher="lookup"] - One of: "lookup", "best fit". Currently only "lookup" is supported.
*/
function RelativeTimeFormat() {
var locales = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
_classCallCheck(this, RelativeTimeFormat);
_defineProperty(this, "numeric", "always");
_defineProperty(this, "style", "long");
_defineProperty(this, "localeMatcher", "lookup");
var numeric = options.numeric,
style = options.style,
localeMatcher = options.localeMatcher; // Set `numeric` option.
if (numeric) {
if (NUMERIC_VALUES.indexOf(numeric) < 0) {
throw new RangeError("Invalid \"numeric\" option: ".concat(numeric));
}
this.numeric = numeric;
} // Set `style` option.
if (style) {
if (STYLE_VALUES.indexOf(style) < 0) {
throw new RangeError("Invalid \"style\" option: ".concat(style));
}
this.style = style;
} // Set `localeMatcher` option.
if (localeMatcher) {
this.localeMatcher = localeMatcher;
} // Set `locale`.
// Convert `locales` to an array.
if (typeof locales === 'string') {
locales = [locales];
} // Add default locale.
locales.push((0, _LocaleDataStore.getDefaultLocale)()); // Choose the most appropriate locale.
this.locale = RelativeTimeFormat.supportedLocalesOf(locales, {
localeMatcher: this.localeMatcher
})[0];
if (!this.locale) {
throw new TypeError("No supported locale was found");
}
this.locale = (0, _resolveLocale.default)(this.locale, {
localeMatcher: this.localeMatcher
}); // Use `Intl.NumberFormat` for formatting numbers (when available).
if (typeof Intl !== 'undefined' && Intl.NumberFormat) {
this.numberFormat = new Intl.NumberFormat(this.locale);
}
}
/**
* Formats time `value` in `units` (either in past or in future).
* @param {number} value - Time interval value.
* @param {string} unit - Time interval measurement unit.
* @return {string}
* @throws {RangeError} If unit is not one of "second", "minute", "hour", "day", "week", "month", "quarter".
* @example
* // Returns "2 days ago"
* rtf.format(-2, "day")
* // Returns "in 5 minutes"
* rtf.format(5, "minute")
*/
_createClass(RelativeTimeFormat, [{
key: "format",
value: function format(value, unit) {
return this.getRule(value, unit).replace('{0}', this.formatNumber(Math.abs(value)));
}
/**
* Formats time `value` in `units` (either in past or in future).
* @param {number} value - Time interval value.
* @param {string} unit - Time interval measurement unit.
* @return {Object[]} The parts (`{ type, value }`).
* @throws {RangeError} If unit is not one of "second", "minute", "hour", "day", "week", "month", "quarter".
* @example
* // Version 1.
* // Returns [
* // { type: "literal", value: "in " },
* // { type: "day", value: "100" },
* // { type: "literal", value: " days" }
* // ]
* rtf.formatToParts(100, "day")
* //
* // Version 2.
* // Returns [
* // { type: "literal", value: "in " },
* // { type: "integer", value: "100", unit: "day" },
* // { type: "literal", value: " days" }
* // ]
* rtf.formatToParts(100, "day")
*/
}, {
key: "formatToParts",
value: function formatToParts(value, unit) {
var rule = this.getRule(value, unit);
var valueIndex = rule.indexOf("{0}"); // "yesterday"/"today"/"tomorrow".
if (valueIndex < 0) {
return [{
type: "literal",
value: rule
}];
}
var parts = [];
if (valueIndex > 0) {
parts.push({
type: "literal",
value: rule.slice(0, valueIndex)
});
}
parts.push({
unit: unit,
type: "integer",
value: this.formatNumber(Math.abs(value))
});
if (valueIndex + "{0}".length < rule.length - 1) {
parts.push({
type: "literal",
value: rule.slice(valueIndex + "{0}".length)
});
}
return parts;
}
/**
* Returns formatting rule for `value` in `units` (either in past or in future).
* @param {number} value - Time interval value.
* @param {string} unit - Time interval measurement unit.
* @return {string}
* @throws {RangeError} If unit is not one of "second", "minute", "hour", "day", "week", "month", "quarter".
* @example
* // Returns "{0} days ago"
* getRule(-2, "day")
*/
}, {
key: "getRule",
value: function getRule(value, unit) {
if (UNITS.indexOf(unit) < 0) {
throw new RangeError("Unknown time unit: ".concat(unit, "."));
} // Get locale-specific time interval formatting rules
// of a given `style` for the given value of measurement `unit`.
//
// E.g.:
//
// ```json
// {
// "past": {
// "one": "a second ago",
// "other": "{0} seconds ago"
// },
// "future": {
// "one": "in a second",
// "other": "in {0} seconds"
// }
// }
// ```
//
var unitRules = (0, _LocaleDataStore.getLocaleData)(this.locale)[this.style][unit]; // Special case for "yesterday"/"today"/"tomorrow".
if (this.numeric === "auto") {
// "yesterday", "the day before yesterday", etc.
if (value === -2 || value === -1) {
var message = unitRules["previous".concat(value === -1 ? '' : '-' + Math.abs(value))];
if (message) {
return message;
}
} // "tomorrow", "the day after tomorrow", etc.
else if (value === 1 || value === 2) {
var _message = unitRules["next".concat(value === 1 ? '' : '-' + Math.abs(value))];
if (_message) {
return _message;
}
} // "today"
else if (value === 0) {
if (unitRules.current) {
return unitRules.current;
}
}
} // Choose either "past" or "future" based on time `value` sign.
// If there's only "other" then it's being collapsed.
// (the resulting bundle size optimization technique)
var quantifierRules = unitRules[value <= 0 ? "past" : "future"]; // Bundle size optimization technique.
if (typeof quantifierRules === "string") {
return quantifierRules;
} // Quantify `value`.
var quantify = (0, _LocaleDataStore.getLocaleData)(this.locale).quantify;
var quantifier = quantify && quantify(Math.abs(value)); // There seems to be no such locale in CLDR
// for which `quantify` is missing
// and still `past` and `future` messages
// contain something other than "other".
/* istanbul ignore next */
quantifier = quantifier || 'other'; // "other" rule is supposed to be always present.
// If only "other" rule is present then "rules" is not an object and is a string.
return quantifierRules[quantifier] || quantifierRules.other;
}
/**
* Formats a number into a string.
* Uses `Intl.NumberFormat` when available.
* @param {number} number
* @return {string}
*/
}, {
key: "formatNumber",
value: function formatNumber(number) {
return this.numberFormat ? this.numberFormat.format(number) : String(number);
}
/**
* Returns a new object with properties reflecting the locale and date and time formatting options computed during initialization of this DateTimeFormat object.
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions
* @return {Object}
*/
}, {
key: "resolvedOptions",
value: function resolvedOptions() {
return {
locale: this.locale,
style: this.style,
numeric: this.numeric
};
}
}]);
return RelativeTimeFormat;
}();
/**
* Returns an array containing those of the provided locales
* that are supported in collation without having to fall back
* to the runtime's default locale.
* @param {(string|string[])} locale - A string with a BCP 47 language tag, or an array of such strings. For the general form of the locales argument, see the Intl page.
* @param {Object} [options] - An object that may have the following property:
* @param {string} [options.localeMatcher="lookup"] - The locale matching algorithm to use. Possible values are "lookup" and "best fit". Currently only "lookup" is supported.
* @return {string[]} An array of strings representing a subset of the given locale tags that are supported in collation without having to fall back to the runtime's default locale.
* @example
* var locales = ['ban', 'id-u-co-pinyin', 'es-PY']
* var options = { localeMatcher: 'lookup' }
* // Returns ["id", "es-PY"]
* Intl.RelativeTimeFormat.supportedLocalesOf(locales, options)
*/
exports.default = RelativeTimeFormat;
RelativeTimeFormat.supportedLocalesOf = function (locales) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
// Convert `locales` to an array.
if (typeof locales === 'string') {
locales = [locales];
}
return locales.filter(function (locale) {
return (0, _resolveLocale.default)(locale, options);
});
};
/**
* Adds locale data for a specific locale.
* @param {Object} localeData
*/
RelativeTimeFormat.addLocale = _LocaleDataStore.addLocaleData;
/**
* Sets default locale.
* @param {string} locale
*/
RelativeTimeFormat.setDefaultLocale = _LocaleDataStore.setDefaultLocale;
/**
* Gets default locale.
* @return {string} locale
*/
RelativeTimeFormat.getDefaultLocale = _LocaleDataStore.getDefaultLocale;
/**
* Extracts language from an IETF BCP 47 language tag.
* @param {string} languageTag - IETF BCP 47 language tag.
* @return {string}
* @example
* // Returns "he"
* getLanguageFromLanguageTag("he-IL-u-ca-hebrew-tz-jeruslm")
* // Returns "ar"
* getLanguageFromLanguageTag("ar-u-nu-latn")
*/
// export function getLanguageFromLanguageTag(languageTag) {
// const hyphenIndex = languageTag.indexOf('-')
// if (hyphenIndex > 0) {
// return languageTag.slice(0, hyphenIndex)
// }
// return languageTag
// }
//# sourceMappingURL=RelativeTimeFormat.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,261 @@
"use strict";
var _ccp = _interopRequireDefault(require("../locale/ccp"));
var _de = _interopRequireDefault(require("../locale/de"));
var _en = _interopRequireDefault(require("../locale/en"));
var _ru = _interopRequireDefault(require("../locale/ru"));
var _to = _interopRequireDefault(require("../locale/to"));
var _RelativeTimeFormat = _interopRequireDefault(require("./RelativeTimeFormat"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
_RelativeTimeFormat.default.addLocale(_ccp.default);
_RelativeTimeFormat.default.addLocale(_de.default);
_RelativeTimeFormat.default.addLocale(_en.default);
_RelativeTimeFormat.default.addLocale(_ru.default);
_RelativeTimeFormat.default.addLocale(_to.default); // Just so this function code is covered.
_RelativeTimeFormat.default.setDefaultLocale('en');
describe('Intl.RelativeTimeFormat', function () {
it('should validate options', function () {
expect(function () {
return new _RelativeTimeFormat.default("en", {
style: "postmodern"
});
}).to.throw("Invalid \"style\" option");
expect(function () {
return new _RelativeTimeFormat.default("en", {
numeric: "sometimes"
});
}).to.throw("Invalid \"numeric\" option");
});
it('should fall back to default locale', function () {
var rtf = new _RelativeTimeFormat.default();
expect(rtf.format(-1, "day")).to.equal("1 day ago");
});
it('should throw when "numeric" option is not a valid one', function () {
expect(function () {
return new _RelativeTimeFormat.default("en", {
numeric: "sometimes"
});
}).to.throw('Invalid "numeric" option');
});
it('should use the passed "style" option', function () {
var rtf = new _RelativeTimeFormat.default("en", {
style: "short"
});
expect(rtf.format(-1, "year")).to.equal("1 yr. ago");
});
it('should throw when "style" option is not a valid one', function () {
expect(function () {
return new _RelativeTimeFormat.default("en", {
style: "postmodern"
});
}).to.throw('Invalid "style" option');
});
it('should use the passed "localeMatcher" option', function () {
var rtf = new _RelativeTimeFormat.default("en-XX", {
localeMatcher: "lookup"
});
expect(rtf.format(-1, "day")).to.equal("1 day ago");
});
it('should throw when "localeMatcher" option is not a valid one', function () {
expect(function () {
return new _RelativeTimeFormat.default("en", {
localeMatcher: "eccentric"
});
}).to.throw('Invalid "localeMatcher" option');
});
it('should throw if no supported locale was found', function () {
_RelativeTimeFormat.default.setDefaultLocale('xx');
expect(function () {
return new _RelativeTimeFormat.default();
}).to.throw("No supported locale was found");
_RelativeTimeFormat.default.setDefaultLocale('en');
});
it('should format relative time', function () {
var rtf = new _RelativeTimeFormat.default("en");
expect(rtf.format(-1, "day")).to.equal("1 day ago");
expect(rtf.format(-2, "day")).to.equal("2 days ago");
expect(rtf.format(2.15, "day")).to.equal("in 2.15 days");
expect(rtf.format(100, "day")).to.equal("in 100 days");
});
it('should fall back to "other" quantifier if others have been removed as an optimization', function () {
var rtf = new _RelativeTimeFormat.default("ru"); // `2` is classified as "few" in Russian.
// The rule for "few" is identical to that for "other"
// so the rule for "few" is omitted from locale data
// to reduce bundle size.
expect(rtf.format(-2, "day")).to.equal("2 дня назад");
});
it('should throw if a time unit is unsupported', function () {
var rtf = new _RelativeTimeFormat.default("en");
expect(function () {
return rtf.format(-1, "decade");
}).to.throw("Unknown time unit: decade.");
});
it('should format yesterday/today/tomorrow', function () {
var rtf = new _RelativeTimeFormat.default("de", {
numeric: "auto"
}); // "today" is useless for relative time labels.
// E.g. for `23:59:00` "today" is too vague.
// And for `00:01:00` "today" is counter-intuitive.
// "yesterday" and "tomorrow" are also useless for relative time.
// E.g. "yesterday" of `00:01` is misleading.
// Same as "tomorrow" of `23:59` which is misleading too.
// Not to mention that both of them are too "vague", same as "today".
// Also there are no rules defining when to use
// "yesterday", "today" and "tomorrow".
// The algorithm should take local time into account.
expect(rtf.format(-2, "day")).to.equal("vorgestern");
expect(rtf.format(-1, "day")).to.equal("gestern");
expect(rtf.format(0, "day")).to.equal("heute");
expect(rtf.format(1, "day")).to.equal("morgen");
expect(rtf.format(2, "day")).to.equal("übermorgen");
expect(rtf.format(0, "second")).to.equal("jetzt");
});
it('should use "Intl.NumberFormat" (when available)', function () {
var rtf = new _RelativeTimeFormat.default("en");
expect(rtf.format(1000, "day")).to.equal("in 1,000 days");
});
it('should fall back when "Intl.NumberFormat" is not available', function () {
var NumberFormat = Intl.NumberFormat; // I imagine `Intl` object getting "frozen" in future.
delete Intl.NumberFormat;
var rtf = new _RelativeTimeFormat.default("en");
expect(rtf.format(1000, "day")).to.equal("in 1000 days");
Intl.NumberFormat = NumberFormat;
});
it('shouldn\'t format yesterday/today/tomorrow when there\'s no locale data', function () {
var enLongDay = _objectSpread({}, _en.default.long.day);
delete _en.default.long.day.previous;
delete _en.default.long.day.current;
delete _en.default.long.day.next;
var rtf = new _RelativeTimeFormat.default("en", {
numeric: "auto"
}); // "today" is useless for relative time labels.
// E.g. for `23:59:00` "today" is too vague.
// And for `00:01:00` "today" is counter-intuitive.
// "yesterday" and "tomorrow" are also useless for relative time.
// E.g. "yesterday" of `00:01` is misleading.
// Same as "tomorrow" of `23:59` which is misleading too.
// Not to mention that both of them are too "vague", same as "today".
// Also there are no rules defining when to use
// "yesterday", "today" and "tomorrow".
// The algorithm should take local time into account.
expect(rtf.format(-1, "day")).to.equal("1 day ago");
expect(rtf.format(0, "day")).to.equal("0 days ago");
expect(rtf.format(1, "day")).to.equal("in 1 day");
_en.default.long.day = enLongDay;
});
it('should accept an array of locales', function () {
var rtf = new _RelativeTimeFormat.default(["en"]);
expect(rtf.format(-2, "day")).to.equal("2 days ago");
});
it('should resolve locales as "best fit"', function () {
var rtf = new _RelativeTimeFormat.default('en-XX');
expect(rtf.format(-2, "day")).to.equal("2 days ago");
});
it('should fallback to default system locale', function () {
var rtf = new _RelativeTimeFormat.default();
expect(rtf.format(-2, "day")).to.equal("2 days ago");
});
it('should format to parts', function () {
var rtf = new _RelativeTimeFormat.default("en");
expect(rtf.formatToParts(100, "day")).to.deep.equal([{
type: "literal",
value: "in "
}, {
type: "integer",
value: "100",
unit: "day"
}, {
type: "literal",
value: " days"
}]);
expect(rtf.formatToParts(-100, "day")).to.deep.equal([{
type: "integer",
value: "100",
unit: "day"
}, {
type: "literal",
value: " days ago"
}]);
});
it('should format to parts with numeric="auto"', function () {
var rtf = new _RelativeTimeFormat.default("en", {
numeric: "auto"
});
expect(rtf.formatToParts(-1, "day")).to.deep.equal([{
type: "literal",
value: "yesterday"
}]);
expect(rtf.formatToParts(100, "day")).to.deep.equal([{
type: "literal",
value: "in "
}, {
type: "integer",
value: "100",
unit: "day"
}, {
type: "literal",
value: " days"
}]);
});
it('should format to parts (non-English)', function () {
// Tonga (Tonga Islands)
var rtf = new _RelativeTimeFormat.default("to");
expect(rtf.formatToParts(100, "day")).to.deep.equal([{
type: "literal",
value: "ʻi he ʻaho ʻe "
}, {
type: "integer",
value: "100",
unit: "day"
}]);
});
it('"supportedLocalesOf" should list supported locales', function () {
expect(_RelativeTimeFormat.default.supportedLocalesOf(['es-ES', 'ru', 'ru-XX', 'en-GB'])).to.deep.equal(['ru', 'ru-XX', 'en-GB']);
expect(_RelativeTimeFormat.default.supportedLocalesOf('ru-XX')).to.deep.equal(['ru-XX']);
});
it('"supportedLocalesOf" should throw when "localeMatcher" option is not a valid one', function () {
expect(function () {
return _RelativeTimeFormat.default.supportedLocalesOf(["en"], {
localeMatcher: "eccentric"
});
}).to.throw('Invalid "localeMatcher" option');
});
it("should quantify as \"other\" when no quantifier function is present for a locale", function () {
new _RelativeTimeFormat.default("ccp").format(1, "minute").should.equal("1 𑄟𑄨𑄚𑄨𑄘𑄬");
});
it('should show resolved options', function () {
expect(new _RelativeTimeFormat.default('ru-XX', {
timeZone: 'UTC'
}).resolvedOptions()).to.deep.equal({
locale: "ru",
style: "long",
numeric: "always"
});
});
});
//# sourceMappingURL=RelativeTimeFormat.test.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,74 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = resolveLocale;
exports.resolveLocaleLookup = resolveLocaleLookup;
var _LocaleDataStore = require("./LocaleDataStore");
/**
* Resolves a locale to a supported one (if any).
* @param {string} locale
* @param {Object} [options] - An object that may have the following property:
* @param {string} [options.localeMatcher="lookup"] - The locale matching algorithm to use. Possible values are "lookup" and "best fit". Currently only "lookup" is supported.
* @return {string} [locale]
* @example
* // Returns "sr"
* resolveLocale("sr-Cyrl-BA")
* // Returns `undefined`
* resolveLocale("xx-Latn")
*/
function resolveLocale(locale) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var localeMatcher = options.localeMatcher || 'lookup';
switch (localeMatcher) {
case 'lookup':
return resolveLocaleLookup(locale);
// "best fit" locale matching is not supported.
// https://github.com/catamphetamine/relative-time-format/issues/2
case 'best fit':
// return resolveLocaleBestFit(locale)
return resolveLocaleLookup(locale);
default:
throw new RangeError("Invalid \"localeMatcher\" option: ".concat(localeMatcher));
}
}
/**
* Resolves a locale to a supported one (if any).
* Starts from the most specific locale and gradually
* falls back to less specific ones.
* This is a basic implementation of the "lookup" algorithm.
* https://tools.ietf.org/html/rfc4647#section-3.4
* @param {string} locale
* @return {string} [locale]
* @example
* // Returns "sr"
* resolveLocaleLookup("sr-Cyrl-BA")
* // Returns `undefined`
* resolveLocaleLookup("xx-Latn")
*/
function resolveLocaleLookup(locale) {
if ((0, _LocaleDataStore.getLocaleData)(locale)) {
return locale;
} // `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.
var parts = locale.split('-');
while (locale.length > 1) {
parts.pop();
locale = parts.join('-');
if ((0, _LocaleDataStore.getLocaleData)(locale)) {
return locale;
}
}
}
//# sourceMappingURL=resolveLocale.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../source/resolveLocale.js"],"names":["resolveLocale","locale","options","localeMatcher","resolveLocaleLookup","RangeError","parts","split","length","pop","join"],"mappings":";;;;;;;;AAAA;;AAIA;;;;;;;;;;;;AAYe,SAASA,aAAT,CAAuBC,MAAvB,EAA6C;AAAA,MAAdC,OAAc,uEAAJ,EAAI;AAC1D,MAAMC,aAAa,GAAGD,OAAO,CAACC,aAAR,IAAyB,QAA/C;;AACA,UAAQA,aAAR;AACE,SAAK,QAAL;AACE,aAAOC,mBAAmB,CAACH,MAAD,CAA1B;AACF;AACA;;AACA,SAAK,UAAL;AACE;AACA,aAAOG,mBAAmB,CAACH,MAAD,CAA1B;;AACF;AACE,YAAM,IAAII,UAAJ,6CAAkDF,aAAlD,EAAN;AATJ;AAWD;AAED;;;;;;;;;;;;;;;;AAcO,SAASC,mBAAT,CAA6BH,MAA7B,EAAqC;AAC1C,MAAI,oCAAcA,MAAd,CAAJ,EAA2B;AACzB,WAAOA,MAAP;AACD,GAHyC,CAI1C;;;AACA,MAAMK,KAAK,GAAGL,MAAM,CAACM,KAAP,CAAa,GAAb,CAAd;;AACA,SAAON,MAAM,CAACO,MAAP,GAAgB,CAAvB,EAA0B;AACxBF,IAAAA,KAAK,CAACG,GAAN;AACAR,IAAAA,MAAM,GAAGK,KAAK,CAACI,IAAN,CAAW,GAAX,CAAT;;AACA,QAAI,oCAAcT,MAAd,CAAJ,EAA2B;AACzB,aAAOA,MAAP;AACD;AACF;AACF","sourcesContent":["import {\r\n getLocaleData\r\n} from './LocaleDataStore'\r\n\r\n/**\r\n * Resolves a locale to a supported one (if any).\r\n * @param {string} locale\r\n * @param {Object} [options] - An object that may have the following property:\r\n * @param {string} [options.localeMatcher=\"lookup\"] - The locale matching algorithm to use. Possible values are \"lookup\" and \"best fit\". Currently only \"lookup\" is supported.\r\n * @return {string} [locale]\r\n * @example\r\n * // Returns \"sr\"\r\n * resolveLocale(\"sr-Cyrl-BA\")\r\n * // Returns `undefined`\r\n * resolveLocale(\"xx-Latn\")\r\n */\r\nexport default function resolveLocale(locale, options = {}) {\r\n const localeMatcher = options.localeMatcher || 'lookup'\r\n switch (localeMatcher) {\r\n case 'lookup':\r\n return resolveLocaleLookup(locale)\r\n // \"best fit\" locale matching is not supported.\r\n // https://github.com/catamphetamine/relative-time-format/issues/2\r\n case 'best fit':\r\n // return resolveLocaleBestFit(locale)\r\n return resolveLocaleLookup(locale)\r\n default:\r\n throw new RangeError(`Invalid \"localeMatcher\" option: ${localeMatcher}`)\r\n }\r\n}\r\n\r\n/**\r\n * Resolves a locale to a supported one (if any).\r\n * Starts from the most specific locale and gradually\r\n * falls back to less specific ones.\r\n * This is a basic implementation of the \"lookup\" algorithm.\r\n * https://tools.ietf.org/html/rfc4647#section-3.4\r\n * @param {string} locale\r\n * @return {string} [locale]\r\n * @example\r\n * // Returns \"sr\"\r\n * resolveLocaleLookup(\"sr-Cyrl-BA\")\r\n * // Returns `undefined`\r\n * resolveLocaleLookup(\"xx-Latn\")\r\n */\r\nexport function resolveLocaleLookup(locale) {\r\n if (getLocaleData(locale)) {\r\n return locale\r\n }\r\n // `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\r\n const parts = locale.split('-')\r\n while (locale.length > 1) {\r\n parts.pop()\r\n locale = parts.join('-')\r\n if (getLocaleData(locale)) {\r\n return locale\r\n }\r\n }\r\n}\r\n"],"file":"resolveLocale.js"}

View File

@@ -0,0 +1,24 @@
"use strict";
var _resolveLocale = _interopRequireDefault(require("./resolveLocale"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('resolveLocale', function () {
it('should resolve locale', function () {
(0, _resolveLocale.default)("en-XX").should.equal("en");
});
it('should throw when "localeMatcher" option is not a valid one', function () {
expect(function () {
return (0, _resolveLocale.default)("en", {
localeMatcher: "eccentric"
});
}).to.throw('Invalid "localeMatcher" option');
});
it('should fall back to "lookup" when passed "best fit" "localeMatcher" option', function () {
(0, _resolveLocale.default)("en-XX", {
localeMatcher: "best fit"
}).should.equal("en");
});
});
//# sourceMappingURL=resolveLocale.test.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../source/resolveLocale.test.js"],"names":["describe","it","should","equal","expect","localeMatcher","to","throw"],"mappings":";;AAAA;;;;AAEAA,QAAQ,CAAC,eAAD,EAAkB,YAAM;AAC9BC,EAAAA,EAAE,CAAC,uBAAD,EAA0B,YAAM;AAChC,gCAAc,OAAd,EAAuBC,MAAvB,CAA8BC,KAA9B,CAAoC,IAApC;AACD,GAFC,CAAF;AAIAF,EAAAA,EAAE,CAAC,6DAAD,EAAgE,YAAM;AACtEG,IAAAA,MAAM,CAAC;AAAA,aAAM,4BAAc,IAAd,EAAoB;AAAEC,QAAAA,aAAa,EAAE;AAAjB,OAApB,CAAN;AAAA,KAAD,CAAN,CAAkEC,EAAlE,CAAqEC,KAArE,CAA2E,gCAA3E;AACD,GAFC,CAAF;AAIAN,EAAAA,EAAE,CAAC,4EAAD,EAA+E,YAAM;AACrF,gCAAc,OAAd,EAAuB;AAAEI,MAAAA,aAAa,EAAE;AAAjB,KAAvB,EAAsDH,MAAtD,CAA6DC,KAA7D,CAAmE,IAAnE;AACD,GAFC,CAAF;AAGD,CAZO,CAAR","sourcesContent":["import resolveLocale from './resolveLocale'\r\n\r\ndescribe('resolveLocale', () => {\r\n it('should resolve locale', () => {\r\n resolveLocale(\"en-XX\").should.equal(\"en\")\r\n })\r\n\r\n it('should throw when \"localeMatcher\" option is not a valid one', () => {\r\n expect(() => resolveLocale(\"en\", { localeMatcher: \"eccentric\" })).to.throw('Invalid \"localeMatcher\" option')\r\n })\r\n\r\n it('should fall back to \"lookup\" when passed \"best fit\" \"localeMatcher\" option', () => {\r\n resolveLocale(\"en-XX\", { localeMatcher: \"best fit\" }).should.equal(\"en\")\r\n })\r\n})"],"file":"resolveLocale.test.js"}

4
node_modules/relative-time-format/index.commonjs.js generated vendored Normal file
View File

@@ -0,0 +1,4 @@
'use strict'
exports = module.exports = require('./commonjs/RelativeTimeFormat').default
exports['default'] = require('./commonjs/RelativeTimeFormat').default

1
node_modules/relative-time-format/index.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export { default } from './modules/RelativeTimeFormat'

7
node_modules/relative-time-format/locale/af/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'af',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

90
node_modules/relative-time-format/locale/af/long.json generated vendored Normal file
View File

@@ -0,0 +1,90 @@
{
"year": {
"previous": "verlede jaar",
"current": "hierdie jaar",
"next": "volgende jaar",
"past": "{0} jaar gelede",
"future": "oor {0} jaar"
},
"quarter": {
"previous": "verlede kwartaal",
"current": "hierdie kwartaal",
"next": "volgende kwartaal",
"past": {
"one": "{0} kwartaal gelede",
"other": "{0} kwartale gelede"
},
"future": {
"one": "oor {0} kwartaal",
"other": "oor {0} kwartale"
}
},
"month": {
"previous": "verlede maand",
"current": "vandeesmaand",
"next": "volgende maand",
"past": {
"one": "{0} maand gelede",
"other": "{0} maande gelede"
},
"future": {
"one": "oor {0} maand",
"other": "oor {0} maande"
}
},
"week": {
"previous": "verlede week",
"current": "hierdie week",
"next": "volgende week",
"past": {
"one": "{0} week gelede",
"other": "{0} weke gelede"
},
"future": {
"one": "oor {0} week",
"other": "oor {0} weke"
}
},
"day": {
"previous": "gister",
"previous-2": "eergister",
"current": "vandag",
"next": "môre",
"next-2": "oormôre",
"past": {
"one": "{0} dag gelede",
"other": "{0} dae gelede"
},
"future": {
"one": "oor {0} dag",
"other": "oor {0} dae"
}
},
"hour": {
"current": "hierdie uur",
"past": "{0} uur gelede",
"future": "oor {0} uur"
},
"minute": {
"current": "hierdie minuut",
"past": {
"one": "{0} minuut gelede",
"other": "{0} minute gelede"
},
"future": {
"one": "oor {0} minuut",
"other": "oor {0} minute"
}
},
"second": {
"current": "nou",
"past": {
"one": "{0} sekonde gelede",
"other": "{0} sekondes gelede"
},
"future": {
"one": "oor {0} sekonde",
"other": "oor {0} sekondes"
}
}
}

View File

@@ -0,0 +1,60 @@
{
"year": {
"previous": "verlede jaar",
"current": "hierdie jaar",
"next": "volgende jaar",
"past": "{0} j. gelede",
"future": "oor {0} j."
},
"quarter": {
"previous": "verlede kwartaal",
"current": "hierdie kwartaal",
"next": "volgende kwartaal",
"past": "{0} kw. gelede",
"future": "oor {0} kw."
},
"month": {
"previous": "verlede maand",
"current": "vandeesmaand",
"next": "volgende maand",
"past": "{0} md. gelede",
"future": "oor {0} md."
},
"week": {
"previous": "verlede week",
"current": "hierdie week",
"next": "volgende week",
"past": "{0} w. gelede",
"future": "oor {0} w."
},
"day": {
"previous": "gister",
"previous-2": "eergister",
"current": "vandag",
"next": "môre",
"next-2": "oormôre",
"past": {
"one": "{0} dag gelede",
"other": "{0} dae gelede"
},
"future": {
"one": "oor {0} dag",
"other": "oor {0} dae"
}
},
"hour": {
"current": "hierdie uur",
"past": "{0} u. gelede",
"future": "oor {0} u."
},
"minute": {
"current": "hierdie minuut",
"past": "{0} min. gelede",
"future": "oor {0} min."
},
"second": {
"current": "nou",
"past": "{0} s. gelede",
"future": "oor {0} s."
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){return 1==n?"one":"other"}

60
node_modules/relative-time-format/locale/af/short.json generated vendored Normal file
View File

@@ -0,0 +1,60 @@
{
"year": {
"previous": "verlede jaar",
"current": "hierdie jaar",
"next": "volgende jaar",
"past": "{0} j. gelede",
"future": "oor {0} j."
},
"quarter": {
"previous": "verlede kwartaal",
"current": "hierdie kwartaal",
"next": "volgende kwartaal",
"past": "{0} kw. gelede",
"future": "oor {0} kw."
},
"month": {
"previous": "verlede maand",
"current": "vandeesmaand",
"next": "volgende maand",
"past": "{0} md. gelede",
"future": "oor {0} md."
},
"week": {
"previous": "verlede week",
"current": "hierdie week",
"next": "volgende week",
"past": "{0} w. gelede",
"future": "oor {0} w."
},
"day": {
"previous": "gister",
"previous-2": "eergister",
"current": "vandag",
"next": "môre",
"next-2": "oormôre",
"past": {
"one": "{0} dag gelede",
"other": "{0} dae gelede"
},
"future": {
"one": "oor {0} dag",
"other": "oor {0} dae"
}
},
"hour": {
"current": "hierdie uur",
"past": "{0} u. gelede",
"future": "oor {0} u."
},
"minute": {
"current": "hierdie minuut",
"past": "{0} min. gelede",
"future": "oor {0} min."
},
"second": {
"current": "nou",
"past": "{0} s. gelede",
"future": "oor {0} s."
}
}

7
node_modules/relative-time-format/locale/am/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'am',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

93
node_modules/relative-time-format/locale/am/long.json generated vendored Normal file
View File

@@ -0,0 +1,93 @@
{
"year": {
"previous": "ያለፈው ዓመት",
"current": "በዚህ ዓመት",
"next": "የሚቀጥለው ዓመት",
"past": {
"one": "ከ{0} ዓመት በፊት",
"other": "ከ{0} ዓመታት በፊት"
},
"future": "በ{0} ዓመታት ውስጥ"
},
"quarter": {
"previous": "የመጨረሻው ሩብ",
"current": "ይህ ሩብ",
"next": "የሚቀጥለው ሩብ",
"past": "{0} ሩብ በፊት",
"future": "+{0} ሩብ"
},
"month": {
"previous": "ያለፈው ወር",
"current": "በዚህ ወር",
"next": "የሚቀጥለው ወር",
"past": {
"one": "ከ{0} ወር በፊት",
"other": "ከ{0} ወራት በፊት"
},
"future": {
"one": "በ{0} ወር ውስጥ",
"other": "በ{0} ወራት ውስጥ"
}
},
"week": {
"previous": "ያለፈው ሳምንት",
"current": "በዚህ ሳምንት",
"next": "የሚቀጥለው ሳምንት",
"past": {
"one": "ከ{0} ሳምንት በፊት",
"other": "ከ{0} ሳምንታት በፊት"
},
"future": {
"one": "በ{0} ሳምንት ውስጥ",
"other": "በ{0} ሳምንታት ውስጥ"
}
},
"day": {
"previous": "ትናንት",
"previous-2": "ከትናንት ወዲያ",
"current": "ዛሬ",
"next": "ነገ",
"next-2": "ከነገ ወዲያ",
"past": {
"one": "ከ{0} ቀን በፊት",
"other": "ከ{0} ቀናት በፊት"
},
"future": {
"one": "በ{0} ቀን ውስጥ",
"other": "በ{0} ቀናት ውስጥ"
}
},
"hour": {
"current": "ይህ ሰዓት",
"past": {
"one": "ከ{0} ሰዓት በፊት",
"other": "ከ{0} ሰዓቶች በፊት"
},
"future": {
"one": "በ{0} ሰዓት ውስጥ",
"other": "በ{0} ሰዓቶች ውስጥ"
}
},
"minute": {
"current": "ይህ ደቂቃ",
"past": {
"one": "ከ{0} ደቂቃ በፊት",
"other": "ከ{0} ደቂቃዎች በፊት"
},
"future": {
"one": "በ{0} ደቂቃ ውስጥ",
"other": "በ{0} ደቂቃዎች ውስጥ"
}
},
"second": {
"current": "አሁን",
"past": {
"one": "ከ{0} ሰከንድ በፊት",
"other": "ከ{0} ሰከንዶች በፊት"
},
"future": {
"one": "በ{0} ሰከንድ ውስጥ",
"other": "በ{0} ሰከንዶች ውስጥ"
}
}
}

View File

@@ -0,0 +1,78 @@
{
"year": {
"previous": "ያለፈው ዓመት",
"current": "በዚህ ዓመት",
"next": "የሚቀጥለው ዓመት",
"past": "ከ{0} ዓመታት በፊት",
"future": "በ{0} ዓመታት ውስጥ"
},
"quarter": {
"previous": "የመጨረሻው ሩብ",
"current": "ይህ ሩብ",
"next": "የሚቀጥለው ሩብ",
"past": "{0} ሩብ በፊት",
"future": "+{0} ሩብ"
},
"month": {
"previous": "ያለፈው ወር",
"current": "በዚህ ወር",
"next": "የሚቀጥለው ወር",
"past": "ከ{0} ወራት በፊት",
"future": "በ{0} ወራት ውስጥ"
},
"week": {
"previous": "ባለፈው ሳምንት",
"current": "በዚህ ሣምንት",
"next": "የሚቀጥለው ሳምንት",
"past": "ከ{0} ሳምንታት በፊት",
"future": "በ{0} ሳምንታት ውስጥ"
},
"day": {
"previous": "ትላንትና",
"previous-2": "ከትናንት ወዲያ",
"current": "ዛሬ",
"next": "ነገ",
"next-2": "ከነገ ወዲያ",
"past": {
"one": "ከ {0} ቀን በፊት",
"other": "ከ{0} ቀኖች በፊት"
},
"future": {
"one": "በ{0} ቀን ውስጥ",
"other": "በ{0} ቀኖች ውስጥ"
}
},
"hour": {
"current": "ይህ ሰዓት",
"past": {
"one": "ከ{0} ሰዓት በፊት",
"other": "ከ{0} ሰዓቶች በፊት"
},
"future": {
"one": "በ{0} ሰዓት ውስጥ",
"other": "በ{0} ሰዓቶች ውስጥ"
}
},
"minute": {
"current": "ይህ ደቂቃ",
"past": {
"one": "ከ{0} ደቂቃ በፊት",
"other": "ከ{0} ደቂቃዎች በፊት"
},
"future": {
"one": "በ{0} ደቂቃ ውስጥ",
"other": "በ{0} ደቂቃዎች ውስጥ"
}
},
"second": {
"current": "አሁን",
"past": {
"one": "ከ{0} ሰከንድ በፊት",
"other": "ከ{0} ሰከንዶች በፊት"
},
"future": {
"one": "በ{0} ሰከንድ ውስጥ",
"other": "በ{0} ሰከንዶች ውስጥ"
}
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){return 0<=n&&n<=1?"one":"other"}

78
node_modules/relative-time-format/locale/am/short.json generated vendored Normal file
View File

@@ -0,0 +1,78 @@
{
"year": {
"previous": "ያለፈው ዓመት",
"current": "በዚህ ዓመት",
"next": "የሚቀጥለው ዓመት",
"past": "ከ{0} ዓመታት በፊት",
"future": "በ{0} ዓመታት ውስጥ"
},
"quarter": {
"previous": "የመጨረሻው ሩብ",
"current": "ይህ ሩብ",
"next": "የሚቀጥለው ሩብ",
"past": "{0} ሩብ በፊት",
"future": "+{0} ሩብ"
},
"month": {
"previous": "ያለፈው ወር",
"current": "በዚህ ወር",
"next": "የሚቀጥለው ወር",
"past": "ከ{0} ወራት በፊት",
"future": "በ{0} ወራት ውስጥ"
},
"week": {
"previous": "ባለፈው ሳምንት",
"current": "በዚህ ሣምንት",
"next": "የሚቀጥለው ሳምንት",
"past": "ከ{0} ሳምንታት በፊት",
"future": "በ{0} ሳምንታት ውስጥ"
},
"day": {
"previous": "ትላንትና",
"previous-2": "ከትናንት ወዲያ",
"current": "ዛሬ",
"next": "ነገ",
"next-2": "ከነገ ወዲያ",
"past": {
"one": "ከ {0} ቀን በፊት",
"other": "ከ{0} ቀኖች በፊት"
},
"future": {
"one": "በ{0} ቀን ውስጥ",
"other": "በ{0} ቀኖች ውስጥ"
}
},
"hour": {
"current": "ይህ ሰዓት",
"past": {
"one": "ከ{0} ሰዓት በፊት",
"other": "ከ{0} ሰዓቶች በፊት"
},
"future": {
"one": "በ{0} ሰዓት ውስጥ",
"other": "በ{0} ሰዓቶች ውስጥ"
}
},
"minute": {
"current": "ይህ ደቂቃ",
"past": {
"one": "ከ{0} ደቂቃ በፊት",
"other": "ከ{0} ደቂቃዎች በፊት"
},
"future": {
"one": "በ{0} ደቂቃ ውስጥ",
"other": "በ{0} ደቂቃዎች ውስጥ"
}
},
"second": {
"current": "አሁን",
"past": {
"one": "ከ{0} ሰከንድ በፊት",
"other": "ከ{0} ሰከንዶች በፊት"
},
"future": {
"one": "በ{0} ሰከንድ ውስጥ",
"other": "በ{0} ሰከንዶች ውስጥ"
}
}
}

View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'ar-AE',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('../ar/quantify')
}

View File

@@ -0,0 +1,140 @@
{
"year": {
"previous": "السنة الماضية",
"current": "هذه السنة",
"next": "السنة التالية",
"past": {
"one": "قبل سنة واحدة",
"two": "قبل سنتين",
"few": "قبل {0} سنوات",
"other": "قبل {0} سنة"
},
"future": {
"one": "خلال سنة واحدة",
"two": "خلال سنتين",
"few": "خلال {0} سنوات",
"other": "خلال {0} سنة"
}
},
"quarter": {
"previous": "الربع الأخير",
"current": "هذا الربع",
"next": "الربع القادم",
"past": {
"one": "قبل ربع سنة واحد",
"two": "قبل ربعي سنة",
"few": "قبل {0} أرباع سنة",
"other": "قبل {0} ربع سنة"
},
"future": {
"one": "خلال ربع سنة واحد",
"two": "خلال ربعي سنة",
"few": "خلال {0} أرباع سنة",
"other": "خلال {0} ربع سنة"
}
},
"month": {
"previous": "الشهر الماضي",
"current": "هذا الشهر",
"next": "الشهر القادم",
"past": {
"one": "قبل شهر واحد",
"two": "قبل شهرين",
"few": "قبل {0} أشهر",
"many": "قبل {0} شهرًا",
"other": "قبل {0} شهر"
},
"future": {
"one": "خلال شهر واحد",
"two": "خلال شهرين",
"few": "خلال {0} أشهر",
"many": "خلال {0} شهرًا",
"other": "خلال {0} شهر"
}
},
"week": {
"previous": "الأسبوع الماضي",
"current": "هذا الأسبوع",
"next": "الأسبوع القادم",
"past": {
"one": "قبل أسبوع واحد",
"two": "قبل أسبوعين",
"few": "قبل {0} أسابيع",
"many": "قبل {0} أسبوعًا",
"other": "قبل {0} أسبوع"
},
"future": {
"one": "خلال أسبوع واحد",
"two": "خلال أسبوعين",
"few": "خلال {0} أسابيع",
"many": "خلال {0} أسبوعًا",
"other": "خلال {0} أسبوع"
}
},
"day": {
"previous": "أمس",
"previous-2": "أول أمس",
"current": "اليوم",
"next": "غدًا",
"next-2": "بعد الغد",
"past": {
"one": "قبل يوم واحد",
"two": "قبل يومين",
"few": "قبل {0} أيام",
"many": "قبل {0} يومًا",
"other": "قبل {0} يوم"
},
"future": {
"one": "خلال يوم واحد",
"two": "خلال يومين",
"few": "خلال {0} أيام",
"many": "خلال {0} يومًا",
"other": "خلال {0} يوم"
}
},
"hour": {
"current": "الساعة الحالية",
"past": {
"one": "قبل ساعة واحدة",
"two": "قبل ساعتين",
"few": "قبل {0} ساعات",
"other": "قبل {0} ساعة"
},
"future": {
"one": "خلال ساعة واحدة",
"two": "خلال ساعتين",
"few": "خلال {0} ساعات",
"other": "خلال {0} ساعة"
}
},
"minute": {
"current": "هذه الدقيقة",
"past": {
"one": "قبل دقيقة واحدة",
"two": "قبل دقيقتين",
"few": "قبل {0} دقائق",
"other": "قبل {0} دقيقة"
},
"future": {
"one": "خلال دقيقة واحدة",
"two": "خلال دقيقتين",
"few": "خلال {0} دقائق",
"other": "خلال {0} دقيقة"
}
},
"second": {
"current": "الآن",
"past": {
"one": "قبل ثانية واحدة",
"two": "قبل ثانيتين",
"few": "قبل {0} ثوانِ",
"other": "قبل {0} ثانية"
},
"future": {
"one": "خلال ثانية واحدة",
"two": "خلال ثانيتين",
"few": "خلال {0} ثوانٍ",
"other": "خلال {0} ثانية"
}
}
}

View File

@@ -0,0 +1,140 @@
{
"year": {
"previous": "السنة الماضية",
"current": "هذه السنة",
"next": "السنة التالية",
"past": {
"one": "قبل سنة واحدة",
"two": "قبل سنتين",
"few": "قبل {0} سنوات",
"other": "قبل {0} سنة"
},
"future": {
"one": "خلال سنة واحدة",
"two": "خلال سنتين",
"few": "خلال {0} سنوات",
"other": "خلال {0} سنة"
}
},
"quarter": {
"previous": "الربع الأخير",
"current": "هذا الربع",
"next": "الربع القادم",
"past": {
"one": "قبل ربع سنة واحد",
"two": "قبل ربعي سنة",
"few": "قبل {0} أرباع سنة",
"other": "قبل {0} ربع سنة"
},
"future": {
"one": "خلال ربع سنة واحد",
"two": "خلال ربعي سنة",
"few": "خلال {0} أرباع سنة",
"other": "خلال {0} ربع سنة"
}
},
"month": {
"previous": "الشهر الماضي",
"current": "هذا الشهر",
"next": "الشهر القادم",
"past": {
"one": "قبل شهر واحد",
"two": "قبل شهرين",
"few": "قبل {0} أشهر",
"many": "قبل {0} شهرًا",
"other": "قبل {0} شهر"
},
"future": {
"one": "خلال شهر واحد",
"two": "خلال شهرين",
"few": "خلال {0} أشهر",
"many": "خلال {0} شهرًا",
"other": "خلال {0} شهر"
}
},
"week": {
"previous": "الأسبوع الماضي",
"current": "هذا الأسبوع",
"next": "الأسبوع القادم",
"past": {
"one": "قبل أسبوع واحد",
"two": "قبل أسبوعين",
"few": "قبل {0} أسابيع",
"many": "قبل {0} أسبوعًا",
"other": "قبل {0} أسبوع"
},
"future": {
"one": "خلال أسبوع واحد",
"two": "خلال أسبوعين",
"few": "خلال {0} أسابيع",
"many": "خلال {0} أسبوعًا",
"other": "خلال {0} أسبوع"
}
},
"day": {
"previous": "أمس",
"previous-2": "أول أمس",
"current": "اليوم",
"next": "غدًا",
"next-2": "بعد الغد",
"past": {
"one": "قبل يوم واحد",
"two": "قبل يومين",
"few": "قبل {0} أيام",
"many": "قبل {0} يومًا",
"other": "قبل {0} يوم"
},
"future": {
"one": "خلال يوم واحد",
"two": "خلال يومين",
"few": "خلال {0} أيام",
"many": "خلال {0} يومًا",
"other": "خلال {0} يوم"
}
},
"hour": {
"current": "الساعة الحالية",
"past": {
"one": "قبل ساعة واحدة",
"two": "قبل ساعتين",
"few": "قبل {0} ساعات",
"other": "قبل {0} ساعة"
},
"future": {
"one": "خلال ساعة واحدة",
"two": "خلال ساعتين",
"few": "خلال {0} ساعات",
"other": "خلال {0} ساعة"
}
},
"minute": {
"current": "هذه الدقيقة",
"past": {
"one": "قبل دقيقة واحدة",
"two": "قبل دقيقتين",
"few": "قبل {0} دقائق",
"other": "قبل {0} دقيقة"
},
"future": {
"one": "خلال دقيقة واحدة",
"two": "خلال دقيقتين",
"few": "خلال {0} دقائق",
"other": "خلال {0} دقيقة"
}
},
"second": {
"current": "الآن",
"past": {
"one": "قبل ثانية واحدة",
"two": "قبل ثانيتين",
"few": "قبل {0} ثوانٍ",
"other": "قبل {0} ثانية"
},
"future": {
"one": "خلال ثانية واحدة",
"two": "خلال ثانيتين",
"few": "خلال {0} ثوانٍ",
"other": "خلال {0} ثانية"
}
}
}

View File

@@ -0,0 +1,140 @@
{
"year": {
"previous": "السنة الماضية",
"current": "هذه السنة",
"next": "السنة التالية",
"past": {
"one": "قبل سنة واحدة",
"two": "قبل سنتين",
"few": "قبل {0} سنوات",
"other": "قبل {0} سنة"
},
"future": {
"one": "خلال سنة واحدة",
"two": "خلال سنتين",
"few": "خلال {0} سنوات",
"other": "خلال {0} سنة"
}
},
"quarter": {
"previous": "الربع الأخير",
"current": "هذا الربع",
"next": "الربع القادم",
"past": {
"one": "قبل ربع سنة واحد",
"two": "قبل ربعي سنة",
"few": "قبل {0} أرباع سنة",
"other": "قبل {0} ربع سنة"
},
"future": {
"one": "خلال ربع سنة واحد",
"two": "خلال ربعي سنة",
"few": "خلال {0} أرباع سنة",
"other": "خلال {0} ربع سنة"
}
},
"month": {
"previous": "الشهر الماضي",
"current": "هذا الشهر",
"next": "الشهر القادم",
"past": {
"one": "قبل شهر واحد",
"two": "قبل شهرين",
"few": "خلال {0} أشهر",
"many": "قبل {0} شهرًا",
"other": "قبل {0} شهر"
},
"future": {
"one": "خلال شهر واحد",
"two": "خلال شهرين",
"few": "خلال {0} أشهر",
"many": "خلال {0} شهرًا",
"other": "خلال {0} شهر"
}
},
"week": {
"previous": "الأسبوع الماضي",
"current": "هذا الأسبوع",
"next": "الأسبوع القادم",
"past": {
"one": "قبل أسبوع واحد",
"two": "قبل أسبوعين",
"few": "قبل {0} أسابيع",
"many": "قبل {0} أسبوعًا",
"other": "قبل {0} أسبوع"
},
"future": {
"one": "خلال أسبوع واحد",
"two": "خلال {0} أسبوعين",
"few": "خلال {0} أسابيع",
"many": "خلال {0} أسبوعًا",
"other": "خلال {0} أسبوع"
}
},
"day": {
"previous": "أمس",
"previous-2": "أول أمس",
"current": "اليوم",
"next": "غدًا",
"next-2": "بعد الغد",
"past": {
"one": "قبل يوم واحد",
"two": "قبل يومين",
"few": "قبل {0} أيام",
"many": "قبل {0} يومًا",
"other": "قبل {0} يوم"
},
"future": {
"one": "خلال يوم واحد",
"two": "خلال يومين",
"few": "خلال {0} أيام",
"many": "خلال {0} يومًا",
"other": "خلال {0} يوم"
}
},
"hour": {
"current": "الساعة الحالية",
"past": {
"one": "قبل ساعة واحدة",
"two": "قبل ساعتين",
"few": "قبل {0} ساعات",
"other": "قبل {0} ساعة"
},
"future": {
"one": "خلال ساعة واحدة",
"two": "خلال ساعتين",
"few": "خلال {0} ساعات",
"other": "خلال {0} ساعة"
}
},
"minute": {
"current": "هذه الدقيقة",
"past": {
"one": "قبل دقيقة واحدة",
"two": "قبل دقيقتين",
"few": "قبل {0} دقائق",
"other": "قبل {0} دقيقة"
},
"future": {
"one": "خلال دقيقة واحدة",
"two": "خلال دقيقتين",
"few": "خلال {0} دقائق",
"other": "خلال {0} دقيقة"
}
},
"second": {
"current": "الآن",
"past": {
"one": "قبل ثانية واحدة",
"two": "قبل ثانيتين",
"few": "قبل {0} ثوانٍ",
"other": "قبل {0} ثانية"
},
"future": {
"one": "خلال ثانية واحدة",
"two": "خلال ثانيتين",
"few": "خلال {0} ثوانٍ",
"other": "خلال {0} ثانية"
}
}
}

7
node_modules/relative-time-format/locale/ar/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'ar',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

140
node_modules/relative-time-format/locale/ar/long.json generated vendored Normal file
View File

@@ -0,0 +1,140 @@
{
"year": {
"previous": "السنة الماضية",
"current": "السنة الحالية",
"next": "السنة القادمة",
"past": {
"one": "قبل سنة واحدة",
"two": "قبل سنتين",
"few": "قبل {0} سنوات",
"other": "قبل {0} سنة"
},
"future": {
"one": "خلال سنة واحدة",
"two": "خلال سنتين",
"few": "خلال {0} سنوات",
"other": "خلال {0} سنة"
}
},
"quarter": {
"previous": "الربع الأخير",
"current": "هذا الربع",
"next": "الربع القادم",
"past": {
"one": "قبل ربع سنة واحد",
"two": "قبل ربعي سنة",
"few": "قبل {0} أرباع سنة",
"other": "قبل {0} ربع سنة"
},
"future": {
"one": "خلال ربع سنة واحد",
"two": "خلال ربعي سنة",
"few": "خلال {0} أرباع سنة",
"other": "خلال {0} ربع سنة"
}
},
"month": {
"previous": "الشهر الماضي",
"current": "هذا الشهر",
"next": "الشهر القادم",
"past": {
"one": "قبل شهر واحد",
"two": "قبل شهرين",
"few": "قبل {0} أشهر",
"many": "قبل {0} شهرًا",
"other": "قبل {0} شهر"
},
"future": {
"one": "خلال شهر واحد",
"two": "خلال شهرين",
"few": "خلال {0} أشهر",
"many": "خلال {0} شهرًا",
"other": "خلال {0} شهر"
}
},
"week": {
"previous": "الأسبوع الماضي",
"current": "هذا الأسبوع",
"next": "الأسبوع القادم",
"past": {
"one": "قبل أسبوع واحد",
"two": "قبل أسبوعين",
"few": "قبل {0} أسابيع",
"many": "قبل {0} أسبوعًا",
"other": "قبل {0} أسبوع"
},
"future": {
"one": "خلال أسبوع واحد",
"two": "خلال أسبوعين",
"few": "خلال {0} أسابيع",
"many": "خلال {0} أسبوعًا",
"other": "خلال {0} أسبوع"
}
},
"day": {
"previous": "أمس",
"previous-2": "أول أمس",
"current": "اليوم",
"next": "غدًا",
"next-2": "بعد الغد",
"past": {
"one": "قبل يوم واحد",
"two": "قبل يومين",
"few": "قبل {0} أيام",
"many": "قبل {0} يومًا",
"other": "قبل {0} يوم"
},
"future": {
"one": "خلال يوم واحد",
"two": "خلال يومين",
"few": "خلال {0} أيام",
"many": "خلال {0} يومًا",
"other": "خلال {0} يوم"
}
},
"hour": {
"current": "الساعة الحالية",
"past": {
"one": "قبل ساعة واحدة",
"two": "قبل ساعتين",
"few": "قبل {0} ساعات",
"other": "قبل {0} ساعة"
},
"future": {
"one": "خلال ساعة واحدة",
"two": "خلال ساعتين",
"few": "خلال {0} ساعات",
"other": "خلال {0} ساعة"
}
},
"minute": {
"current": "هذه الدقيقة",
"past": {
"one": "قبل دقيقة واحدة",
"two": "قبل دقيقتين",
"few": "قبل {0} دقائق",
"other": "قبل {0} دقيقة"
},
"future": {
"one": "خلال دقيقة واحدة",
"two": "خلال دقيقتين",
"few": "خلال {0} دقائق",
"other": "خلال {0} دقيقة"
}
},
"second": {
"current": "الآن",
"past": {
"one": "قبل ثانية واحدة",
"two": "قبل ثانيتين",
"few": "قبل {0} ثوانِ",
"other": "قبل {0} ثانية"
},
"future": {
"one": "خلال ثانية واحدة",
"two": "خلال ثانيتين",
"few": "خلال {0} ثوانٍ",
"other": "خلال {0} ثانية"
}
}
}

140
node_modules/relative-time-format/locale/ar/narrow.json generated vendored Normal file
View File

@@ -0,0 +1,140 @@
{
"year": {
"previous": "السنة الماضية",
"current": "السنة الحالية",
"next": "السنة القادمة",
"past": {
"one": "قبل سنة واحدة",
"two": "قبل سنتين",
"few": "قبل {0} سنوات",
"other": "قبل {0} سنة"
},
"future": {
"one": "خلال سنة واحدة",
"two": "خلال سنتين",
"few": "خلال {0} سنوات",
"other": "خلال {0} سنة"
}
},
"quarter": {
"previous": "الربع الأخير",
"current": "هذا الربع",
"next": "الربع القادم",
"past": {
"one": "قبل ربع سنة واحد",
"two": "قبل ربعي سنة",
"few": "قبل {0} أرباع سنة",
"other": "قبل {0} ربع سنة"
},
"future": {
"one": "خلال ربع سنة واحد",
"two": "خلال ربعي سنة",
"few": "خلال {0} أرباع سنة",
"other": "خلال {0} ربع سنة"
}
},
"month": {
"previous": "الشهر الماضي",
"current": "هذا الشهر",
"next": "الشهر القادم",
"past": {
"one": "قبل شهر واحد",
"two": "قبل شهرين",
"few": "قبل {0} أشهر",
"many": "قبل {0} شهرًا",
"other": "قبل {0} شهر"
},
"future": {
"one": "خلال شهر واحد",
"two": "خلال شهرين",
"few": "خلال {0} أشهر",
"many": "خلال {0} شهرًا",
"other": "خلال {0} شهر"
}
},
"week": {
"previous": "الأسبوع الماضي",
"current": "هذا الأسبوع",
"next": "الأسبوع القادم",
"past": {
"one": "قبل أسبوع واحد",
"two": "قبل أسبوعين",
"few": "قبل {0} أسابيع",
"many": "قبل {0} أسبوعًا",
"other": "قبل {0} أسبوع"
},
"future": {
"one": "خلال أسبوع واحد",
"two": "خلال أسبوعين",
"few": "خلال {0} أسابيع",
"many": "خلال {0} أسبوعًا",
"other": "خلال {0} أسبوع"
}
},
"day": {
"previous": "أمس",
"previous-2": "أول أمس",
"current": "اليوم",
"next": "غدًا",
"next-2": "بعد الغد",
"past": {
"one": "قبل يوم واحد",
"two": "قبل يومين",
"few": "قبل {0} أيام",
"many": "قبل {0} يومًا",
"other": "قبل {0} يوم"
},
"future": {
"one": "خلال يوم واحد",
"two": "خلال يومين",
"few": "خلال {0} أيام",
"many": "خلال {0} يومًا",
"other": "خلال {0} يوم"
}
},
"hour": {
"current": "الساعة الحالية",
"past": {
"one": "قبل ساعة واحدة",
"two": "قبل ساعتين",
"few": "قبل {0} ساعات",
"other": "قبل {0} ساعة"
},
"future": {
"one": "خلال ساعة واحدة",
"two": "خلال ساعتين",
"few": "خلال {0} ساعات",
"other": "خلال {0} ساعة"
}
},
"minute": {
"current": "هذه الدقيقة",
"past": {
"one": "قبل دقيقة واحدة",
"two": "قبل دقيقتين",
"few": "قبل {0} دقائق",
"other": "قبل {0} دقيقة"
},
"future": {
"one": "خلال دقيقة واحدة",
"two": "خلال دقيقتين",
"few": "خلال {0} دقائق",
"other": "خلال {0} دقيقة"
}
},
"second": {
"current": "الآن",
"past": {
"one": "قبل ثانية واحدة",
"two": "قبل ثانيتين",
"few": "قبل {0} ثوانٍ",
"other": "قبل {0} ثانية"
},
"future": {
"one": "خلال ثانية واحدة",
"two": "خلال ثانيتين",
"few": "خلال {0} ثوانٍ",
"other": "خلال {0} ثانية"
}
}
}

View File

@@ -0,0 +1 @@
module.exports=function(e){var r=String(e).split("."),n=Number(r[0])==e&&r[0].slice(-2);return 0==e?"zero":1==e?"one":2==e?"two":3<=n&&n<=10?"few":11<=n&&n<=99?"many":"other"}

140
node_modules/relative-time-format/locale/ar/short.json generated vendored Normal file
View File

@@ -0,0 +1,140 @@
{
"year": {
"previous": "السنة الماضية",
"current": "السنة الحالية",
"next": "السنة القادمة",
"past": {
"one": "قبل سنة واحدة",
"two": "قبل سنتين",
"few": "قبل {0} سنوات",
"other": "قبل {0} سنة"
},
"future": {
"one": "خلال سنة واحدة",
"two": "خلال سنتين",
"few": "خلال {0} سنوات",
"other": "خلال {0} سنة"
}
},
"quarter": {
"previous": "الربع الأخير",
"current": "هذا الربع",
"next": "الربع القادم",
"past": {
"one": "قبل ربع سنة واحد",
"two": "قبل ربعي سنة",
"few": "قبل {0} أرباع سنة",
"other": "قبل {0} ربع سنة"
},
"future": {
"one": "خلال ربع سنة واحد",
"two": "خلال ربعي سنة",
"few": "خلال {0} أرباع سنة",
"other": "خلال {0} ربع سنة"
}
},
"month": {
"previous": "الشهر الماضي",
"current": "هذا الشهر",
"next": "الشهر القادم",
"past": {
"one": "قبل شهر واحد",
"two": "قبل شهرين",
"few": "خلال {0} أشهر",
"many": "قبل {0} شهرًا",
"other": "قبل {0} شهر"
},
"future": {
"one": "خلال شهر واحد",
"two": "خلال شهرين",
"few": "خلال {0} أشهر",
"many": "خلال {0} شهرًا",
"other": "خلال {0} شهر"
}
},
"week": {
"previous": "الأسبوع الماضي",
"current": "هذا الأسبوع",
"next": "الأسبوع القادم",
"past": {
"one": "قبل أسبوع واحد",
"two": "قبل أسبوعين",
"few": "قبل {0} أسابيع",
"many": "قبل {0} أسبوعًا",
"other": "قبل {0} أسبوع"
},
"future": {
"one": "خلال أسبوع واحد",
"two": "خلال {0} أسبوعين",
"few": "خلال {0} أسابيع",
"many": "خلال {0} أسبوعًا",
"other": "خلال {0} أسبوع"
}
},
"day": {
"previous": "أمس",
"previous-2": "أول أمس",
"current": "اليوم",
"next": "غدًا",
"next-2": "بعد الغد",
"past": {
"one": "قبل يوم واحد",
"two": "قبل يومين",
"few": "قبل {0} أيام",
"many": "قبل {0} يومًا",
"other": "قبل {0} يوم"
},
"future": {
"one": "خلال يوم واحد",
"two": "خلال يومين",
"few": "خلال {0} أيام",
"many": "خلال {0} يومًا",
"other": "خلال {0} يوم"
}
},
"hour": {
"current": "الساعة الحالية",
"past": {
"one": "قبل ساعة واحدة",
"two": "قبل ساعتين",
"few": "قبل {0} ساعات",
"other": "قبل {0} ساعة"
},
"future": {
"one": "خلال ساعة واحدة",
"two": "خلال ساعتين",
"few": "خلال {0} ساعات",
"other": "خلال {0} ساعة"
}
},
"minute": {
"current": "هذه الدقيقة",
"past": {
"one": "قبل دقيقة واحدة",
"two": "قبل دقيقتين",
"few": "قبل {0} دقائق",
"other": "قبل {0} دقيقة"
},
"future": {
"one": "خلال دقيقة واحدة",
"two": "خلال دقيقتين",
"few": "خلال {0} دقائق",
"other": "خلال {0} دقيقة"
}
},
"second": {
"current": "الآن",
"past": {
"one": "قبل ثانية واحدة",
"two": "قبل ثانيتين",
"few": "قبل {0} ثوانٍ",
"other": "قبل {0} ثانية"
},
"future": {
"one": "خلال ثانية واحدة",
"two": "خلال ثانيتين",
"few": "خلال {0} ثوانٍ",
"other": "خلال {0} ثانية"
}
}
}

7
node_modules/relative-time-format/locale/as/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'as',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

54
node_modules/relative-time-format/locale/as/long.json generated vendored Normal file
View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "যোৱা বছৰ",
"current": "এই বছৰ",
"next": "অহা বছৰ",
"past": "{0} বছৰৰ পূৰ্বে",
"future": "{0} বছৰত"
},
"quarter": {
"previous": "যোৱা তিনি মাহ",
"current": "এই তিনি মাহ",
"next": "অহা তিনি মাহ",
"past": "{0} তিনি মাহ পূৰ্বে",
"future": "{0} তিনি মাহত"
},
"month": {
"previous": "যোৱা মাহ",
"current": "এই মাহ",
"next": "অহা মাহ",
"past": "{0} মাহ পূৰ্বে",
"future": "{0} মাহত"
},
"week": {
"previous": "যোৱা সপ্তাহ",
"current": "এই সপ্তাহ",
"next": "অহা সপ্তাহ",
"past": "{0} সপ্তাহ পূৰ্বে",
"future": "{0} সপ্তাহত"
},
"day": {
"previous": "কালি",
"previous-2": "পৰহি",
"current": "আজি",
"next": "কাইলৈ",
"next-2": "পৰহিলৈ",
"past": "{0} দিন পূৰ্বে",
"future": "{0} দিনত"
},
"hour": {
"current": "এইটো ঘণ্টাত",
"past": "{0} ঘণ্টা পূৰ্বে",
"future": "{0} ঘণ্টাত"
},
"minute": {
"current": "এইটো মিনিটত",
"past": "{0} মিনিট পূৰ্বে",
"future": "{0} মিনিটত"
},
"second": {
"current": "এতিয়া",
"past": "{0} ছেকেণ্ড পূৰ্বে",
"future": "{0} ছেকেণ্ডত"
}
}

View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "যোৱা বছৰ",
"current": "এই বছৰ",
"next": "অহা বছৰ",
"past": "{0} বছৰৰ পূৰ্বে",
"future": "{0} বছৰত"
},
"quarter": {
"previous": "যোৱা তিনি মাহ",
"current": "এই তিনি মাহ",
"next": "অহা তিনি মাহ",
"past": "{0} তিনি মাহ পূৰ্বে",
"future": "{0} তিনি মাহত"
},
"month": {
"previous": "যোৱা মাহ",
"current": "এই মাহ",
"next": "অহা মাহ",
"past": "{0} মাহ পূৰ্বে",
"future": "{0} মাহত"
},
"week": {
"previous": "যোৱা সপ্তাহ",
"current": "এই সপ্তাহ",
"next": "অহা সপ্তাহ",
"past": "{0} সপ্তাহ পূৰ্বে",
"future": "{0} সপ্তাহত"
},
"day": {
"previous": "কালি",
"previous-2": "পৰহি",
"current": "আজি",
"next": "কাইলৈ",
"next-2": "পৰহিলৈ",
"past": "{0} দিন পূৰ্বে",
"future": "{0} দিনত"
},
"hour": {
"current": "এইটো ঘণ্টাত",
"past": "{0} ঘণ্টা পূৰ্বে",
"future": "{0} ঘণ্টাত"
},
"minute": {
"current": "এইটো মিনিটত",
"past": "{0} মিনিট পূৰ্বে",
"future": "{0} মিনিটত"
},
"second": {
"current": "এতিয়া",
"past": "{0} ছেকেণ্ড পূৰ্বে",
"future": "{0} ছেকেণ্ডত"
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){return 0<=n&&n<=1?"one":"other"}

54
node_modules/relative-time-format/locale/as/short.json generated vendored Normal file
View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "যোৱা বছৰ",
"current": "এই বছৰ",
"next": "অহা বছৰ",
"past": "{0} বছৰৰ পূৰ্বে",
"future": "{0} বছৰত"
},
"quarter": {
"previous": "যোৱা তিনি মাহ",
"current": "এই তিনি মাহ",
"next": "অহা তিনি মাহ",
"past": "{0} তিনি মাহ পূৰ্বে",
"future": "{0} তিনি মাহত"
},
"month": {
"previous": "যোৱা মাহ",
"current": "এই মাহ",
"next": "অহা মাহ",
"past": "{0} মাহ পূৰ্বে",
"future": "{0} মাহত"
},
"week": {
"previous": "যোৱা সপ্তাহ",
"current": "এই সপ্তাহ",
"next": "অহা সপ্তাহ",
"past": "{0} সপ্তাহ পূৰ্বে",
"future": "{0} সপ্তাহত"
},
"day": {
"previous": "কালি",
"previous-2": "পৰহি",
"current": "আজি",
"next": "কাইলৈ",
"next-2": "পৰহিলৈ",
"past": "{0} দিন পূৰ্বে",
"future": "{0} দিনত"
},
"hour": {
"current": "এইটো ঘণ্টাত",
"past": "{0} ঘণ্টা পূৰ্বে",
"future": "{0} ঘণ্টাত"
},
"minute": {
"current": "এইটো মিনিটত",
"past": "{0} মিনিট পূৰ্বে",
"future": "{0} মিনিটত"
},
"second": {
"current": "এতিয়া",
"past": "{0} ছেকেণ্ড পূৰ্বে",
"future": "{0} ছেকেণ্ডত"
}
}

View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'ast',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

102
node_modules/relative-time-format/locale/ast/long.json generated vendored Normal file
View File

@@ -0,0 +1,102 @@
{
"year": {
"previous": "lañu pasáu",
"current": "esti añu",
"next": "lañu viniente",
"past": {
"one": "hai {0} añu",
"other": "hai {0} años"
},
"future": {
"one": "en {0} añu",
"other": "en {0} años"
}
},
"quarter": {
"previous": "trimestre anterior",
"current": "esti trimestre",
"next": "trimestre viniente",
"past": {
"one": "hai {0} trimestre",
"other": "hai {0} trimestres"
},
"future": {
"one": "en {0} trimestre",
"other": "en {0} trimestres"
}
},
"month": {
"previous": "el mes pasáu",
"current": "esti mes",
"next": "el mes viniente",
"past": {
"one": "hai {0} mes",
"other": "hai {0} meses"
},
"future": {
"one": "en {0} mes",
"other": "en {0} meses"
}
},
"week": {
"previous": "la selmana pasada",
"current": "esta selmana",
"next": "la selmana viniente",
"past": {
"one": "hai {0} selmana",
"other": "hai {0} selmanes"
},
"future": {
"one": "en {0} selmana",
"other": "en {0} selmanes"
}
},
"day": {
"previous": "ayeri",
"previous-2": "antayeri",
"current": "güei",
"next": "mañana",
"next-2": "pasao mañana",
"past": {
"one": "hai {0} día",
"other": "hai {0} díes"
},
"future": {
"one": "en {0} día",
"other": "en {0} díes"
}
},
"hour": {
"current": "esta hora",
"past": {
"one": "hai {0} hora",
"other": "hai {0} hores"
},
"future": {
"one": "en {0} hora",
"other": "en {0} hores"
}
},
"minute": {
"current": "esti minutu",
"past": {
"one": "hai {0} minutu",
"other": "hai {0} minutos"
},
"future": {
"one": "en {0} minutu",
"other": "en {0} minutos"
}
},
"second": {
"current": "agora",
"past": {
"one": "hai {0} segundu",
"other": "hai {0} segundos"
},
"future": {
"one": "en {0} segundu",
"other": "en {0} segundos"
}
}
}

View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "añu pas.",
"current": "esti añu",
"next": "añu vin.",
"past": "hai {0} a.",
"future": "en {0} a."
},
"quarter": {
"previous": "trim. ant.",
"current": "esti trim.",
"next": "trim. vin.",
"past": "hai {0} tr.",
"future": "en {0} tr."
},
"month": {
"previous": "mes pas.",
"current": "esti mes",
"next": "mes vin.",
"past": "hai {0} m.",
"future": "en {0} m."
},
"week": {
"previous": "selm. pas.",
"current": "esta selm.",
"next": "selm. vin.",
"past": "hai {0} se.",
"future": "en {0} se."
},
"day": {
"previous": "ayeri",
"previous-2": "antay.",
"current": "güei",
"next": "mañ.",
"next-2": "p. mañ.",
"past": "hai {0} d.",
"future": "en {0} d."
},
"hour": {
"current": "esta h.",
"past": "hai {0} h.",
"future": "en {0} h."
},
"minute": {
"current": "esti min.",
"past": "hai {0} min.",
"future": "en {0} min."
},
"second": {
"current": "agora",
"past": "hai {0} s.",
"future": "en {0} s."
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){var r=!String(n).split(".")[1];return 1==n&&r?"one":"other"}

View File

@@ -0,0 +1,72 @@
{
"year": {
"previous": "lañu pas.",
"current": "esti añu",
"next": "lañu vin.",
"past": {
"one": "hai {0} añu",
"other": "hai {0} años"
},
"future": {
"one": "en {0} añu",
"other": "en {0} años"
}
},
"quarter": {
"previous": "trim. ant.",
"current": "esti trim.",
"next": "trim. vin.",
"past": "hai {0} trim.",
"future": "en {0} trim."
},
"month": {
"previous": "mes pas.",
"current": "esti mes",
"next": "mes vin.",
"past": {
"one": "hai {0} mes",
"other": "hai {0} meses"
},
"future": {
"one": "en {0} mes",
"other": "en {0} meses"
}
},
"week": {
"previous": "selm. pasada",
"current": "esta selm.",
"next": "selm. viniente",
"past": "hai {0} selm.",
"future": "en {0} selm."
},
"day": {
"previous": "ayeri",
"previous-2": "antayeri",
"current": "güei",
"next": "mañana",
"next-2": "pasao mañana",
"past": {
"one": "hai {0} día",
"other": "hai {0} díes"
},
"future": {
"one": "en {0} día",
"other": "en {0} díes"
}
},
"hour": {
"current": "esta hora",
"past": "hai {0} h.",
"future": "en {0} h."
},
"minute": {
"current": "esti min.",
"past": "hai {0} min.",
"future": "en {0} min."
},
"second": {
"current": "agora",
"past": "hai {0} seg.",
"future": "en {0} seg."
}
}

7
node_modules/relative-time-format/locale/az/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'az',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

52
node_modules/relative-time-format/locale/az/long.json generated vendored Normal file
View File

@@ -0,0 +1,52 @@
{
"year": {
"previous": "keçən il",
"current": "bu il",
"next": "gələn il",
"past": "{0} il öncə",
"future": "{0} il ərzində"
},
"quarter": {
"previous": "keçən rüb",
"current": "bu rüb",
"next": "gələn rüb",
"past": "{0} rüb öncə",
"future": "{0} rüb ərzində"
},
"month": {
"previous": "keçən ay",
"current": "bu ay",
"next": "gələn ay",
"past": "{0} ay öncə",
"future": "{0} ay ərzində"
},
"week": {
"previous": "keçən həftə",
"current": "bu həftə",
"next": "gələn həftə",
"past": "{0} həftə öncə",
"future": "{0} həftə ərzində"
},
"day": {
"previous": "dünən",
"current": "bu gün",
"next": "sabah",
"past": "{0} gün öncə",
"future": "{0} gün ərzində"
},
"hour": {
"current": "bu saat",
"past": "{0} saat öncə",
"future": "{0} saat ərzində"
},
"minute": {
"current": "bu dəqiqə",
"past": "{0} dəqiqə öncə",
"future": "{0} dəqiqə ərzində"
},
"second": {
"current": "indi",
"past": "{0} saniyə öncə",
"future": "{0} saniyə ərzində"
}
}

View File

@@ -0,0 +1,52 @@
{
"year": {
"previous": "keçən il",
"current": "bu il",
"next": "gələn il",
"past": "{0} il öncə",
"future": "{0} il ərzində"
},
"quarter": {
"previous": "keçən rüb",
"current": "bu rüb",
"next": "gələn rüb",
"past": "{0} rüb öncə",
"future": "{0} rüb ərzində"
},
"month": {
"previous": "keçən ay",
"current": "bu ay",
"next": "gələn ay",
"past": "{0} ay öncə",
"future": "{0} ay ərzində"
},
"week": {
"previous": "keçən həftə",
"current": "bu həftə",
"next": "gələn həftə",
"past": "{0} həftə öncə",
"future": "{0} həftə ərzində"
},
"day": {
"previous": "dünən",
"current": "bu gün",
"next": "sabah",
"past": "{0} gün öncə",
"future": "{0} gün ərzində"
},
"hour": {
"current": "bu saat",
"past": "{0} saat öncə",
"future": "{0} saat ərzində"
},
"minute": {
"current": "bu dəqiqə",
"past": "{0} dəqiqə öncə",
"future": "{0} dəqiqə ərzində"
},
"second": {
"current": "indi",
"past": "{0} saniyə öncə",
"future": "{0} saniyə ərzində"
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){return 1==n?"one":"other"}

52
node_modules/relative-time-format/locale/az/short.json generated vendored Normal file
View File

@@ -0,0 +1,52 @@
{
"year": {
"previous": "keçən il",
"current": "bu il",
"next": "gələn il",
"past": "{0} il öncə",
"future": "{0} il ərzində"
},
"quarter": {
"previous": "keçən rüb",
"current": "bu rüb",
"next": "gələn rüb",
"past": "{0} rüb öncə",
"future": "{0} rüb ərzində"
},
"month": {
"previous": "keçən ay",
"current": "bu ay",
"next": "gələn ay",
"past": "{0} ay öncə",
"future": "{0} ay ərzində"
},
"week": {
"previous": "keçən həftə",
"current": "bu həftə",
"next": "gələn həftə",
"past": "{0} həftə öncə",
"future": "{0} həftə ərzində"
},
"day": {
"previous": "dünən",
"current": "bu gün",
"next": "sabah",
"past": "{0} gün öncə",
"future": "{0} gün ərzində"
},
"hour": {
"current": "bu saat",
"past": "{0} saat öncə",
"future": "{0} saat ərzində"
},
"minute": {
"current": "bu dəqiqə",
"past": "{0} dəqiqə öncə",
"future": "{0} dəqiqə ərzində"
},
"second": {
"current": "indi",
"past": "{0} saniyə öncə",
"future": "{0} saniyə ərzində"
}
}

7
node_modules/relative-time-format/locale/be/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'be',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

128
node_modules/relative-time-format/locale/be/long.json generated vendored Normal file
View File

@@ -0,0 +1,128 @@
{
"year": {
"previous": "у мінулым годзе",
"current": "у гэтым годзе",
"next": "у наступным годзе",
"past": {
"one": "{0} год таму",
"few": "{0} гады таму",
"many": "{0} гадоў таму",
"other": "{0} года таму"
},
"future": {
"one": "праз {0} год",
"few": "праз {0} гады",
"many": "праз {0} гадоў",
"other": "праз {0} года"
}
},
"quarter": {
"previous": "у мінулым квартале",
"current": "у гэтым квартале",
"next": "у наступным квартале",
"past": {
"one": "{0} квартал таму",
"few": "{0} кварталы таму",
"many": "{0} кварталаў таму",
"other": "{0} квартала таму"
},
"future": {
"one": "праз {0} квартал",
"few": "праз {0} кварталы",
"many": "праз {0} кварталаў",
"other": "праз {0} квартала"
}
},
"month": {
"previous": "у мінулым месяцы",
"current": "у гэтым месяцы",
"next": "у наступным месяцы",
"past": {
"one": "{0} месяц таму",
"few": "{0} месяцы таму",
"many": "{0} месяцаў таму",
"other": "{0} месяца таму"
},
"future": {
"one": "праз {0} месяц",
"few": "праз {0} месяцы",
"many": "праз {0} месяцаў",
"other": "праз {0} месяца"
}
},
"week": {
"previous": "на мінулым тыдні",
"current": "на гэтым тыдні",
"next": "на наступным тыдні",
"past": {
"one": "{0} тыдзень таму",
"few": "{0} тыдні таму",
"many": "{0} тыдняў таму",
"other": "{0} тыдня таму"
},
"future": {
"one": "праз {0} тыдзень",
"few": "праз {0} тыдні",
"many": "праз {0} тыдняў",
"other": "праз {0} тыдня"
}
},
"day": {
"previous": "учора",
"previous-2": "пазаўчора",
"current": "сёння",
"next": "заўтра",
"next-2": "паслязаўтра",
"past": {
"one": "{0} дзень таму",
"few": "{0} дні таму",
"many": "{0} дзён таму",
"other": "{0} дня таму"
},
"future": {
"one": "праз {0} дзень",
"few": "праз {0} дні",
"many": "праз {0} дзён",
"other": "праз {0} дня"
}
},
"hour": {
"current": "у гэту гадзіну",
"past": {
"one": "{0} гадзіну таму",
"many": "{0} гадзін таму",
"other": "{0} гадзіны таму"
},
"future": {
"one": "праз {0} гадзіну",
"many": "праз {0} гадзін",
"other": "праз {0} гадзіны"
}
},
"minute": {
"current": "у гэту хвіліну",
"past": {
"one": "{0} хвіліну таму",
"many": "{0} хвілін таму",
"other": "{0} хвіліны таму"
},
"future": {
"one": "праз {0} хвіліну",
"many": "праз {0} хвілін",
"other": "праз {0} хвіліны"
}
},
"second": {
"current": "цяпер",
"past": {
"one": "{0} секунду таму",
"many": "{0} секунд таму",
"other": "{0} секунды таму"
},
"future": {
"one": "праз {0} секунду",
"many": "праз {0} секунд",
"other": "праз {0} секунды"
}
}
}

View File

@@ -0,0 +1,64 @@
{
"year": {
"previous": "у мінулым годзе",
"current": "у гэтым годзе",
"next": "у наступным годзе",
"past": "{0} г. таму",
"future": "праз {0} г."
},
"quarter": {
"previous": "у мінулым квартале",
"current": "у гэтым квартале",
"next": "у наступным квартале",
"past": "{0} кв. таму",
"future": "праз {0} кв."
},
"month": {
"previous": "у мінулым месяцы",
"current": "у гэтым месяцы",
"next": "у наступным месяцы",
"past": "{0} мес. таму",
"future": "праз {0} мес."
},
"week": {
"previous": "на мінулым тыдні",
"current": "на гэтым тыдні",
"next": "на наступным тыдні",
"past": "{0} тыд таму",
"future": "праз {0} тыд"
},
"day": {
"previous": "учора",
"previous-2": "пазаўчора",
"current": "сёння",
"next": "заўтра",
"next-2": "паслязаўтра",
"past": {
"one": "{0} дзень таму",
"few": "{0} дні таму",
"many": "{0} дзён таму",
"other": "{0} дня таму"
},
"future": {
"one": "праз {0} дзень",
"few": "праз {0} дні",
"many": "праз {0} дзён",
"other": "праз {0} дня"
}
},
"hour": {
"current": "у гэту гадзіну",
"past": "{0} гадз таму",
"future": "праз {0} гадз"
},
"minute": {
"current": "у гэту хвіліну",
"past": "{0} хв таму",
"future": "праз {0} хв"
},
"second": {
"current": "цяпер",
"past": "{0} с таму",
"future": "праз {0} с"
}
}

View File

@@ -0,0 +1 @@
module.exports=function(e){var i=String(e).split("."),n=Number(i[0])==e,r=n&&i[0].slice(-1),s=n&&i[0].slice(-2);return 1==r&&11!=s?"one":2<=r&&r<=4&&(s<12||14<s)?"few":n&&0==r||5<=r&&r<=9||11<=s&&s<=14?"many":"other"}

64
node_modules/relative-time-format/locale/be/short.json generated vendored Normal file
View File

@@ -0,0 +1,64 @@
{
"year": {
"previous": "у мінулым годзе",
"current": "у гэтым годзе",
"next": "у наступным годзе",
"past": "{0} г. таму",
"future": "праз {0} г."
},
"quarter": {
"previous": "у мінулым квартале",
"current": "у гэтым квартале",
"next": "у наступным квартале",
"past": "{0} кв. таму",
"future": "праз {0} кв."
},
"month": {
"previous": "у мінулым месяцы",
"current": "у гэтым месяцы",
"next": "у наступным месяцы",
"past": "{0} мес. таму",
"future": "праз {0} мес."
},
"week": {
"previous": "на мінулым тыдні",
"current": "на гэтым тыдні",
"next": "на наступным тыдні",
"past": "{0} тыд таму",
"future": "праз {0} тыд"
},
"day": {
"previous": "учора",
"previous-2": "пазаўчора",
"current": "сёння",
"next": "заўтра",
"next-2": "паслязаўтра",
"past": {
"one": "{0} дзень таму",
"few": "{0} дні таму",
"many": "{0} дзён таму",
"other": "{0} дня таму"
},
"future": {
"one": "праз {0} дзень",
"few": "праз {0} дні",
"many": "праз {0} дзён",
"other": "праз {0} дня"
}
},
"hour": {
"current": "у гэту гадзіну",
"past": "{0} гадз таму",
"future": "праз {0} гадз"
},
"minute": {
"current": "у гэту хвіліну",
"past": "{0} хв таму",
"future": "праз {0} хв"
},
"second": {
"current": "цяпер",
"past": "{0} с таму",
"future": "праз {0} с"
}
}

7
node_modules/relative-time-format/locale/bg/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'bg',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

102
node_modules/relative-time-format/locale/bg/long.json generated vendored Normal file
View File

@@ -0,0 +1,102 @@
{
"year": {
"previous": "миналата година",
"current": "тази година",
"next": "следващата година",
"past": {
"one": "преди {0} година",
"other": "преди {0} години"
},
"future": {
"one": "след {0} година",
"other": "след {0} години"
}
},
"quarter": {
"previous": "предходно тримесечие",
"current": "това тримесечие",
"next": "следващо тримесечие",
"past": {
"one": "преди {0} тримесечие",
"other": "преди {0} тримесечия"
},
"future": {
"one": "след {0} тримесечие",
"other": "след {0} тримесечия"
}
},
"month": {
"previous": "предходен месец",
"current": "този месец",
"next": "следващ месец",
"past": {
"one": "преди {0} месец",
"other": "преди {0} месеца"
},
"future": {
"one": "след {0} месец",
"other": "след {0} месеца"
}
},
"week": {
"previous": "предходната седмица",
"current": "тази седмица",
"next": "следващата седмица",
"past": {
"one": "преди {0} седмица",
"other": "преди {0} седмици"
},
"future": {
"one": "след {0} седмица",
"other": "след {0} седмици"
}
},
"day": {
"previous": "вчера",
"previous-2": "онзи ден",
"current": "днес",
"next": "утре",
"next-2": "вдругиден",
"past": {
"one": "преди {0} ден",
"other": "преди {0} дни"
},
"future": {
"one": "след {0} ден",
"other": "след {0} дни"
}
},
"hour": {
"current": "в този час",
"past": {
"one": "преди {0} час",
"other": "преди {0} часа"
},
"future": {
"one": "след {0} час",
"other": "след {0} часа"
}
},
"minute": {
"current": "в тази минута",
"past": {
"one": "преди {0} минута",
"other": "преди {0} минути"
},
"future": {
"one": "след {0} минута",
"other": "след {0} минути"
}
},
"second": {
"current": "сега",
"past": {
"one": "преди {0} секунда",
"other": "преди {0} секунди"
},
"future": {
"one": "след {0} секунда",
"other": "след {0} секунди"
}
}
}

View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "мин. г.",
"current": "т. г.",
"next": "сл. г.",
"past": "пр. {0} г.",
"future": "сл. {0} г."
},
"quarter": {
"previous": "мин. трим.",
"current": "това трим.",
"next": "следв. трим.",
"past": "пр. {0} трим.",
"future": "сл. {0} трим."
},
"month": {
"previous": "мин. м.",
"current": "т. м.",
"next": "сл. м.",
"past": "пр. {0} м.",
"future": "сл. {0} м."
},
"week": {
"previous": "мин. седм.",
"current": "тази седм.",
"next": "сл. седм.",
"past": "пр. {0} седм.",
"future": "сл. {0} седм."
},
"day": {
"previous": "вчера",
"previous-2": "онзи ден",
"current": "днес",
"next": "утре",
"next-2": "вдругиден",
"past": "пр. {0} д",
"future": "сл. {0} д"
},
"hour": {
"current": "в този час",
"past": "пр. {0} ч",
"future": "сл. {0} ч"
},
"minute": {
"current": "в тази минута",
"past": "пр. {0} мин",
"future": "сл. {0} мин"
},
"second": {
"current": "сега",
"past": "пр. {0} сек",
"future": "сл. {0} сек"
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){return 1==n?"one":"other"}

60
node_modules/relative-time-format/locale/bg/short.json generated vendored Normal file
View File

@@ -0,0 +1,60 @@
{
"year": {
"previous": "мин. г.",
"current": "т. г.",
"next": "следв. г.",
"past": "преди {0} г.",
"future": "след {0} г."
},
"quarter": {
"previous": "мин. трим.",
"current": "това трим.",
"next": "следв. трим.",
"past": "преди {0} трим.",
"future": "след {0} трим."
},
"month": {
"previous": "мин. мес.",
"current": "този мес.",
"next": "следв. мес.",
"past": "преди {0} м.",
"future": "след {0} м."
},
"week": {
"previous": "миналата седмица",
"current": "тази седм.",
"next": "следв. седм.",
"past": "преди {0} седм.",
"future": "след {0} седм."
},
"day": {
"previous": "вчера",
"previous-2": "онзи ден",
"current": "днес",
"next": "утре",
"next-2": "вдругиден",
"past": {
"one": "преди {0} ден",
"other": "преди {0} дни"
},
"future": {
"one": "след {0} ден",
"other": "след {0} дни"
}
},
"hour": {
"current": "в този час",
"past": "преди {0} ч",
"future": "след {0} ч"
},
"minute": {
"current": "в тази минута",
"past": "преди {0} мин",
"future": "след {0} мин"
},
"second": {
"current": "сега",
"past": "преди {0} сек",
"future": "след {0} сек"
}
}

7
node_modules/relative-time-format/locale/bn/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'bn',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

54
node_modules/relative-time-format/locale/bn/long.json generated vendored Normal file
View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "গত বছর",
"current": "এই বছর",
"next": "পরের বছর",
"past": "{0} বছর পূর্বে",
"future": "{0} বছরে"
},
"quarter": {
"previous": "গত ত্রৈমাসিক",
"current": "এই ত্রৈমাসিক",
"next": "পরের ত্রৈমাসিক",
"past": "{0} ত্রৈমাসিক আগে",
"future": "{0} ত্রৈমাসিকে"
},
"month": {
"previous": "গত মাস",
"current": "এই মাস",
"next": "পরের মাস",
"past": "{0} মাস আগে",
"future": "{0} মাসে"
},
"week": {
"previous": "গত সপ্তাহ",
"current": "এই সপ্তাহ",
"next": "পরের সপ্তাহ",
"past": "{0} সপ্তাহ আগে",
"future": "{0} সপ্তাহে"
},
"day": {
"previous": "গতকাল",
"previous-2": "গত পরশু",
"current": "আজ",
"next": "আগামীকাল",
"next-2": "আগামী পরশু",
"past": "{0} দিন আগে",
"future": "{0} দিনের মধ্যে"
},
"hour": {
"current": "এই ঘণ্টায়",
"past": "{0} ঘন্টা আগে",
"future": "{0} ঘন্টায়"
},
"minute": {
"current": "এই মিনিট",
"past": "{0} মিনিট আগে",
"future": "{0} মিনিটে"
},
"second": {
"current": "এখন",
"past": "{0} সেকেন্ড পূর্বে",
"future": "{0} সেকেন্ডে"
}
}

View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "গত বছর",
"current": "এই বছর",
"next": "পরের বছর",
"past": "{0} বছর পূর্বে",
"future": "{0} বছরে"
},
"quarter": {
"previous": "গত ত্রৈমাসিক",
"current": "এই ত্রৈমাসিক",
"next": "পরের ত্রৈমাসিক",
"past": "{0} ত্রৈমাসিক আগে",
"future": "{0} ত্রৈমাসিকে"
},
"month": {
"previous": "গত মাস",
"current": "এই মাস",
"next": "পরের মাস",
"past": "{0} মাস আগে",
"future": "{0} মাসে"
},
"week": {
"previous": "গত সপ্তাহ",
"current": "এই সপ্তাহ",
"next": "পরের সপ্তাহ",
"past": "{0} সপ্তাহ আগে",
"future": "{0} সপ্তাহে"
},
"day": {
"previous": "গতকাল",
"previous-2": "গত পরশু",
"current": "আজ",
"next": "আগামীকাল",
"next-2": "আগামী পরশু",
"past": "{0} দিন আগে",
"future": "{0} দিনের মধ্যে"
},
"hour": {
"current": "এই ঘণ্টায়",
"past": "{0} ঘন্টা আগে",
"future": "{0} ঘন্টায়"
},
"minute": {
"current": "এই মিনিট",
"past": "{0} মিনিট আগে",
"future": "{0} মিনিটে"
},
"second": {
"current": "এখন",
"past": "{0} সেকেন্ড আগে",
"future": "{0} সেকেন্ডে"
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){return 0<=n&&n<=1?"one":"other"}

54
node_modules/relative-time-format/locale/bn/short.json generated vendored Normal file
View File

@@ -0,0 +1,54 @@
{
"year": {
"previous": "গত বছর",
"current": "এই বছর",
"next": "পরের বছর",
"past": "{0} বছর পূর্বে",
"future": "{0} বছরে"
},
"quarter": {
"previous": "গত ত্রৈমাসিক",
"current": "এই ত্রৈমাসিক",
"next": "পরের ত্রৈমাসিক",
"past": "{0} ত্রৈমাসিক আগে",
"future": "{0} ত্রৈমাসিকে"
},
"month": {
"previous": "গত মাস",
"current": "এই মাস",
"next": "পরের মাস",
"past": "{0} মাস আগে",
"future": "{0} মাসে"
},
"week": {
"previous": "গত সপ্তাহ",
"current": "এই সপ্তাহ",
"next": "পরের সপ্তাহ",
"past": "{0} সপ্তাহ আগে",
"future": "{0} সপ্তাহে"
},
"day": {
"previous": "গতকাল",
"previous-2": "গত পরশু",
"current": "আজ",
"next": "আগামীকাল",
"next-2": "আগামী পরশু",
"past": "{0} দিন আগে",
"future": "{0} দিনের মধ্যে"
},
"hour": {
"current": "এই ঘণ্টায়",
"past": "{0} ঘন্টা আগে",
"future": "{0} ঘন্টায়"
},
"minute": {
"current": "এই মিনিট",
"past": "{0} মিনিট আগে",
"future": "{0} মিনিটে"
},
"second": {
"current": "এখন",
"past": "{0} সেকেন্ড পূর্বে",
"future": "{0} সেকেন্ডে"
}
}

7
node_modules/relative-time-format/locale/br/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'br',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

112
node_modules/relative-time-format/locale/br/long.json generated vendored Normal file
View File

@@ -0,0 +1,112 @@
{
"year": {
"previous": "warlene",
"current": "hevlene",
"next": "ar bloaz a zeu",
"past": {
"one": "{0} bloaz zo",
"few": "{0} bloaz zo",
"many": "{0} a vloazioù zo",
"other": "{0} vloaz zo"
},
"future": {
"one": "a-benn {0} bloaz",
"few": "a-benn {0} bloaz",
"many": "a-benn {0} a vloazioù",
"other": "a-benn {0} vloaz"
}
},
"quarter": {
"previous": "an trimiziad diaraok",
"current": "an trimiziad-mañ",
"next": "an trimiziad a zeu",
"past": {
"two": "{0} drimiziad zo",
"few": "{0} zrimiziad zo",
"many": "{0} a zrimiziadoù zo",
"other": "{0} trimiziad zo"
},
"future": {
"two": "a-benn {0} drimiziad",
"few": "a-benn {0} zrimiziad",
"many": "a-benn {0} a drimiziadoù",
"other": "a-benn {0} trimiziad"
}
},
"month": {
"previous": "ar miz diaraok",
"current": "ar miz-mañ",
"next": "ar miz a zeu",
"past": {
"two": "{0} viz zo",
"many": "{0} a vizioù zo",
"other": "{0} miz zo"
},
"future": {
"two": "a-benn {0} viz",
"many": "a-benn {0} a vizioù",
"other": "a-benn {0} miz"
}
},
"week": {
"previous": "ar sizhun diaraok",
"current": "ar sizhun-mañ",
"next": "ar sizhun a zeu",
"past": {
"many": "{0} a sizhunioù zo",
"other": "{0} sizhun zo"
},
"future": {
"many": "a-benn {0} a sizhunioù",
"other": "a-benn {0} sizhun"
}
},
"day": {
"previous": "decʼh",
"previous-2": "dercʼhent-decʼh",
"current": "hiziv",
"next": "warcʼhoazh",
"past": {
"two": "{0} zeiz zo",
"many": "{0} a zeizioù zo",
"other": "{0} deiz zo"
},
"future": {
"two": "a-benn {0} zeiz",
"many": "a-benn {0} a zeizioù",
"other": "a-benn {0} deiz"
}
},
"hour": {
"current": "dʼan eur-mañ",
"past": {
"many": "{0} a eurioù zo",
"other": "{0} eur zo"
},
"future": {
"many": "a-benn {0} a eurioù",
"other": "a-benn {0} eur"
}
},
"minute": {
"current": "this minute",
"past": {
"two": "{0} vunut zo",
"many": "{0} a vunutoù zo",
"other": "{0} munut zo"
},
"future": {
"two": "a-benn {0} vunut",
"many": "a-benn {0} a vunutoù",
"other": "a-benn {0} munut"
}
},
"second": {
"current": "bremañ",
"past": "{0} eilenn zo",
"future": {
"many": "a-benn {0} a eilennoù",
"other": "a-benn {0} eilenn"
}
}
}

View File

@@ -0,0 +1,59 @@
{
"year": {
"previous": "warlene",
"current": "hevlene",
"next": "ar bl. a zeu",
"past": "-{0} bl.",
"future": "+{0} bl."
},
"quarter": {
"previous": "an trim. diaraok",
"current": "an trim.-mañ",
"next": "an trim. a zeu",
"past": "-{0} trim.",
"future": "+{0} trim."
},
"month": {
"previous": "ar miz diaraok",
"current": "ar miz-mañ",
"next": "ar miz a zeu",
"past": "-{0} miz",
"future": "+{0} miz"
},
"week": {
"previous": "ar sizhun diaraok",
"current": "ar sizhun-mañ",
"next": "ar sizhun a zeu",
"past": {
"many": "{0} a sizhunioù zo",
"other": "{0} sizhun zo"
},
"future": {
"many": "a-benn {0} a sizhunioù",
"other": "a-benn {0} sizhun"
}
},
"day": {
"previous": "decʼh",
"previous-2": "dercʼhent-decʼh",
"current": "hiziv",
"next": "warcʼhoazh",
"past": "-{0} d",
"future": "+{0} d"
},
"hour": {
"current": "dʼan eur-mañ",
"past": "-{0} h",
"future": "+{0} h"
},
"minute": {
"current": "this minute",
"past": "-{0} min",
"future": "+{0} min"
},
"second": {
"current": "brem.",
"past": "-{0} s",
"future": "+{0} s"
}
}

View File

@@ -0,0 +1 @@
module.exports=function(e){var i=String(e).split("."),n=Number(i[0])==e,r=n&&i[0].slice(-1),s=n&&i[0].slice(-2),t=n&&i[0].slice(-6);return 1==r&&11!=s&&71!=s&&91!=s?"one":2==r&&12!=s&&72!=s&&92!=s?"two":(3==r||4==r||9==r)&&(s<10||19<s)&&(s<70||79<s)&&(s<90||99<s)?"few":0!=e&&n&&0==t?"many":"other"}

67
node_modules/relative-time-format/locale/br/short.json generated vendored Normal file
View File

@@ -0,0 +1,67 @@
{
"year": {
"previous": "warlene",
"current": "hevlene",
"next": "ar bl. a zeu",
"past": "{0} bl. zo",
"future": "a-benn {0} bl."
},
"quarter": {
"previous": "an trim. diaraok",
"current": "an trim.-mañ",
"next": "an trim. a zeu",
"past": "{0} trim. zo",
"future": "a-benn {0} trim."
},
"month": {
"previous": "ar miz diaraok",
"current": "ar miz-mañ",
"next": "ar miz a zeu",
"past": {
"two": "{0} viz zo",
"many": "{0} a vizioù zo",
"other": "{0} miz zo"
},
"future": {
"two": "a-benn {0} viz",
"many": "a-benn {0} a vizioù",
"other": "a-benn {0} miz"
}
},
"week": {
"previous": "ar sizhun diaraok",
"current": "ar sizhun-mañ",
"next": "ar sizhun a zeu",
"past": {
"many": "{0} a sizhunioù zo",
"other": "{0} sizhun zo"
},
"future": {
"many": "a-benn {0} a sizhunioù",
"other": "a-benn {0} sizhun"
}
},
"day": {
"previous": "decʼh",
"previous-2": "dercʼhent-decʼh",
"current": "hiziv",
"next": "warcʼhoazh",
"past": "{0} d zo",
"future": "a-benn {0} d"
},
"hour": {
"current": "dʼan eur-mañ",
"past": "{0} e zo",
"future": "a-benn {0} e"
},
"minute": {
"current": "this minute",
"past": "{0} min zo",
"future": "a-benn {0} min"
},
"second": {
"current": "brem.",
"past": "{0} s zo",
"future": "a-benn {0} s"
}
}

View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'bs-Cyrl',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('../bs/quantify')
}

View File

@@ -0,0 +1,106 @@
{
"year": {
"previous": "Прошле године",
"current": "Ове године",
"next": "Следеће године",
"past": {
"one": "пре {0} годину",
"few": "пре {0} године",
"other": "пре {0} година"
},
"future": {
"one": "за {0} годину",
"few": "за {0} године",
"other": "за {0} година"
}
},
"quarter": {
"previous": "last quarter",
"current": "this quarter",
"next": "next quarter",
"past": "-{0} Q",
"future": "+{0} Q"
},
"month": {
"previous": "Прошлог месеца",
"current": "Овог месеца",
"next": "Следећег месеца",
"past": {
"one": "пре {0} месец",
"few": "пре {0} месеца",
"other": "пре {0} месеци"
},
"future": {
"one": "за {0} месец",
"few": "за {0} месеца",
"other": "за {0} месеци"
}
},
"week": {
"previous": "Прошле недеље",
"current": "Ове недеље",
"next": "Следеће недеље",
"past": {
"one": "пре {0} недељу",
"few": "пре {0} недеље",
"other": "пре {0} недеља"
},
"future": {
"one": "за {0} недељу",
"few": "за {0} недеље",
"other": "за {0} недеља"
}
},
"day": {
"previous": "јуче",
"previous-2": "прекјуче",
"current": "данас",
"next": "сутра",
"next-2": "прекосутра",
"past": {
"one": "пре {0} дан",
"other": "пре {0} дана"
},
"future": {
"one": "за {0} дан",
"other": "за {0} дана"
}
},
"hour": {
"current": "this hour",
"past": {
"one": "пре {0} сат",
"few": "пре {0} сата",
"other": "пре {0} сати"
},
"future": {
"one": "за {0} сат",
"few": "за {0} сата",
"other": "за {0} сати"
}
},
"minute": {
"current": "this minute",
"past": {
"one": "пре {0} минут",
"other": "пре {0} минута"
},
"future": {
"one": "за {0} минут",
"other": "за {0} минута"
}
},
"second": {
"current": "now",
"past": {
"one": "пре {0} секунд",
"few": "пре {0} секунде",
"other": "пре {0} секунди"
},
"future": {
"one": "за {0} секунд",
"few": "за {0} секунде",
"other": "за {0} секунди"
}
}
}

View File

@@ -0,0 +1,106 @@
{
"year": {
"previous": "Прошле године",
"current": "Ове године",
"next": "Следеће године",
"past": {
"one": "пре {0} годину",
"few": "пре {0} године",
"other": "пре {0} година"
},
"future": {
"one": "за {0} годину",
"few": "за {0} године",
"other": "за {0} година"
}
},
"quarter": {
"previous": "last quarter",
"current": "this quarter",
"next": "next quarter",
"past": "-{0} Q",
"future": "+{0} Q"
},
"month": {
"previous": "Прошлог месеца",
"current": "Овог месеца",
"next": "Следећег месеца",
"past": {
"one": "пре {0} месец",
"few": "пре {0} месеца",
"other": "пре {0} месеци"
},
"future": {
"one": "за {0} месец",
"few": "за {0} месеца",
"other": "за {0} месеци"
}
},
"week": {
"previous": "Прошле недеље",
"current": "Ове недеље",
"next": "Следеће недеље",
"past": {
"one": "пре {0} недељу",
"few": "пре {0} недеље",
"other": "пре {0} недеља"
},
"future": {
"one": "за {0} недељу",
"few": "за {0} недеље",
"other": "за {0} недеља"
}
},
"day": {
"previous": "јуче",
"previous-2": "прекјуче",
"current": "данас",
"next": "сутра",
"next-2": "прекосутра",
"past": {
"one": "пре {0} дан",
"other": "пре {0} дана"
},
"future": {
"one": "за {0} дан",
"other": "за {0} дана"
}
},
"hour": {
"current": "this hour",
"past": {
"one": "пре {0} сат",
"few": "пре {0} сата",
"other": "пре {0} сати"
},
"future": {
"one": "за {0} сат",
"few": "за {0} сата",
"other": "за {0} сати"
}
},
"minute": {
"current": "this minute",
"past": {
"one": "пре {0} минут",
"other": "пре {0} минута"
},
"future": {
"one": "за {0} минут",
"other": "за {0} минута"
}
},
"second": {
"current": "now",
"past": {
"one": "пре {0} секунд",
"few": "пре {0} секунде",
"other": "пре {0} секунди"
},
"future": {
"one": "за {0} секунд",
"few": "за {0} секунде",
"other": "за {0} секунди"
}
}
}

View File

@@ -0,0 +1,106 @@
{
"year": {
"previous": "Прошле године",
"current": "Ове године",
"next": "Следеће године",
"past": {
"one": "пре {0} годину",
"few": "пре {0} године",
"other": "пре {0} година"
},
"future": {
"one": "за {0} годину",
"few": "за {0} године",
"other": "за {0} година"
}
},
"quarter": {
"previous": "last quarter",
"current": "this quarter",
"next": "next quarter",
"past": "-{0} Q",
"future": "+{0} Q"
},
"month": {
"previous": "Прошлог месеца",
"current": "Овог месеца",
"next": "Следећег месеца",
"past": {
"one": "пре {0} месец",
"few": "пре {0} месеца",
"other": "пре {0} месеци"
},
"future": {
"one": "за {0} месец",
"few": "за {0} месеца",
"other": "за {0} месеци"
}
},
"week": {
"previous": "Прошле недеље",
"current": "Ове недеље",
"next": "Следеће недеље",
"past": {
"one": "пре {0} недељу",
"few": "пре {0} недеље",
"other": "пре {0} недеља"
},
"future": {
"one": "за {0} недељу",
"few": "за {0} недеље",
"other": "за {0} недеља"
}
},
"day": {
"previous": "јуче",
"previous-2": "прекјуче",
"current": "данас",
"next": "сутра",
"next-2": "прекосутра",
"past": {
"one": "пре {0} дан",
"other": "пре {0} дана"
},
"future": {
"one": "за {0} дан",
"other": "за {0} дана"
}
},
"hour": {
"current": "this hour",
"past": {
"one": "пре {0} сат",
"few": "пре {0} сата",
"other": "пре {0} сати"
},
"future": {
"one": "за {0} сат",
"few": "за {0} сата",
"other": "за {0} сати"
}
},
"minute": {
"current": "this minute",
"past": {
"one": "пре {0} минут",
"other": "пре {0} минута"
},
"future": {
"one": "за {0} минут",
"other": "за {0} минута"
}
},
"second": {
"current": "now",
"past": {
"one": "пре {0} секунд",
"few": "пре {0} секунде",
"other": "пре {0} секунди"
},
"future": {
"one": "за {0} секунд",
"few": "за {0} секунде",
"other": "за {0} секунди"
}
}
}

7
node_modules/relative-time-format/locale/bs/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'bs',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

114
node_modules/relative-time-format/locale/bs/long.json generated vendored Normal file
View File

@@ -0,0 +1,114 @@
{
"year": {
"previous": "prošle godine",
"current": "ove godine",
"next": "sljedeće godine",
"past": {
"one": "prije {0} godinu",
"few": "prije {0} godine",
"other": "prije {0} godina"
},
"future": {
"one": "za {0} godinu",
"few": "za {0} godine",
"other": "za {0} godina"
}
},
"quarter": {
"previous": "posljednji kvartal",
"current": "ovaj kvartal",
"next": "sljedeći kvartal",
"past": {
"one": "prije {0} kvartal",
"other": "prije {0} kvartala"
},
"future": {
"one": "za {0} kvartal",
"other": "za {0} kvartala"
}
},
"month": {
"previous": "prošli mjesec",
"current": "ovaj mjesec",
"next": "sljedeći mjesec",
"past": {
"one": "prije {0} mjesec",
"few": "prije {0} mjeseca",
"other": "prije {0} mjeseci"
},
"future": {
"one": "za {0} mjesec",
"few": "za {0} mjeseca",
"other": "za {0} mjeseci"
}
},
"week": {
"previous": "prošle sedmice",
"current": "ove sedmice",
"next": "sljedeće sedmice",
"past": {
"one": "prije {0} sedmicu",
"few": "prije {0} sedmice",
"other": "prije {0} sedmica"
},
"future": {
"one": "za {0} sedmicu",
"few": "za {0} sedmice",
"other": "za {0} sedmica"
}
},
"day": {
"previous": "jučer",
"previous-2": "prekjučer",
"current": "danas",
"next": "sutra",
"next-2": "prekosutra",
"past": {
"one": "prije {0} dan",
"other": "prije {0} dana"
},
"future": {
"one": "za {0} dan",
"other": "za {0} dana"
}
},
"hour": {
"current": "ovaj sat",
"past": {
"one": "prije {0} sat",
"few": "prije {0} sata",
"other": "prije {0} sati"
},
"future": {
"one": "za {0} sat",
"few": "za {0} sata",
"other": "za {0} sati"
}
},
"minute": {
"current": "ova minuta",
"past": {
"one": "prije {0} minutu",
"few": "prije {0} minute",
"other": "prije {0} minuta"
},
"future": {
"one": "za {0} minutu",
"few": "za {0} minute",
"other": "za {0} minuta"
}
},
"second": {
"current": "sada",
"past": {
"one": "prije {0} sekundu",
"few": "prije {0} sekunde",
"other": "prije {0} sekundi"
},
"future": {
"one": "za {0} sekundu",
"few": "za {0} sekunde",
"other": "za {0} sekundi"
}
}
}

View File

@@ -0,0 +1,62 @@
{
"year": {
"previous": "prošle godine",
"current": "ove godine",
"next": "sljedeće godine",
"past": "prije {0} g.",
"future": "za {0} g."
},
"quarter": {
"previous": "posljednji kvartal",
"current": "ovaj kvartal",
"next": "sljedeći kvartal",
"past": "prije {0} kv.",
"future": "za {0} kv."
},
"month": {
"previous": "prošli mjesec",
"current": "ovaj mjesec",
"next": "sljedeći mjesec",
"past": "prije {0} mj.",
"future": "za {0} mj."
},
"week": {
"previous": "prošle sedmice",
"current": "ove sedmice",
"next": "sljedeće sedmice",
"past": "prije {0} sed.",
"future": "za {0} sed."
},
"day": {
"previous": "jučer",
"previous-2": "prekjučer",
"current": "danas",
"next": "sutra",
"next-2": "prekosutra",
"past": "prije {0} d.",
"future": "za {0} d."
},
"hour": {
"current": "ovaj sat",
"past": {
"one": "prije {0} sat",
"few": "prije {0} sata",
"other": "prije {0} sati"
},
"future": {
"one": "za {0} sat",
"few": "za {0} sata",
"other": "za {0} sati"
}
},
"minute": {
"current": "ova minuta",
"past": "prije {0} min.",
"future": "za {0} min."
},
"second": {
"current": "sada",
"past": "prije {0} sek.",
"future": "za {0} sek."
}
}

View File

@@ -0,0 +1 @@
module.exports=function(e){var i=String(e).split("."),s=i[0],c=i[1]||"",l=!i[1],n=s.slice(-1),r=s.slice(-2),t=c.slice(-1),f=c.slice(-2);return l&&1==n&&11!=r||1==t&&11!=f?"one":l&&2<=n&&n<=4&&(r<12||14<r)||2<=t&&t<=4&&(f<12||14<f)?"few":"other"}

62
node_modules/relative-time-format/locale/bs/short.json generated vendored Normal file
View File

@@ -0,0 +1,62 @@
{
"year": {
"previous": "prošle godine",
"current": "ove godine",
"next": "sljedeće godine",
"past": "prije {0} god.",
"future": "za {0} god."
},
"quarter": {
"previous": "posljednji kvartal",
"current": "ovaj kvartal",
"next": "sljedeći kvartal",
"past": "prije {0} kv.",
"future": "za {0} kv."
},
"month": {
"previous": "prošli mjesec",
"current": "ovaj mjesec",
"next": "sljedeći mjesec",
"past": "prije {0} mj.",
"future": "za {0} mj."
},
"week": {
"previous": "prošle sedmice",
"current": "ove sedmice",
"next": "sljedeće sedmice",
"past": "prije {0} sed.",
"future": "za {0} sed."
},
"day": {
"previous": "jučer",
"previous-2": "prekjučer",
"current": "danas",
"next": "sutra",
"next-2": "prekosutra",
"past": "prije {0} d.",
"future": "za {0} d."
},
"hour": {
"current": "ovaj sat",
"past": {
"one": "prije {0} sat",
"few": "prije {0} sata",
"other": "prije {0} sati"
},
"future": {
"one": "za {0} sat",
"few": "za {0} sata",
"other": "za {0} sati"
}
},
"minute": {
"current": "ova minuta",
"past": "prije {0} min.",
"future": "za {0} min."
},
"second": {
"current": "sada",
"past": "prije {0} sek.",
"future": "za {0} sek."
}
}

7
node_modules/relative-time-format/locale/ca/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
module.exports = {
locale: 'ca',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json'),
quantify: require('./quantify')
}

102
node_modules/relative-time-format/locale/ca/long.json generated vendored Normal file
View File

@@ -0,0 +1,102 @@
{
"year": {
"previous": "lany passat",
"current": "enguany",
"next": "lany que ve",
"past": {
"one": "fa {0} any",
"other": "fa {0} anys"
},
"future": {
"one": "daquí a {0} any",
"other": "daquí a {0} anys"
}
},
"quarter": {
"previous": "el trimestre passat",
"current": "aquest trimestre",
"next": "el trimestre que ve",
"past": {
"one": "fa {0} trimestre",
"other": "fa {0} trimestres"
},
"future": {
"one": "daquí a {0} trimestre",
"other": "daquí a {0} trimestres"
}
},
"month": {
"previous": "el mes passat",
"current": "aquest mes",
"next": "el mes que ve",
"past": {
"one": "fa {0} mes",
"other": "fa {0} mesos"
},
"future": {
"one": "daquí a {0} mes",
"other": "daquí a {0} mesos"
}
},
"week": {
"previous": "la setmana passada",
"current": "aquesta setmana",
"next": "la setmana que ve",
"past": {
"one": "fa {0} setmana",
"other": "fa {0} setmanes"
},
"future": {
"one": "daquí a {0} setmana",
"other": "daquí a {0} setmanes"
}
},
"day": {
"previous": "ahir",
"previous-2": "abans-dahir",
"current": "avui",
"next": "demà",
"next-2": "demà passat",
"past": {
"one": "fa {0} dia",
"other": "fa {0} dies"
},
"future": {
"one": "daquí a {0} dia",
"other": "daquí a {0} dies"
}
},
"hour": {
"current": "aquesta hora",
"past": {
"one": "fa {0} hora",
"other": "fa {0} hores"
},
"future": {
"one": "daquí a {0} hora",
"other": "daquí a {0} hores"
}
},
"minute": {
"current": "aquest minut",
"past": {
"one": "fa {0} minut",
"other": "fa {0} minuts"
},
"future": {
"one": "daquí a {0} minut",
"other": "daquí a {0} minuts"
}
},
"second": {
"current": "ara",
"past": {
"one": "fa {0} segon",
"other": "fa {0} segons"
},
"future": {
"one": "daquí a {0} segon",
"other": "daquí a {0} segons"
}
}
}

View File

@@ -0,0 +1,72 @@
{
"year": {
"previous": "lany passat",
"current": "enguany",
"next": "lany que ve",
"past": {
"one": "fa {0} any",
"other": "fa {0} anys"
},
"future": {
"one": "daquí a {0} any",
"other": "daquí a {0} anys"
}
},
"quarter": {
"previous": "trim. passat",
"current": "aquest trim.",
"next": "trim. vinent",
"past": "fa {0} trim.",
"future": "daquí a {0} trim."
},
"month": {
"previous": "mes passat",
"current": "aquest mes",
"next": "mes vinent",
"past": {
"one": "fa {0} mes",
"other": "fa {0} mesos"
},
"future": {
"one": "daquí a {0} mes",
"other": "daquí a {0} mesos"
}
},
"week": {
"previous": "setm. passada",
"current": "aquesta setm.",
"next": "setm. vinent",
"past": "fa {0} setm.",
"future": "daquí a {0} setm."
},
"day": {
"previous": "ahir",
"previous-2": "abans-dahir",
"current": "avui",
"next": "demà",
"next-2": "demà passat",
"past": {
"one": "fa {0} dia",
"other": "fa {0} dies"
},
"future": {
"one": "daquí a {0} dia",
"other": "daquí a {0} dies"
}
},
"hour": {
"current": "aquesta hora",
"past": "fa {0} h",
"future": "daquí a {0} h"
},
"minute": {
"current": "aquest minut",
"past": "fa {0} min",
"future": "daquí a {0} min"
},
"second": {
"current": "ara",
"past": "fa {0} s",
"future": "daquí a {0} s"
}
}

View File

@@ -0,0 +1 @@
module.exports=function(n){var r=!String(n).split(".")[1];return 1==n&&r?"one":"other"}

72
node_modules/relative-time-format/locale/ca/short.json generated vendored Normal file
View File

@@ -0,0 +1,72 @@
{
"year": {
"previous": "lany passat",
"current": "enguany",
"next": "lany que ve",
"past": {
"one": "fa {0} any",
"other": "fa {0} anys"
},
"future": {
"one": "daquí a {0} any",
"other": "daquí a {0} anys"
}
},
"quarter": {
"previous": "el trim. passat",
"current": "aquest trim.",
"next": "el trim. que ve",
"past": "fa {0} trim.",
"future": "daquí a {0} trim."
},
"month": {
"previous": "el mes passat",
"current": "aquest mes",
"next": "el mes que ve",
"past": {
"one": "fa {0} mes",
"other": "fa {0} mesos"
},
"future": {
"one": "daquí a {0} mes",
"other": "daquí a {0} mesos"
}
},
"week": {
"previous": "la setm. passada",
"current": "aquesta setm.",
"next": "la setm. que ve",
"past": "fa {0} setm.",
"future": "daquí a {0} setm."
},
"day": {
"previous": "ahir",
"previous-2": "abans-dahir",
"current": "avui",
"next": "demà",
"next-2": "demà passat",
"past": {
"one": "fa {0} dia",
"other": "fa {0} dies"
},
"future": {
"one": "daquí a {0} dia",
"other": "daquí a {0} dies"
}
},
"hour": {
"current": "aquesta hora",
"past": "fa {0} h",
"future": "daquí a {0} h"
},
"minute": {
"current": "aquest minut",
"past": "fa {0} min",
"future": "daquí a {0} min"
},
"second": {
"current": "ara",
"past": "fa {0} s",
"future": "daquí a {0} s"
}
}

View File

@@ -0,0 +1,6 @@
module.exports = {
locale: 'ccp',
long: require('./long.json'),
short: require('./short.json'),
narrow: require('./narrow.json')
}

57
node_modules/relative-time-format/locale/ccp/long.json generated vendored Normal file
View File

@@ -0,0 +1,57 @@
{
"year": {
"previous": "𑄉𑄬𑄣𑄳𑄠𑄬 𑄝𑄧𑄏𑄧𑄢𑄴",
"current": "𑄃𑄬 𑄝𑄧𑄏𑄧𑄢𑄴",
"next": "𑄎𑄬𑄢𑄧 𑄝𑄧𑄏𑄧𑄢𑄴",
"past": "{0} 𑄝𑄧𑄏𑄧𑄢𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄝𑄧𑄏𑄧𑄢𑄬"
},
"quarter": {
"previous": "𑄉𑄬𑄣𑄳𑄠𑄬 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴",
"current": "𑄃𑄳𑄆𑄬 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴",
"next": "𑄛𑄧𑄢𑄬 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴",
"past": "{0} 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴 𑄃𑄉𑄬",
"future": {
"one": "{0} 𑄖𑄨𑄚𑄴𑄟𑄏𑄬",
"other": "{0} 𑄖𑄨𑄚𑄟𑄏𑄬"
}
},
"month": {
"previous": "𑄉𑄬𑄣𑄧𑄘𑄬 𑄟𑄏𑄴",
"current": "𑄃𑄳𑄆𑄬 𑄟𑄏𑄴",
"next": "𑄛𑄧𑄢𑄬 𑄟𑄏𑄴",
"past": "{0} 𑄟𑄏𑄧 𑄃𑄉𑄬",
"future": "{0} 𑄟𑄏𑄬"
},
"week": {
"previous": "𑄉𑄬𑄣𑄧𑄘𑄬 𑄥𑄛𑄴𑄖",
"current": "𑄃𑄳𑄆𑄬 𑄥𑄛𑄴𑄖",
"next": "𑄛𑄧𑄢𑄬 𑄥𑄛𑄴𑄖",
"past": "{0} 𑄥𑄛𑄴𑄖 𑄃𑄉𑄬",
"future": "{0} 𑄥𑄛𑄴𑄖𑄠𑄴"
},
"day": {
"previous": "𑄉𑄬𑄣𑄴𑄣𑄳𑄠𑄇𑄬𑄣𑄳𑄠𑄬",
"previous-2": "𑄉𑄬𑄣𑄧𑄘𑄬 𑄛𑄧𑄢𑄴𑄥𑄪",
"current": "𑄃𑄬𑄌𑄴𑄥𑄳𑄠",
"next": "𑄃𑄬𑄎𑄬𑄖𑄴𑄖𑄳𑄠𑄇𑄬𑄣𑄳𑄠𑄬",
"next-2": "𑄃𑄬𑄎𑄬𑄖𑄴𑄖𑄳𑄠𑄬 𑄛𑄧𑄢𑄴𑄥𑄪",
"past": "{0} 𑄘𑄨𑄚𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄘𑄨𑄚𑄮 𑄟𑄧𑄖𑄴𑄙𑄳𑄠"
},
"hour": {
"current": "𑄃𑄳𑄆𑄬 𑄊𑄮𑄚𑄴𑄓𑄠𑄴",
"past": "{0} 𑄊𑄮𑄚𑄴𑄓 𑄃𑄉𑄬",
"future": "{0} 𑄊𑄮𑄚𑄴𑄓𑄠𑄴"
},
"minute": {
"current": "𑄃𑄳𑄆𑄬 𑄟𑄨𑄚𑄨𑄖𑄴",
"past": "{0} 𑄟𑄨𑄚𑄨𑄖𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄟𑄨𑄚𑄨𑄘𑄬"
},
"second": {
"current": "𑄃𑄨𑄇𑄴𑄅𑄚𑄪",
"past": "{0} 𑄥𑄬𑄉𑄬𑄚𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄥𑄬𑄉𑄬𑄚𑄴𑄘𑄬"
}
}

View File

@@ -0,0 +1,60 @@
{
"year": {
"previous": "𑄉𑄬𑄣𑄳𑄠𑄬 𑄝𑄧𑄏𑄧𑄢𑄴",
"current": "𑄃𑄳𑄆𑄬 𑄝𑄧𑄏𑄧𑄢𑄴",
"next": "𑄛𑄧𑄢𑄬 𑄝𑄧𑄏𑄧𑄢𑄴",
"past": "{0} 𑄝𑄧𑄏𑄧𑄢𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄝𑄧𑄏𑄧𑄢𑄬"
},
"quarter": {
"previous": "𑄉𑄬𑄣𑄳𑄠𑄬 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴",
"current": "𑄃𑄳𑄆𑄬 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴",
"next": "𑄛𑄧𑄢𑄬 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴",
"past": {
"one": "{0} 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴 𑄃𑄉𑄬",
"other": "{0} 𑄖𑄨𑄚𑄴𑄟𑄏𑄧𑄢𑄴 𑄃𑄬𑄉"
},
"future": "{0} 𑄖𑄨𑄚𑄴𑄟𑄏𑄬"
},
"month": {
"previous": "𑄉𑄬𑄣𑄧𑄘𑄬 𑄟𑄏𑄴",
"current": "𑄃𑄳𑄆𑄬 𑄟𑄏𑄴",
"next": "𑄛𑄧𑄢𑄬 𑄟𑄏𑄴",
"past": "{0} 𑄟𑄏𑄧 𑄃𑄉𑄬",
"future": "{0} 𑄟𑄏𑄬"
},
"week": {
"previous": "𑄉𑄬𑄣𑄧𑄘𑄬 𑄥𑄛𑄴𑄖",
"current": "𑄃𑄳𑄆𑄬 𑄥𑄛𑄴𑄖",
"next": "𑄛𑄧𑄢𑄬 𑄥𑄛𑄴𑄖",
"past": "{0} 𑄥𑄛𑄴𑄖𑄢𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄥𑄛𑄴𑄖𑄠𑄴"
},
"day": {
"previous": "𑄉𑄬𑄣𑄴𑄣𑄳𑄠𑄇𑄬𑄣𑄴𑄣𑄳𑄠𑄬",
"previous-2": "𑄉𑄬𑄣𑄧𑄘𑄬 𑄛𑄧𑄢𑄴𑄥𑄪",
"current": "𑄃𑄬𑄌𑄴𑄥𑄳𑄠𑄬",
"next": "𑄃𑄬𑄎𑄬𑄖𑄴𑄖𑄳𑄠𑄇𑄬𑄣𑄴𑄣𑄳𑄠𑄬",
"next-2": "𑄃𑄬𑄎𑄬𑄖𑄴𑄖𑄳𑄠𑄇𑄬𑄣𑄴𑄣𑄳𑄠𑄬 𑄛𑄧𑄢𑄴𑄥𑄪",
"past": "{0} 𑄘𑄨𑄚𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄘𑄨𑄚𑄮 𑄟𑄧𑄖𑄴𑄙𑄳𑄠"
},
"hour": {
"current": "𑄃𑄳𑄆𑄬 𑄊𑄮𑄚𑄴𑄓𑄠𑄴",
"past": "{0} 𑄊𑄮𑄚𑄴𑄓 𑄃𑄉𑄬",
"future": "{0} 𑄊𑄮𑄚𑄴𑄓𑄠𑄴"
},
"minute": {
"current": "𑄃𑄳𑄆𑄬 𑄟𑄨𑄚𑄨𑄖𑄴",
"past": "{0} 𑄟𑄨𑄚𑄨𑄖𑄴 𑄃𑄉𑄬",
"future": "{0} 𑄟𑄨𑄚𑄨𑄘𑄬"
},
"second": {
"current": "𑄃𑄨𑄇𑄴𑄅𑄚𑄪",
"past": "{0} 𑄥𑄬𑄉𑄬𑄚𑄴 𑄃𑄉𑄬",
"future": {
"one": "{0} 𑄥𑄬𑄉𑄬𑄚𑄴",
"other": "{0} 𑄥𑄬𑄉𑄬𑄚𑄴𑄘𑄬"
}
}
}

Some files were not shown because too many files have changed in this diff Show More