add all api to sort by month

This commit is contained in:
Michael Simard
2020-06-14 21:46:44 -05:00
parent 6b9e9a4c35
commit 842abb0895
162 changed files with 34480 additions and 71 deletions

View File

@@ -6,74 +6,246 @@ import Vapor
struct StatsController: RouteCollection {
func boot(routes: RoutesBuilder) throws {
let statsRoute = routes.grouped("cod-tracker","api", "stats")
statsRoute.get("allMatches", use: index)
statsRoute.get("totalWins", use: totalWins)
statsRoute.get("totalLosses", use: totalLosses)
statsRoute.get("overall", use: overall)
//beaconsRoute.get("overallStats", use: index)
//beaconsRoute.post("", use: create)
// beaconsRoute.delete(":beaconID", use: delete)
func boot(routes: RoutesBuilder) throws {
let statsRoute = routes.grouped("cod-tracker","api", "stats")
statsRoute.get("allMatches", use: index)
statsRoute.get("totalWins", use: totalWins)
statsRoute.get("totalLosses", use: totalLosses)
statsRoute.get("overall", use: overall)
statsRoute.get("march", use: getMarchStats)
statsRoute.get("all", use: all)
//beaconsRoute.get("overallStats", use: index)
//beaconsRoute.post("", use: create)
// beaconsRoute.delete(":beaconID", use: delete)
}
func index(req: Request) throws -> EventLoopFuture<[Match]> {
return Match.query(on: req.db).all()
}
func totalWins(req: Request) throws -> EventLoopFuture<Int> {
return Match.query(on: req.db)
.filter(\.$win == true)
.count()
.filter(\.$win == true)
.count()
}
func totalLosses(req: Request) throws -> EventLoopFuture<Int> {
return Match.query(on: req.db)
.filter(\.$win == false)
.count()
}
return Match.query(on: req.db)
.filter(\.$win == false)
.count()
}
func getMarchStats(req:Request) throws -> EventLoopFuture<Stats> {
return getStatsByMonth(year: 2020, month: 03, req: req)
}
func overall(req: Request) throws -> EventLoopFuture<Stats> {
let lossCount = Match.query(on: req.db)
.filter(\.$win == false)
.count()
let winCount = Match.query(on: req.db)
.filter(\.$win == true )
.count()
func getStatsByMonth(year:Int, month:Int, req: Request) -> EventLoopFuture<Stats>{
let winCount = Match.query(on: req.db)
.filter(\.$date >= getStartOfMonth(month: month, year: year))
.filter(\.$date <= getEndOfMonth(month: month, year: year))
.filter(\.$win == true )
.count()
let lossCount = Match.query(on: req.db)
.filter(\.$date >= getStartOfMonth(month: month, year: year))
.filter(\.$date <= getEndOfMonth(month: month, year: year))
.filter(\.$win == false )
.count()
let combined = winCount.and(lossCount)
return combined.map { (winCount, lossCount) -> (Stats) in
let ratio:Double = (Double(winCount) / Double(lossCount)).truncate(places: 2)
return Stats.init(winLoss: String(ratio), totalWins: winCount, totalLosses: lossCount)
}
}
func statsForRecent(numberGames:Int, req:Request) -> EventLoopFuture<Stats> {
let winCount = Match.query(on: req.db)
.sort(\.$date)
.range(lower: 0, upper: numberGames)
.filter(\.$win == true )
.count()
let lossCount = Match.query(on: req.db)
.sort(\.$date)
.range(lower: 0, upper: numberGames)
.filter(\.$win == false )
.count()
let combined = winCount.and(lossCount)
return combined.map { (winCount, lossCount) -> (Stats) in
let ratio:Double = (Double(winCount) / Double(lossCount)).truncate(places: 2)
return Stats.init(winLoss: String(ratio), totalWins: winCount, totalLosses: lossCount)
}
}
private func getStartOfMonth(month:Int, year:Int) -> Date {
return Date(year: year, month: month, day: 0, hour: 0, minute: 0, second: 0, nanosecond: 0, region: .current)
}
private func getEndOfMonth(month:Int, year:Int) -> Date {
return Date(year: year, month: month + 1, day: -1, hour: 0, minute: 0, second: 0, nanosecond: 0, region: .ISO)
}
// private func getAccumualtiveWLByDay(req:Request) {
//
// let winLossRatio:[String:Double] = [:]
//
// let matches = Match.query(on:req.db)
// .sort(\.$date)
// .all()
//
// var ratio = 0.0
// var cumulativeWLRatio = req.eventLoop.future(ratio)
//
// matches.map { (matches) -> [String:Double] in
//
// let winLossRatio2:[String:Double] = [:]
//
// matches.reduce(Dictionary<String:Double>()) { (partialRatio, match) -> [String:Double] in
//
// }
// }
//
// }
//
// }
func all(req: Request) throws -> EventLoopFuture<AllStats> {
struct MonthYear {
let month:Int
let year:Int
}
var date = Date(year: 2020, month: 03, day: 01, hour: 0, minute: 0)
var previousMonths:[MonthYear] = []
repeat {
//let stats = getStatsByMonth(year: date.year, month: date.month, req: req) //returns eventloopfuture<Stats>
previousMonths.append(MonthYear(month: date.month, year: date.year))
date = Calendar.current.date(byAdding: .month, value: 1, to: date)!.date
} while (date.month != (Date().month + 1) || date.year != Date().year)
func getMonthStats (_ remaining: ArraySlice<MonthYear>, allMonthlyStats: inout [MonthStats], eventLoop: EventLoop) -> EventLoopFuture<[MonthStats]> {
var remaining = remaining
if let first = remaining.popLast() {
return Stats.init(winLoss: String(ratio), totalWins: winCount, totalLosses: lossCount)
return getStatsByMonth(year: first.year, month: first.month, req: req).flatMap { [remaining, allMonthlyStats] (stats) -> EventLoopFuture<[MonthStats]> in
print ("remaining \(remaining)")
var allMonthlyStats = allMonthlyStats
allMonthlyStats.append(MonthStats(month: first.month, year: first.year, stats:stats ))
return getMonthStats(remaining, allMonthlyStats:&allMonthlyStats, eventLoop: eventLoop)
}
} else {
print ("rett")
return req.eventLoop.makeSucceededFuture(allMonthlyStats)
}
}
var stats:[MonthStats] = []
let monthstats = getMonthStats(previousMonths[0..<previousMonths.count], allMonthlyStats:&stats, eventLoop: req.eventLoop)
return try overall(req: req).and(monthstats).map { (overall, monthlyStats) -> AllStats in
return AllStats.init(overall: overall, byMonth: monthlyStats)
}
// return getMonthStats(previousMonths, eventLoop: req.eventLoop)
// var date = Date(year: 2020, month: 03, day: 01, hour: 0, minute: 0)
// var monthlyStats = [String:Stats]()
// repeat {
// let stats = getStatsByMonth(year: date.year, month: date.month, req: req) //returns eventloopfuture<Stats>
// monthlyStats["\(date.month) \(date.year)"] = stats.map({ (newStats) -> (Stats) in
// return Stats(winLoss: newStats.winLossRatio, totalWins: newStats.totalWins, totalLosses: newStats.totalLosses)
// })
// date = Calendar.current.date(byAdding: .month, value: 1, to: date)!.date
// } while (date.month != Date().month || date.year != Date().year)
////
//
//
//
//
//
// let combined = try overall(req: req).and(req.eventLoop.future(monthlyStats))
// return combined.map { (stats, dict) -> (AllStats) in
// return AllStats(overall: stats, byMonth: monthlyStats )
//
// }
// let combined = try overall(req: req).and(
//
//
//
//
//
// )
}
func overall(req: Request) throws -> EventLoopFuture<Stats> {
let lossCount = Match.query(on: req.db)
.filter(\.$win == false)
.count()
let winCount = Match.query(on: req.db)
.filter(\.$win == true )
.count()
let combined = winCount.and(lossCount)
return combined.map { (winCount, lossCount) -> (Stats) in
let ratio:Double = (Double(winCount) / Double(lossCount)).truncate(places: 2)
return Stats.init(winLoss: String(ratio), totalWins: winCount, totalLosses: lossCount)
}
}
//
//
// func create(req: Request) throws -> EventLoopFuture<Beacon> {
// let newBeacon = try req.content.decode(Beacon.Create.self)
// let beacon = Beacon(id: UUID(), ownerId: nil)
// return beacon.save(on: req.db).map { beacon }
// }
//
// func delete(req: Request) throws -> EventLoopFuture<HTTPStatus> {
// return Beacon.find(req.parameters.get("beaconID"), on: req.db)
// .unwrap(or: Abort(.notFound))
// .flatMap { $0.delete(on: req.db) }
// .transform(to: .ok)
// }
// func create(req: Request) throws -> EventLoopFuture<Beacon> {
// let newBeacon = try req.content.decode(Beacon.Create.self)
// let beacon = Beacon(id: UUID(), ownerId: nil)
// return beacon.save(on: req.db).map { beacon }
// }
//
// func delete(req: Request) throws -> EventLoopFuture<HTTPStatus> {
// return Beacon.find(req.parameters.get("beaconID"), on: req.db)
// .unwrap(or: Abort(.notFound))
// .flatMap { $0.delete(on: req.db) }
// .transform(to: .ok)
// }
}

View File

@@ -0,0 +1,190 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public extension Date {
// MARK: - Comparing Close
/// Decides whether a Date is "close by" another one passed in parameter,
/// where "Being close" is measured using a precision argument
/// which is initialized a 300 seconds, or 5 minutes.
///
/// - Parameters:
/// - refDate: reference date compare against to.
/// - precision: The precision of the comparison (default is 5 minutes, or 300 seconds).
/// - Returns: A boolean; true if close by, false otherwise.
func compareCloseTo(_ refDate: Date, precision: TimeInterval = 300) -> Bool {
return (abs(timeIntervalSince(refDate)) < precision)
}
// MARK: - Extendend Compare
/// Compare the date with the rule specified in the `compareType` parameter.
///
/// - Parameter compareType: comparison type.
/// - Returns: `true` if comparison succeded, `false` otherwise
func compare(_ compareType: DateComparisonType) -> Bool {
return inDefaultRegion().compare(compareType)
}
/// Returns a ComparisonResult value that indicates the ordering of two given dates based on
/// their components down to a given unit granularity.
///
/// - parameter date: date to compare.
/// - parameter granularity: The smallest unit that must, along with all larger units be less for the given dates
/// - returns: `ComparisonResult`
func compare(toDate refDate: Date, granularity: Calendar.Component) -> ComparisonResult {
return inDefaultRegion().compare(toDate: refDate.inDefaultRegion(), granularity: granularity)
}
/// Compares whether the receiver is before/before equal `date` based on their components down to a given unit granularity.
///
/// - Parameters:
/// - refDate: reference date
/// - orEqual: `true` to also check for equality
/// - granularity: smallest unit that must, along with all larger units, be less for the given dates
/// - Returns: Boolean
func isBeforeDate(_ refDate: Date, orEqual: Bool = false, granularity: Calendar.Component) -> Bool {
return inDefaultRegion().isBeforeDate(refDate.inDefaultRegion(), orEqual: orEqual, granularity: granularity)
}
/// Compares whether the receiver is after `date` based on their components down to a given unit granularity.
///
/// - Parameters:
/// - refDate: reference date
/// - orEqual: `true` to also check for equality
/// - granularity: Smallest unit that must, along with all larger units, be greater for the given dates.
/// - Returns: Boolean
func isAfterDate(_ refDate: Date, orEqual: Bool = false, granularity: Calendar.Component) -> Bool {
return inDefaultRegion().isAfterDate(refDate.inDefaultRegion(), orEqual: orEqual, granularity: granularity)
}
/// Return true if receiver date is contained in the range specified by two dates.
///
/// - Parameters:
/// - startDate: range upper bound date
/// - endDate: range lower bound date
/// - orEqual: `true` to also check for equality on date and date2
/// - granularity: smallest unit that must, along with all larger units, be greater for the given dates.
/// - Returns: Boolean
func isInRange(date startDate: Date, and endDate: Date, orEqual: Bool = false, granularity: Calendar.Component = .nanosecond) -> Bool {
return self.inDefaultRegion().isInRange(date: startDate.inDefaultRegion(), and: endDate.inDefaultRegion(), orEqual: orEqual, granularity: granularity)
}
/// Compares equality of two given dates based on their components down to a given unit
/// granularity.
///
/// - parameter date: date to compare
/// - parameter granularity: The smallest unit that must, along with all larger units, be equal for the given
/// dates to be considered the same.
///
/// - returns: `true` if the dates are the same down to the given granularity, otherwise `false`
func isInside(date: Date, granularity: Calendar.Component) -> Bool {
return (compare(toDate: date, granularity: granularity) == .orderedSame)
}
// MARK: - Date Earlier/Later
/// Return the earlier of two dates, between self and a given date.
///
/// - Parameter date: The date to compare to self
/// - Returns: The date that is earlier
func earlierDate(_ date: Date) -> Date {
return timeIntervalSince(date) <= 0 ? self : date
}
/// Return the later of two dates, between self and a given date.
///
/// - Parameter date: The date to compare to self
/// - Returns: The date that is later
func laterDate(_ date: Date) -> Date {
return timeIntervalSince(date) >= 0 ? self : date
}
}
extension Date {
/// Returns the difference in the calendar component given (like day, month or year)
/// with respect to the other date as a positive integer
public func difference(in component: Calendar.Component, from other: Date) -> Int? {
let (max, min) = orderDate(with: other)
let result = calendar.dateComponents([component], from: min, to: max)
return getValue(of: component, from: result)
}
/// Returns the differences in the calendar components given (like day, month and year)
/// with respect to the other date as dictionary with the calendar component as the key
/// and the diffrence as a positive integer as the value
public func differences(in components: Set<Calendar.Component>, from other: Date) -> [Calendar.Component: Int] {
let (max, min) = orderDate(with: other)
let differenceInDates = calendar.dateComponents(components, from: min, to: max)
var result = [Calendar.Component: Int]()
for component in components {
if let value = getValue(of: component, from: differenceInDates) {
result[component] = value
}
}
return result
}
private func getValue(of component: Calendar.Component, from dateComponents: DateComponents) -> Int? {
switch component {
case .era:
return dateComponents.era
case .year:
return dateComponents.year
case .month:
return dateComponents.month
case .day:
return dateComponents.day
case .hour:
return dateComponents.hour
case .minute:
return dateComponents.minute
case .second:
return dateComponents.second
case .weekday:
return dateComponents.weekday
case .weekdayOrdinal:
return dateComponents.weekdayOrdinal
case .quarter:
return dateComponents.quarter
case .weekOfMonth:
return dateComponents.weekOfMonth
case .weekOfYear:
return dateComponents.weekOfYear
case .yearForWeekOfYear:
return dateComponents.yearForWeekOfYear
case .nanosecond:
return dateComponents.nanosecond
case .calendar, .timeZone:
return nil
@unknown default:
assert(false, "unknown date component")
}
return nil
}
private func orderDate(with other: Date) -> (Date, Date) {
let first = self.timeIntervalSince1970
let second = other.timeIntervalSince1970
if first >= second {
return (self, other)
}
return (other, self)
}
}

View File

@@ -0,0 +1,49 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public extension Date {
/// Indicates whether the month is a leap month.
var isLeapMonth: Bool {
return inDefaultRegion().isLeapMonth
}
/// Indicates whether the year is a leap year.
var isLeapYear: Bool {
return inDefaultRegion().isLeapYear
}
/// Julian day is the continuous count of days since the beginning of
/// the Julian Period used primarily by astronomers.
var julianDay: Double {
return inDefaultRegion().julianDay
}
/// The Modified Julian Date (MJD) was introduced by the Smithsonian Astrophysical Observatory
/// in 1957 to record the orbit of Sputnik via an IBM 704 (36-bit machine)
/// and using only 18 bits until August 7, 2576.
var modifiedJulianDay: Double {
return inDefaultRegion().modifiedJulianDay
}
/// Return elapsed time expressed in given components since the current receiver and a reference date.
///
/// - Parameters:
/// - refDate: reference date (`nil` to use current date in the same region of the receiver)
/// - component: time unit to extract.
/// - Returns: value
func getInterval(toDate: Date?, component: Calendar.Component) -> Int64 {
return inDefaultRegion().getInterval(toDate: toDate?.inDefaultRegion(), component: component)
}
}

View File

@@ -0,0 +1,250 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public extension Date {
/// Return the oldest date in given list.
///
/// - Parameter list: list of dates
/// - Returns: a tuple with the index of the oldest date and its instance.
static func oldestIn(list: [Date]) -> Date? {
guard list.count > 0 else { return nil }
guard list.count > 1 else { return list.first! }
return list.min(by: {
return $0 < $1
})
}
/// Return the newest date in given list.
///
/// - Parameter list: list of dates
/// - Returns: a tuple with the index of the oldest date and its instance.
static func newestIn(list: [Date]) -> Date? {
guard list.count > 0 else { return nil }
guard list.count > 1 else { return list.first! }
return list.max(by: {
return $0 < $1
})
}
/// Enumerate dates between two intervals by adding specified time components defined by a function and return an array of dates.
/// `startDate` interval will be the first item of the resulting array.
/// The last item of the array is evaluated automatically and maybe not equal to `endDate`.
///
/// - Parameters:
/// - start: starting date
/// - endDate: ending date
/// - increment: increment function. It get the last generated date and require a valida `DateComponents` instance which define the increment
/// - Returns: array of dates
static func enumerateDates(from startDate: Date, to endDate: Date, increment: ((Date) -> (DateComponents))) -> [Date] {
var dates: [Date] = []
var currentDate = startDate
while currentDate <= endDate {
dates.append(currentDate)
currentDate = (currentDate + increment(currentDate))
}
return dates
}
/// Enumerate dates between two intervals by adding specified time components and return an array of dates.
/// `startDate` interval will be the first item of the resulting array.
/// The last item of the array is evaluated automatically and maybe not equal to `endDate`.
///
/// - Parameters:
/// - start: starting date
/// - endDate: ending date
/// - increment: components to add
/// - Returns: array of dates
static func enumerateDates(from startDate: Date, to endDate: Date, increment: DateComponents) -> [Date] {
return Date.enumerateDates(from: startDate, to: endDate, increment: { _ in
return increment
})
}
/// Round a given date time to the passed style (off|up|down).
///
/// - Parameter style: rounding mode.
/// - Returns: rounded date
func dateRoundedAt(at style: RoundDateMode) -> Date {
return inDefaultRegion().dateRoundedAt(style).date
}
/// Returns a new DateInRegion that is initialized at the start of a specified unit of time.
///
/// - Parameter unit: time unit value.
/// - Returns: instance at the beginning of the time unit; `self` if fails.
func dateAtStartOf(_ unit: Calendar.Component) -> Date {
return inDefaultRegion().dateAtStartOf(unit).date
}
/// Return a new DateInRegion that is initialized at the start of the specified components
/// executed in order.
///
/// - Parameter units: sequence of transformations as time unit components
/// - Returns: new date at the beginning of the passed components, intermediate results if fails.
func dateAtStartOf(_ units: [Calendar.Component]) -> Date {
return units.reduce(self) { (currentDate, currentUnit) -> Date in
return currentDate.dateAtStartOf(currentUnit)
}
}
/// Returns a new Moment that is initialized at the end of a specified unit of time.
///
/// - parameter unit: A TimeUnit value.
///
/// - returns: A new Moment instance.
func dateAtEndOf(_ unit: Calendar.Component) -> Date {
return inDefaultRegion().dateAtEndOf(unit).date
}
/// Return a new DateInRegion that is initialized at the end of the specified components
/// executed in order.
///
/// - Parameter units: sequence of transformations as time unit components
/// - Returns: new date at the end of the passed components, intermediate results if fails.
func dateAtEndOf(_ units: [Calendar.Component]) -> Date {
return units.reduce(self) { (currentDate, currentUnit) -> Date in
return currentDate.dateAtEndOf(currentUnit)
}
}
/// Create a new date by altering specified components of the receiver.
///
/// - Parameter components: components to alter with their new values.
/// - Returns: new altered `DateInRegion` instance
func dateBySet(_ components: [Calendar.Component: Int]) -> Date? {
return DateInRegion(self, region: SwiftDate.defaultRegion).dateBySet(components)?.date
}
/// Create a new date by altering specified time components.
///
/// - Parameters:
/// - hour: hour to set (`nil` to leave it unaltered)
/// - min: min to set (`nil` to leave it unaltered)
/// - secs: sec to set (`nil` to leave it unaltered)
/// - ms: milliseconds to set (`nil` to leave it unaltered)
/// - options: options for calculation
/// - Returns: new altered `DateInRegion` instance
func dateBySet(hour: Int?, min: Int?, secs: Int?, ms: Int? = nil, options: TimeCalculationOptions = TimeCalculationOptions()) -> Date? {
let srcDate = DateInRegion(self, region: SwiftDate.defaultRegion)
return srcDate.dateBySet(hour: hour, min: min, secs: secs, ms: ms, options: options)?.date
}
/// Creates a new instance by truncating the components
///
/// - Parameter components: components to truncate.
/// - Returns: new date with truncated components.
func dateTruncated(_ components: [Calendar.Component]) -> Date? {
return DateInRegion(self, region: SwiftDate.defaultRegion).dateTruncated(at: components)?.date
}
/// Creates a new instance by truncating the components starting from given components down the granurality.
///
/// - Parameter component: The component to be truncated from.
/// - Returns: new date with truncated components.
func dateTruncated(from component: Calendar.Component) -> Date? {
return DateInRegion(self, region: SwiftDate.defaultRegion).dateTruncated(from: component)?.date
}
/// Offset a date by n calendar components.
/// Note: This operation can be functionally chained.
///
/// - Parameters:
/// - count: value of the offset.
/// - component: component to offset.
/// - Returns: new altered date.
func dateByAdding(_ count: Int, _ component: Calendar.Component) -> DateInRegion {
return DateInRegion(self, region: SwiftDate.defaultRegion).dateByAdding(count, component)
}
/// Return related date starting from the receiver attributes.
///
/// - Parameter type: related date to obtain.
/// - Returns: instance of the related date.
func dateAt(_ type: DateRelatedType) -> Date {
return inDefaultRegion().dateAt(type).date
}
/// Create a new date at now and extract the related date using passed rule type.
///
/// - Parameter type: related date to obtain.
/// - Returns: instance of the related date.
static func nowAt(_ type: DateRelatedType) -> Date {
return Date().dateAt(type)
}
/// Return the dates for a specific weekday inside given month of specified year.
/// Ie. get me all the saturdays of Feb 2018.
/// NOTE: Values are returned in order.
///
/// - Parameters:
/// - weekday: weekday target.
/// - month: month target.
/// - year: year target.
/// - region: region target, omit to use `SwiftDate.defaultRegion`
/// - Returns: Ordered list of the dates for given weekday into given month.
static func datesForWeekday(_ weekday: WeekDay, inMonth month: Int, ofYear year: Int,
region: Region = SwiftDate.defaultRegion) -> [Date] {
let fromDate = DateInRegion(Date(year: year, month: month, day: 1, hour: 0, minute: 0), region: region)
let toDate = fromDate.dateAt(.endOfMonth)
return DateInRegion.datesForWeekday(weekday, from: fromDate, to: toDate, region: region).map { $0.date }
}
/// Return the dates for a specific weekday inside a specified date range.
/// NOTE: Values are returned in order.
///
/// - Parameters:
/// - weekday: weekday target.
/// - startDate: from date of the range.
/// - endDate: to date of the range.
/// - region: region target, omit to use `SwiftDate.defaultRegion`
/// - Returns: Ordered list of the dates for given weekday in passed range.
static func datesForWeekday(_ weekday: WeekDay, from startDate: Date, to endDate: Date,
region: Region = SwiftDate.defaultRegion) -> [Date] {
let fromDate = DateInRegion(startDate, region: region)
let toDate = DateInRegion(endDate, region: region)
return DateInRegion.datesForWeekday(weekday, from: fromDate, to: toDate, region: region).map { $0.date }
}
/// Returns the date at the given week number and week day preserving smaller components (hour, minute, seconds)
///
/// For example: to get the third friday of next month
/// let today = DateInRegion()
/// let result = today.dateAt(weekdayOrdinal: 3, weekday: .friday, monthNumber: today.month + 1)
///
/// - Parameters:
/// - weekdayOrdinal: the week number (by set position in a recurrence rule)
/// - weekday: WeekDay
/// - monthNumber: a number from 1 to 12 representing the month, optional parameter
/// - yearNumber: a number representing the year, optional parameter
/// - Returns: new date created with the given parameters
func dateAt(weekdayOrdinal: Int, weekday: WeekDay, monthNumber: Int? = nil,
yearNumber: Int? = nil) -> Date {
let date = DateInRegion(self, region: region)
return date.dateAt(weekdayOrdinal: weekdayOrdinal, weekday: weekday, monthNumber: monthNumber, yearNumber: yearNumber).date
}
/// Returns the next weekday preserving smaller components (hour, minute, seconds)
///
/// - Parameters:
/// - weekday: weekday to get.
/// - region: region target, omit to use `SwiftDate.defaultRegion`
/// - Returns: `Date`
func nextWeekday(_ weekday: WeekDay, region: Region = SwiftDate.defaultRegion) -> Date {
let date = DateInRegion(self, region: region)
return date.nextWeekday(weekday).date
}
}

View File

@@ -0,0 +1,40 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
/// Subtracts two dates and returns the relative components from `lhs` to `rhs`.
/// Follows this mathematical pattern:
/// let difference = lhs - rhs
/// rhs + difference = lhs
public func - (lhs: Date, rhs: Date) -> DateComponents {
return SwiftDate.defaultRegion.calendar.dateComponents(DateComponents.allComponentsSet, from: rhs, to: lhs)
}
/// Adds date components to a date and returns a new date.
public func + (lhs: Date, rhs: DateComponents) -> Date {
return rhs.from(lhs)!
}
/// Adds date components to a date and returns a new date.
public func + (lhs: DateComponents, rhs: Date) -> Date {
return (rhs + lhs)
}
/// Subtracts date components from a date and returns a new date.
public func - (lhs: Date, rhs: DateComponents) -> Date {
return (lhs + (-rhs))
}
public func + (lhs: Date, rhs: TimeInterval) -> Date {
return lhs.addingTimeInterval(rhs)
}

View File

@@ -0,0 +1,162 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
#if os(Linux)
#else
internal enum AssociatedKeys: String {
case customDateFormatter = "SwiftDate.CustomDateFormatter"
}
#endif
extension Date: DateRepresentable {
/// Just return itself to be compliant with `DateRepresentable` protocol.
public var date: Date { return self }
/// For absolute Date object the default region is obtained from the global `defaultRegion` variable.
public var region: Region {
return SwiftDate.defaultRegion
}
#if os(Linux)
public var customFormatter: DateFormatter? {
get {
debugPrint("Not supported on Linux")
return nil
}
set { debugPrint("Not supported on Linux") }
}
#else
/// Assign a custom formatter if you need a special behaviour during formatting of the object.
/// Usually you will not need to do it, SwiftDate uses the local thread date formatter in order to
/// optimize the formatting process. By default is `nil`.
public var customFormatter: DateFormatter? {
get {
let fomatter: DateFormatter? = getAssociatedValue(key: AssociatedKeys.customDateFormatter.rawValue, object: self as AnyObject)
return fomatter
}
set {
set(associatedValue: newValue, key: AssociatedKeys.customDateFormatter.rawValue, object: self as AnyObject)
}
}
#endif
/// Extract the date components.
public var dateComponents: DateComponents {
return region.calendar.dateComponents(DateComponents.allComponentsSet, from: self)
}
/// Initialize a new date object from string expressed in given region.
///
/// - Parameters:
/// - string: date expressed as string.
/// - format: format of the date (`nil` uses provided list of auto formats patterns.
/// Pass it if you can in order to optimize the parse task).
/// - region: region in which the date is expressed. `nil` uses the `SwiftDate.defaultRegion`.
public init?(_ string: String, format: String? = nil, region: Region = SwiftDate.defaultRegion) {
guard let dateInRegion = DateInRegion(string, format: format, region: region) else { return nil }
self = dateInRegion.date
}
/// Initialize a new date from the number of seconds passed since Unix Epoch.
///
/// - Parameter interval: seconds
/// Initialize a new date from the number of seconds passed since Unix Epoch.
///
/// - Parameters:
/// - interval: seconds from Unix epoch time.
/// - region: region in which the date, `nil` uses the default region at UTC timezone
public init(seconds interval: TimeInterval, region: Region = Region.UTC) {
self = DateInRegion(seconds: interval, region: region).date
}
/// Initialize a new date corresponding to the number of milliseconds since the Unix Epoch.
///
/// - Parameters:
/// - interval: seconds since the Unix Epoch timestamp.
/// - region: region in which the date must be expressed, `nil` uses the default region at UTC timezone
public init(milliseconds interval: Int, region: Region = Region.UTC) {
self = DateInRegion(milliseconds: interval, region: region).date
}
/// Initialize a new date with the opportunity to configure single date components via builder pattern.
/// Date is therfore expressed in passed region (`DateComponents`'s `timezone`,`calendar` and `locale` are ignored
/// and overwritten by the region if not `nil`).
///
/// - Parameters:
/// - configuration: configuration callback
/// - region: region in which the date is expressed. Ignore to use `SwiftDate.defaultRegion`, `nil` to use `DateComponents` data.
public init?(components configuration: ((inout DateComponents) -> Void), region: Region? = SwiftDate.defaultRegion) {
guard let date = DateInRegion(components: configuration, region: region)?.date else { return nil }
self = date
}
/// Initialize a new date with given components.
///
/// - Parameters:
/// - components: components of the date.
/// - region: region in which the date is expressed.
/// Ignore to use `SwiftDate.defaultRegion`, `nil` to use `DateComponents` data.
public init?(components: DateComponents, region: Region?) {
guard let date = DateInRegion(components: components, region: region)?.date else { return nil }
self = date
}
/// Initialize a new date with given components.
public init(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int = 0, nanosecond: Int = 0, region: Region = SwiftDate.defaultRegion) {
var components = DateComponents()
components.year = year
components.month = month
components.day = day
components.hour = hour
components.minute = minute
components.second = second
components.nanosecond = nanosecond
components.timeZone = region.timeZone
components.calendar = region.calendar
self = region.calendar.date(from: components)!
}
/// Express given absolute date in the context of the default region.
///
/// - Returns: `DateInRegion`
public func inDefaultRegion() -> DateInRegion {
return DateInRegion(self, region: SwiftDate.defaultRegion)
}
/// Express given absolute date in the context of passed region.
///
/// - Parameter region: destination region.
/// - Returns: `DateInRegion`
public func `in`(region: Region) -> DateInRegion {
return DateInRegion(self, region: region)
}
/// Return a date in the distant past.
///
/// - Returns: Date instance.
public static func past() -> Date {
return Date.distantPast
}
/// Return a date in the distant future.
///
/// - Returns: Date instance.
public static func future() -> Date {
return Date.distantFuture
}
}

View File

@@ -0,0 +1,326 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
// MARK: - Comparing DateInRegion
public func == (lhs: DateInRegion, rhs: DateInRegion) -> Bool {
return (lhs.date.timeIntervalSince1970 == rhs.date.timeIntervalSince1970)
}
public func <= (lhs: DateInRegion, rhs: DateInRegion) -> Bool {
let result = lhs.date.compare(rhs.date)
return (result == .orderedAscending || result == .orderedSame)
}
public func >= (lhs: DateInRegion, rhs: DateInRegion) -> Bool {
let result = lhs.date.compare(rhs.date)
return (result == .orderedDescending || result == .orderedSame)
}
public func < (lhs: DateInRegion, rhs: DateInRegion) -> Bool {
return lhs.date.compare(rhs.date) == .orderedAscending
}
public func > (lhs: DateInRegion, rhs: DateInRegion) -> Bool {
return lhs.date.compare(rhs.date) == .orderedDescending
}
// The type of comparison to do against today's date or with the suplied date.
///
/// - isToday: hecks if date today.
/// - isTomorrow: Checks if date is tomorrow.
/// - isYesterday: Checks if date is yesterday.
/// - isSameDay: Compares date days
/// - isThisWeek: Checks if date is in this week.
/// - isNextWeek: Checks if date is in next week.
/// - isLastWeek: Checks if date is in last week.
/// - isSameWeek: Compares date weeks
/// - isThisMonth: Checks if date is in this month.
/// - isNextMonth: Checks if date is in next month.
/// - isLastMonth: Checks if date is in last month.
/// - isSameMonth: Compares date months
/// - isThisYear: Checks if date is in this year.
/// - isNextYear: Checks if date is in next year.
/// - isLastYear: Checks if date is in last year.
/// - isSameYear: Compare date years
/// - isInTheFuture: Checks if it's a future date
/// - isInThePast: Checks if the date has passed
/// - isEarlier: Checks if earlier than date
/// - isLater: Checks if later than date
/// - isWeekday: Checks if it's a weekday
/// - isWeekend: Checks if it's a weekend
/// - isInDST: Indicates whether the represented date uses daylight saving time.
/// - isMorning: Return true if date is in the morning (>=5 - <12)
/// - isAfternoon: Return true if date is in the afternoon (>=12 - <17)
/// - isEvening: Return true if date is in the morning (>=17 - <21)
/// - isNight: Return true if date is in the morning (>=21 - <5)
public enum DateComparisonType {
// Days
case isToday
case isTomorrow
case isYesterday
case isSameDay(_ : DateRepresentable)
// Weeks
case isThisWeek
case isNextWeek
case isLastWeek
case isSameWeek(_: DateRepresentable)
// Months
case isThisMonth
case isNextMonth
case isLastMonth
case isSameMonth(_: DateRepresentable)
// Years
case isThisYear
case isNextYear
case isLastYear
case isSameYear(_: DateRepresentable)
// Relative Time
case isInTheFuture
case isInThePast
case isEarlier(than: DateRepresentable)
case isLater(than: DateRepresentable)
case isWeekday
case isWeekend
// Day time
case isMorning
case isAfternoon
case isEvening
case isNight
// TZ
case isInDST
}
public extension DateInRegion {
/// Decides whether a DATE is "close by" another one passed in parameter,
/// where "Being close" is measured using a precision argument
/// which is initialized a 300 seconds, or 5 minutes.
///
/// - Parameters:
/// - refDate: reference date compare against to.
/// - precision: The precision of the comparison (default is 5 minutes, or 300 seconds).
/// - Returns: A boolean; true if close by, false otherwise.
func compareCloseTo(_ refDate: DateInRegion, precision: TimeInterval = 300) -> Bool {
return (abs(date.timeIntervalSince(refDate.date)) <= precision)
}
/// Compare the date with the rule specified in the `compareType` parameter.
///
/// - Parameter compareType: comparison type.
/// - Returns: `true` if comparison succeded, `false` otherwise
func compare(_ compareType: DateComparisonType) -> Bool {
switch compareType {
case .isToday:
return compare(.isSameDay(region.nowInThisRegion()))
case .isTomorrow:
let tomorrow = DateInRegion(region: region).dateByAdding(1, .day)
return compare(.isSameDay(tomorrow))
case .isYesterday:
let yesterday = DateInRegion(region: region).dateByAdding(-1, .day)
return compare(.isSameDay(yesterday))
case .isSameDay(let refDate):
return calendar.isDate(date, inSameDayAs: refDate.date)
case .isThisWeek:
return compare(.isSameWeek(region.nowInThisRegion()))
case .isNextWeek:
let nextWeek = region.nowInThisRegion().dateByAdding(1, .weekOfYear)
return compare(.isSameWeek(nextWeek))
case .isLastWeek:
let lastWeek = region.nowInThisRegion().dateByAdding(-1, .weekOfYear)
return compare(.isSameWeek(lastWeek))
case .isSameWeek(let refDate):
guard weekOfYear == refDate.weekOfYear else {
return false
}
// Ensure time interval is under 1 week
return (abs(date.timeIntervalSince(refDate.date)) < 1.weeks.timeInterval)
case .isThisMonth:
return compare(.isSameMonth(region.nowInThisRegion()))
case .isNextMonth:
let nextMonth = region.nowInThisRegion().dateByAdding(1, .month)
return compare(.isSameMonth(nextMonth))
case .isLastMonth:
let lastMonth = region.nowInThisRegion().dateByAdding(-1, .month)
return compare(.isSameMonth(lastMonth))
case .isSameMonth(let refDate):
return (date.year == refDate.date.year) && (date.month == refDate.date.month)
case .isThisYear:
return compare(.isSameYear(region.nowInThisRegion()))
case .isNextYear:
let nextYear = region.nowInThisRegion().dateByAdding(1, .year)
return compare(.isSameYear(nextYear))
case .isLastYear:
let lastYear = region.nowInThisRegion().dateByAdding(-1, .year)
return compare(.isSameYear(lastYear))
case .isSameYear(let refDate):
return (date.year == refDate.date.year)
case .isInTheFuture:
return compare(.isLater(than: region.nowInThisRegion()))
case .isInThePast:
return compare(.isEarlier(than: region.nowInThisRegion()))
case .isEarlier(let refDate):
return ((date as NSDate).earlierDate(refDate.date) == date)
case .isLater(let refDate):
return ((date as NSDate).laterDate(refDate.date) == date)
case .isWeekday:
return !compare(.isWeekend)
case .isWeekend:
let range = calendar.maximumRange(of: Calendar.Component.weekday)!
return (weekday == range.lowerBound || weekday == range.upperBound - range.lowerBound)
case .isInDST:
return region.timeZone.isDaylightSavingTime(for: date)
case .isMorning:
return (hour >= 5 && hour < 12)
case .isAfternoon:
return (hour >= 12 && hour < 17)
case .isEvening:
return (hour >= 17 && hour < 21)
case .isNight:
return (hour >= 21 || hour < 5)
}
}
/// Returns a ComparisonResult value that indicates the ordering of two given dates based on
/// their components down to a given unit granularity.
///
/// - parameter date: date to compare.
/// - parameter granularity: The smallest unit that must, along with all larger units
/// - returns: `ComparisonResult`
func compare(toDate refDate: DateInRegion, granularity: Calendar.Component) -> ComparisonResult {
switch granularity {
case .nanosecond:
// There is a possible rounding error using Calendar to compare two dates below the minute granularity
// So we've added this trick and use standard Date compare which return correct results in this case
// https://github.com/malcommac/SwiftDate/issues/346
return date.compare(refDate.date)
default:
return region.calendar.compare(date, to: refDate.date, toGranularity: granularity)
}
}
/// Compares whether the receiver is before/before equal `date` based on their components down to a given unit granularity.
///
/// - Parameters:
/// - refDate: reference date
/// - orEqual: `true` to also check for equality
/// - granularity: smallest unit that must, along with all larger units, be less for the given dates
/// - Returns: Boolean
func isBeforeDate(_ date: DateInRegion, orEqual: Bool = false, granularity: Calendar.Component) -> Bool {
let result = compare(toDate: date, granularity: granularity)
return (orEqual ? (result == .orderedSame || result == .orderedAscending) : result == .orderedAscending)
}
/// Compares whether the receiver is after `date` based on their components down to a given unit granularity.
///
/// - Parameters:
/// - refDate: reference date
/// - orEqual: `true` to also check for equality
/// - granularity: Smallest unit that must, along with all larger units, be greater for the given dates.
/// - Returns: Boolean
func isAfterDate(_ refDate: DateInRegion, orEqual: Bool = false, granularity: Calendar.Component) -> Bool {
let result = compare(toDate: refDate, granularity: granularity)
return (orEqual ? (result == .orderedSame || result == .orderedDescending) : result == .orderedDescending)
}
/// Compares equality of two given dates based on their components down to a given unit
/// granularity.
///
/// - parameter date: date to compare
/// - parameter granularity: The smallest unit that must, along with all larger units, be equal for the given
/// dates to be considered the same.
///
/// - returns: `true` if the dates are the same down to the given granularity, otherwise `false`
func isInside(date: DateInRegion, granularity: Calendar.Component) -> Bool {
return (compare(toDate: date, granularity: granularity) == .orderedSame)
}
/// Return `true` if receiver data is contained in the range specified by two dates.
///
/// - Parameters:
/// - startDate: range upper bound date
/// - endDate: range lower bound date
/// - orEqual: `true` to also check for equality on date and date2, default is `true`
/// - granularity: smallest unit that must, along with all larger units, be greater
/// - Returns: Boolean
func isInRange(date startDate: DateInRegion, and endDate: DateInRegion, orEqual: Bool = true, granularity: Calendar.Component = .nanosecond) -> Bool {
return isAfterDate(startDate, orEqual: orEqual, granularity: granularity) && isBeforeDate(endDate, orEqual: orEqual, granularity: granularity)
}
// MARK: - Date Earlier/Later
/// Return the earlier of two dates, between self and a given date.
///
/// - Parameter date: The date to compare to self
/// - Returns: The date that is earlier
func earlierDate(_ date: DateInRegion) -> DateInRegion {
return self.date.timeIntervalSince(date.date) <= 0 ? self : date
}
/// Return the later of two dates, between self and a given date.
///
/// - Parameter date: The date to compare to self
/// - Returns: The date that is later
func laterDate(_ date: DateInRegion) -> DateInRegion {
return self.date.timeIntervalSince(date.date) >= 0 ? self : date
}
/// Returns the difference in the calendar component given (like day, month or year)
/// with respect to the other date as a positive integer
func difference(in component: Calendar.Component, from other: DateInRegion) -> Int? {
return self.date.difference(in: component, from: other.date)
}
/// Returns the differences in the calendar components given (like day, month and year)
/// with respect to the other date as dictionary with the calendar component as the key
/// and the diffrence as a positive integer as the value
func differences(in components: Set<Calendar.Component>, from other: DateInRegion) -> [Calendar.Component: Int] {
return self.date.differences(in: components, from: other.date)
}
}

View File

@@ -0,0 +1,164 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public extension DateInRegion {
/// Indicates whether the month is a leap month.
var isLeapMonth: Bool {
let calendar = region.calendar
// Library function for leap contains a bug for Gregorian calendars, implemented workaround
if calendar.identifier == Calendar.Identifier.gregorian && year > 1582 {
guard let range: Range<Int> = calendar.range(of: .day, in: .month, for: date) else {
return false
}
return ((range.upperBound - range.lowerBound) == 29)
}
// For other calendars:
return calendar.dateComponents([.day, .month, .year], from: date).isLeapMonth!
}
/// Indicates whether the year is a leap year.
var isLeapYear: Bool {
let calendar = region.calendar
// Library function for leap contains a bug for Gregorian calendars, implemented workaround
if calendar.identifier == Calendar.Identifier.gregorian {
var newComponents = dateComponents
newComponents.month = 2
newComponents.day = 10
let testDate = DateInRegion(components: newComponents, region: region)
return testDate!.isLeapMonth
} else if calendar.identifier == Calendar.Identifier.chinese {
/// There are 12 or 13 months in each year and 29 or 30 days in each month.
/// A 13-month year is a leap year, which meaning more than 376 days is a leap year.
return ( dateAtStartOf(.year).toUnit(.day, to: dateAtEndOf(.year)) > 375 )
}
// For other calendars:
return calendar.dateComponents([.day, .month, .year], from: date).isLeapMonth!
}
/// Julian day is the continuous count of days since the beginning of
/// the Julian Period used primarily by astronomers.
var julianDay: Double {
let destRegion = Region(calendar: Calendars.gregorian, zone: Zones.gmt, locale: Locales.english)
let utc = convertTo(region: destRegion)
let year = Double(utc.year)
let month = Double(utc.month)
let day = Double(utc.day)
let hour = Double(utc.hour) + Double(utc.minute) / 60.0 + (Double(utc.second) + Double(utc.nanosecond) / 1e9) / 3600.0
var jd = 367.0 * year - floor( 7.0 * ( year + floor((month + 9.0) / 12.0)) / 4.0 )
jd -= floor( 3.0 * (floor( (year + (month - 9.0) / 7.0) / 100.0 ) + 1.0) / 4.0 )
jd += floor(275.0 * month / 9.0) + day + 1_721_028.5 + hour / 24.0
return jd
}
/// The Modified Julian Date (MJD) was introduced by the Smithsonian Astrophysical Observatory
/// in 1957 to record the orbit of Sputnik via an IBM 704 (36-bit machine)
/// and using only 18 bits until August 7, 2576.
var modifiedJulianDay: Double {
return julianDay - 2_400_000.5
}
/// Return elapsed time expressed in given components since the current receiver and a reference date.
/// Time is evaluated with the fixed measumerent of each unity.
///
/// - Parameters:
/// - refDate: reference date (`nil` to use current date in the same region of the receiver)
/// - component: time unit to extract.
/// - Returns: value
func getInterval(toDate: DateInRegion?, component: Calendar.Component) -> Int64 {
let refDate = (toDate ?? region.nowInThisRegion())
switch component {
case .year:
let end = calendar.ordinality(of: .year, in: .era, for: refDate.date)
let start = calendar.ordinality(of: .year, in: .era, for: date)
return Int64(end! - start!)
case .month:
let end = calendar.ordinality(of: .month, in: .era, for: refDate.date)
let start = calendar.ordinality(of: .month, in: .era, for: date)
return Int64(end! - start!)
case .day:
let end = calendar.ordinality(of: .day, in: .era, for: refDate.date)
let start = calendar.ordinality(of: .day, in: .era, for: date)
return Int64(end! - start!)
case .hour:
let interval = refDate.date.timeIntervalSince(date)
return Int64(interval / 1.hours.timeInterval)
case .minute:
let interval = refDate.date.timeIntervalSince(date)
return Int64(interval / 1.minutes.timeInterval)
case .second:
return Int64(refDate.date.timeIntervalSince(date))
case .weekday:
let end = calendar.ordinality(of: .weekday, in: .era, for: refDate.date)
let start = calendar.ordinality(of: .weekday, in: .era, for: date)
return Int64(end! - start!)
case .weekdayOrdinal:
let end = calendar.ordinality(of: .weekdayOrdinal, in: .era, for: refDate.date)
let start = calendar.ordinality(of: .weekdayOrdinal, in: .era, for: date)
return Int64(end! - start!)
case .weekOfYear:
let end = calendar.ordinality(of: .weekOfYear, in: .era, for: refDate.date)
let start = calendar.ordinality(of: .weekOfYear, in: .era, for: date)
return Int64(end! - start!)
default:
debugPrint("Passed component cannot be used to extract values using interval() function between two dates. Returning 0.")
return 0
}
}
/// The interval between the receiver and the another parameter.
/// If the receiver is earlier than anotherDate, the return value is negative.
/// If anotherDate is nil, the results are undefined.
///
/// - Parameter date: The date with which to compare the receiver.
/// - Returns: time interval between two dates
func timeIntervalSince(_ date: DateInRegion) -> TimeInterval {
return self.date.timeIntervalSince(date.date)
}
/// Extract DateComponents from the difference between two dates.
///
/// - Parameter rhs: date to compare
/// - Returns: components
func componentsTo(_ rhs: DateInRegion) -> DateComponents {
return calendar.dateComponents(DateComponents.allComponentsSet, from: rhs.date, to: date)
}
/// Returns the difference between two dates (`date - self`) expressed as date components.
///
/// - Parameters:
/// - date: reference date as initial date (left operand)
/// - components: components to extract, `nil` to use default `DateComponents.allComponentsSet`
/// - Returns: extracted date components
func componentsSince(_ date: DateInRegion, components: [Calendar.Component]? = nil) -> DateComponents {
if date.calendar != calendar {
debugPrint("Date has different calendar, results maybe wrong")
}
let cmps = (components != nil ? Calendar.Component.toSet(components!) : DateComponents.allComponentsSet)
return date.calendar.dateComponents(cmps, from: date.date, to: self.date)
}
}

View File

@@ -0,0 +1,650 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public extension DateInRegion {
// MARK: - Random Date Generator
/// Generate a sequence of dates between a range.
///
/// - Parameters:
/// - count: number of dates to generate.
/// - initial: lower date bound.
/// - final: upper date bound.
/// - region: region of the dates.
/// - Returns: array of dates
static func randomDates(count: Int, between initial: DateInRegion, and final: DateInRegion,
region: Region = SwiftDate.defaultRegion) -> [DateInRegion] {
var list: [DateInRegion] = []
for _ in 0..<count {
list.append(DateInRegion.randomDate(between: initial, and: final, region: region))
}
return list
}
/// Return a date between now and a specified amount days ealier.
///
/// - Parameters:
/// - days: days range
/// - region: destination region, `nil` to use the default region
/// - Returns: random date
static func randomDate(withinDaysBeforeToday days: Int,
region: Region = SwiftDate.defaultRegion) -> DateInRegion {
let today = DateInRegion(region: region)
let earliest = DateInRegion(today.date.addingTimeInterval(TimeInterval(-days * 24 * 60 * 60)), region: region)
return DateInRegion.randomDate(between: earliest, and: today)
}
/// Generate a random date in given region.
///
/// - Parameter region: destination region, `nil` to use the default region
/// - Returns: random date
static func randomDate(region: Region = SwiftDate.defaultRegion) -> DateInRegion {
let randomTime = TimeInterval(UInt32.random(in: UInt32.min..<UInt32.max))
let absoluteDate = Date(timeIntervalSince1970: randomTime)
return DateInRegion(absoluteDate, region: region)
}
/// Generate a random date between two intervals.
///
/// - Parameters:
/// - initial: lower bound date
/// - final: upper bound date
/// - region: destination region, `nil` to use the default region
/// - Returns: random Date
static func randomDate(between initial: DateInRegion, and final: DateInRegion,
region: Region = SwiftDate.defaultRegion) -> DateInRegion {
let interval = final.timeIntervalSince(initial)
let randomInterval = TimeInterval(UInt32.random(in: UInt32.min..<UInt32(interval)))
return initial.addingTimeInterval(randomInterval)
}
/// Return the oldest date in given list (timezone is ignored, comparison uses absolute date).
///
/// - Parameter list: list of dates
/// - Returns: a tuple with the index of the oldest date and its instance.
static func oldestIn(list: [DateInRegion]) -> DateInRegion? {
guard list.count > 0 else { return nil }
guard list.count > 1 else { return list.first! }
return list.min(by: {
return $0 < $1
})
}
/// Sort date by oldest, with the oldest date on top.
///
/// - Parameter list: list to sort
/// - Returns: sorted array
static func sortedByOldest(list: [DateInRegion]) -> [DateInRegion] {
return list.sorted(by: { $0.date.compare($1.date) == .orderedAscending })
}
/// Sort date by newest, with the newest date on top.
///
/// - Parameter list: list to sort
/// - Returns: sorted array
static func sortedByNewest(list: [DateInRegion]) -> [DateInRegion] {
return list.sorted(by: { $0.date.compare($1.date) == .orderedDescending })
}
/// Return the newest date in given list (timezone is ignored, comparison uses absolute date).
///
/// - Parameter list: list of dates
/// - Returns: a tuple with the index of the newest date and its instance.
static func newestIn(list: [DateInRegion]) -> DateInRegion? {
guard list.count > 0 else { return nil }
guard list.count > 1 else { return list.first! }
return list.max(by: {
return $0 < $1
})
}
/// Enumerate dates between two intervals by adding specified time components and return an array of dates.
/// `startDate` interval will be the first item of the resulting array.
/// The last item of the array is evaluated automatically and maybe not equal to `endDate`.
///
/// - Parameters:
/// - start: starting date
/// - endDate: ending date
/// - increment: components to add
/// - Returns: array of dates
static func enumerateDates(from startDate: DateInRegion, to endDate: DateInRegion, increment: DateComponents) -> [DateInRegion] {
return DateInRegion.enumerateDates(from: startDate, to: endDate, increment: { _ in
return increment
})
}
/// Enumerate dates between two intervals by adding specified time components defined in a closure and return an array of dates.
/// `startDate` interval will be the first item of the resulting array.
/// The last item of the array is evaluated automatically and maybe not equal to `endDate`.
///
/// - Parameters:
/// - start: starting date
/// - endDate: ending date
/// - increment: increment function. It get the last generated date and require a valida `DateComponents` instance which define the increment
/// - Returns: array of dates
static func enumerateDates(from startDate: DateInRegion, to endDate: DateInRegion, increment: ((DateInRegion) -> (DateComponents))) -> [DateInRegion] {
guard startDate.calendar == endDate.calendar else {
debugPrint("Cannot enumerate dates between two different region's calendars. Return empty array.")
return []
}
var dates: [DateInRegion] = []
var currentDate = startDate
while currentDate <= endDate {
dates.append(currentDate)
currentDate = (currentDate + increment(currentDate))
}
return dates
}
/// Returns a new DateInRegion that is initialized at the start of a specified unit of time.
///
/// - Parameter unit: time unit value.
/// - Returns: instance at the beginning of the time unit; `self` if fails.
func dateAtStartOf(_ unit: Calendar.Component) -> DateInRegion {
#if os(Linux)
guard let result = (region.calendar as NSCalendar).range(of: unit.nsCalendarUnit, for: date) else {
return self
}
return DateInRegion(result.start, region: region)
#else
var start: NSDate?
var interval: TimeInterval = 0
guard (region.calendar as NSCalendar).range(of: unit.nsCalendarUnit, start: &start, interval: &interval, for: date),
let startDate = start else {
return self
}
return DateInRegion(startDate as Date, region: region)
#endif
}
/// Return a new DateInRegion that is initialized at the start of the specified components
/// executed in order.
///
/// - Parameter units: sequence of transformations as time unit components
/// - Returns: new date at the beginning of the passed components, intermediate results if fails.
func dateAtStartOf(_ units: [Calendar.Component]) -> DateInRegion {
return units.reduce(self) { (currentDate, currentUnit) -> DateInRegion in
return currentDate.dateAtStartOf(currentUnit)
}
}
/// Returns a new Moment that is initialized at the end of a specified unit of time.
///
/// - parameter unit: time unit value.
///
/// - returns: A new Moment instance.
func dateAtEndOf(_ unit: Calendar.Component) -> DateInRegion {
// RangeOfUnit returns the start of the next unit; we will subtract one thousandth of a second
#if os(Linux)
guard let result = (region.calendar as NSCalendar).range(of: unit.nsCalendarUnit, for: date) else {
return self
}
let startOfNextUnit = result.start.addingTimeInterval(result.duration)
let endOfThisUnit = Date(timeInterval: -0.001, since: startOfNextUnit)
return DateInRegion(endOfThisUnit, region: region)
#else
var start: NSDate?
var interval: TimeInterval = 0
guard (self.region.calendar as NSCalendar).range(of: unit.nsCalendarUnit, start: &start, interval: &interval, for: date),
let startDate = start else {
return self
}
let startOfNextUnit = startDate.addingTimeInterval(interval)
let endOfThisUnit = Date(timeInterval: -0.001, since: startOfNextUnit as Date)
return DateInRegion(endOfThisUnit, region: region)
#endif
}
/// Return a new DateInRegion that is initialized at the end of the specified components
/// executed in order.
///
/// - Parameter units: sequence of transformations as time unit components
/// - Returns: new date at the end of the passed components, intermediate results if fails.
func dateAtEndOf(_ units: [Calendar.Component]) -> DateInRegion {
return units.reduce(self) { (currentDate, currentUnit) -> DateInRegion in
return currentDate.dateAtEndOf(currentUnit)
}
}
/// Create a new date by altering specified components of the receiver.
/// Note: `calendar` and `timezone` are ignored.
/// Note: some components may alter the date cyclically (like setting both `.year` and `.yearForWeekOfYear`) and
/// may results in a wrong evaluated date.
///
/// - Parameter components: components to alter with their new values.
/// - Returns: new altered `DateInRegion` instance
func dateBySet(_ components: [Calendar.Component: Int?]) -> DateInRegion? {
var dateComponents = DateComponents()
dateComponents.year = (components[.year] ?? year)
dateComponents.month = (components[.month] ?? month)
dateComponents.day = (components[.day] ?? day)
dateComponents.hour = (components[.hour] ?? hour)
dateComponents.minute = (components[.minute] ?? minute)
dateComponents.second = (components[.second] ?? second)
dateComponents.nanosecond = (components[.nanosecond] ?? nanosecond)
// Some components may interfer with others, so we'll set it them only if explicitly set.
if let weekday = components[.weekday] {
dateComponents.weekday = weekday
}
if let weekOfYear = components[.weekOfYear] {
dateComponents.weekOfYear = weekOfYear
}
if let weekdayOrdinal = components[.weekdayOrdinal] {
dateComponents.weekdayOrdinal = weekdayOrdinal
}
if let yearForWeekOfYear = components[.yearForWeekOfYear] {
dateComponents.yearForWeekOfYear = yearForWeekOfYear
}
guard let newDate = calendar.date(from: dateComponents) else { return nil }
return DateInRegion(newDate, region: region)
}
/// Create a new date by altering specified time components.
///
/// - Parameters:
/// - hour: hour to set (`nil` to leave it unaltered)
/// - min: min to set (`nil` to leave it unaltered)
/// - secs: sec to set (`nil` to leave it unaltered)
/// - ms: milliseconds to set (`nil` to leave it unaltered)
/// - options: options for calculation
/// - Returns: new altered `DateInRegion` instance
func dateBySet(hour: Int?, min: Int?, secs: Int?, ms: Int? = nil, options: TimeCalculationOptions = TimeCalculationOptions()) -> DateInRegion? {
guard let date = calendar.date(bySettingHour: (hour ?? self.hour),
minute: (min ?? self.minute),
second: (secs ?? self.second),
of: self.date,
matchingPolicy: options.matchingPolicy,
repeatedTimePolicy: options.repeatedTimePolicy,
direction: options.direction) else { return nil }
guard let ms = ms else {
return DateInRegion(date, region: region)
}
var timestamp = date.timeIntervalSince1970.rounded(.down)
timestamp += Double(ms) / 1000.0
return DateInRegion(Date(timeIntervalSince1970: timestamp), region: region)
}
/// Creates a new instance by truncating the components
///
/// - Parameter components: components to truncate.
/// - Returns: new date with truncated components.
func dateTruncated(at components: [Calendar.Component]) -> DateInRegion? {
var dateComponents = self.dateComponents
for component in components {
switch component {
case .month: dateComponents.month = 1
case .day: dateComponents.day = 1
case .hour: dateComponents.hour = 0
case .minute: dateComponents.minute = 0
case .second: dateComponents.second = 0
case .nanosecond: dateComponents.nanosecond = 0
default: continue
}
}
guard let newDate = calendar.date(from: dateComponents) else { return nil }
return DateInRegion(newDate, region: region)
}
/// Creates a new instance by truncating the components starting from given components down the granurality.
///
/// - Parameter component: The component to be truncated from.
/// - Returns: new date with truncated components.
func dateTruncated(from component: Calendar.Component) -> DateInRegion? {
switch component {
case .month: return dateTruncated(at: [.month, .day, .hour, .minute, .second, .nanosecond])
case .day: return dateTruncated(at: [.day, .hour, .minute, .second, .nanosecond])
case .hour: return dateTruncated(at: [.hour, .minute, .second, .nanosecond])
case .minute: return dateTruncated(at: [.minute, .second, .nanosecond])
case .second: return dateTruncated(at: [.second, .nanosecond])
case .nanosecond: return dateTruncated(at: [.nanosecond])
default: return self
}
}
/// Round a given date time to the passed style (off|up|down).
///
/// - Parameter style: rounding mode.
/// - Returns: rounded date
func dateRoundedAt(_ style: RoundDateMode) -> DateInRegion {
switch style {
case .to5Mins: return dateRoundedAt(.toMins(5))
case .to10Mins: return dateRoundedAt(.toMins(10))
case .to30Mins: return dateRoundedAt(.toMins(30))
case .toCeil5Mins: return dateRoundedAt(.toCeilMins(5))
case .toCeil10Mins: return dateRoundedAt(.toCeilMins(10))
case .toCeil30Mins: return dateRoundedAt(.toCeilMins(30))
case .toFloor5Mins: return dateRoundedAt(.toFloorMins(5))
case .toFloor10Mins: return dateRoundedAt(.toFloorMins(10))
case .toFloor30Mins: return dateRoundedAt(.toFloorMins(30))
case .toMins(let minuteInterval):
let onesDigit: Int = (minute % 10)
if onesDigit < 5 {
return dateRoundedAt(.toFloorMins(minuteInterval))
} else {
return dateRoundedAt(.toCeilMins(minuteInterval))
}
case .toCeilMins(let minuteInterval):
let remain: Int = (minute % minuteInterval)
let value = (( Int(1.minutes.timeInterval) * (minuteInterval - remain)) - second)
return dateByAdding(value, .second)
case .toFloorMins(let minuteInterval):
let remain: Int = (minute % minuteInterval)
let value = -((Int(1.minutes.timeInterval) * remain) + second)
return dateByAdding(value, .second)
}
}
/// Offset a date by n calendar components.
/// Note: This operation can be functionally chained.
///
/// - Parameters:
/// - count: value of the offset (maybe negative).
/// - component: component to offset.
/// - Returns: new altered date.
func dateByAdding(_ count: Int, _ component: Calendar.Component) -> DateInRegion {
var newComponent = DateComponents(second: 0)
switch component {
case .era: newComponent = DateComponents(era: count)
case .year: newComponent = DateComponents(year: count)
case .month: newComponent = DateComponents(month: count)
case .day: newComponent = DateComponents(day: count)
case .hour: newComponent = DateComponents(hour: count)
case .minute: newComponent = DateComponents(minute: count)
case .second: newComponent = DateComponents(second: count)
case .weekday: newComponent = DateComponents(weekday: count)
case .weekdayOrdinal: newComponent = DateComponents(weekdayOrdinal: count)
case .quarter: newComponent = DateComponents(quarter: count)
case .weekOfMonth: newComponent = DateComponents(weekOfMonth: count)
case .weekOfYear: newComponent = DateComponents(weekOfYear: count)
case .yearForWeekOfYear: newComponent = DateComponents(yearForWeekOfYear: count)
case .nanosecond: newComponent = DateComponents(nanosecond: count)
default: break // .calendar and .timezone does nothing in this context
}
guard let newDate = region.calendar.date(byAdding: newComponent, to: date) else {
return self // failed to add component, return unmodified date
}
return DateInRegion(newDate, region: region)
}
/// Return related date starting from the receiver attributes.
///
/// - Parameter type: related date to obtain.
/// - Returns: instance of the related date; if fails the same unmodified date is returned
func dateAt(_ type: DateRelatedType) -> DateInRegion {
switch type {
case .startOfDay:
return calendar.startOfDay(for: date).in(region: region)
case .endOfDay:
return dateByAdding(1, .day).dateAt(.startOfDay).dateByAdding(-1, .second)
case .startOfWeek:
let components = calendar.dateComponents([.yearForWeekOfYear, .weekOfYear], from: date)
return calendar.date(from: components)!.in(region: region)
case .endOfWeek:
return dateAt(.startOfWeek).dateByAdding(7, .day).dateByAdding(-1, .second)
case .startOfMonth:
return dateBySet([.day: 1, .hour: 1, .minute: 1, .second: 1, .nanosecond: 1])!
case .endOfMonth:
return dateByAdding((monthDays - day), .day).dateAtEndOf(.day)
case .tomorrow:
return dateByAdding(1, .day)
case .tomorrowAtStart:
return dateByAdding(1, .day).dateAtStartOf(.day)
case .yesterday:
return dateByAdding(-1, .day)
case .yesterdayAtStart:
return dateByAdding(-1, .day).dateAtStartOf(.day)
case .nearestMinute(let nearest):
let minutes = (minute + nearest / 2) / nearest * nearest
return dateBySet([.minute: minutes])!
case .nearestHour(let nearest):
let hours = (hour + nearest / 2) / nearest * nearest
return dateBySet([.hour: hours, .minute: 0])!
case .nextWeekday(let weekday):
var cal = Calendar(identifier: calendar.identifier)
cal.firstWeekday = 2 // Sunday = 1, Saturday = 7
var components = DateComponents()
components.weekday = weekday.rawValue
guard let next = cal.nextDate(after: date, matching: components, matchingPolicy: .nextTimePreservingSmallerComponents) else {
return self
}
return DateInRegion(next, region: region)
case .nextDSTDate:
guard let nextDate = region.timeZone.nextDaylightSavingTimeTransition(after: date) else {
return self
}
return DateInRegion(nextDate, region: region)
case .prevMonth:
return dateByAdding(-1, .month).dateAtStartOf(.month).dateAtStartOf(.day)
case .nextMonth:
return dateByAdding(1, .month).dateAtStartOf(.month).dateAtStartOf(.day)
case .prevWeek:
return dateByAdding(-1, .weekOfYear).dateAtStartOf(.weekOfYear).dateAtStartOf(.day)
case .nextWeek:
return dateByAdding(1, .weekOfYear).dateAtStartOf(.weekOfYear).dateAtStartOf(.day)
case .nextYear:
return dateByAdding(1, .year).dateAtStartOf(.year)
case .prevYear:
return dateByAdding(-1, .year).dateAtStartOf(.year)
case .nextDSTTransition:
guard let transitionDate = region.timeZone.nextDaylightSavingTimeTransition(after: date) else {
return self
}
return DateInRegion(transitionDate, region: region)
}
}
/// Create a new instance of the date in the same region with time shifted by given time interval.
///
/// - Parameter interval: time interval to shift; maybe negative.
/// - Returns: new instance of the `DateInRegion`
func addingTimeInterval(_ interval: TimeInterval) -> DateInRegion {
return DateInRegion(date.addingTimeInterval(interval), region: region)
}
// MARK: - Conversion
/// Convert a date to a new calendar/timezone/locale.
/// Only non `nil` values are used, other values are inherithed by the receiver's region.
///
/// - Parameters:
/// - calendar: non `nil` value to change the calendar
/// - timezone: non `nil` value to change the timezone
/// - locale: non `nil` value to change the locale
/// - Returns: converted date
func convertTo(calendar: CalendarConvertible? = nil, timezone: ZoneConvertible? = nil, locale: LocaleConvertible? = nil) -> DateInRegion {
let newRegion = Region(calendar: (calendar ?? region.calendar),
zone: (timezone ?? region.timeZone),
locale: (locale ?? region.locale))
return convertTo(region: newRegion)
}
/// Return the dates for a specific weekday inside given month of specified year.
/// Ie. get me all the saturdays of Feb 2018.
/// NOTE: Values are returned in order.
///
/// - Parameters:
/// - weekday: weekday target.
/// - month: month target.
/// - year: year target.
/// - region: region target, omit to use `SwiftDate.defaultRegion`
/// - Returns: Ordered list of the dates for given weekday into given month.
static func datesForWeekday(_ weekday: WeekDay, inMonth month: Int, ofYear year: Int,
region: Region = SwiftDate.defaultRegion) -> [DateInRegion] {
let fromDate = DateInRegion(year: year, month: month, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0, region: region)
let toDate = fromDate.dateAt(.endOfMonth)
return DateInRegion.datesForWeekday(weekday, from: fromDate, to: toDate, region: region)
}
/// Return the dates for a specific weekday inside a specified date range.
/// NOTE: Values are returned in order.
///
/// - Parameters:
/// - weekday: weekday target.
/// - startDate: from date of the range.
/// - endDate: to date of the range.
/// - region: region target, omit to use `SwiftDate.defaultRegion`
/// - Returns: Ordered list of the dates for given weekday in passed range.
static func datesForWeekday(_ weekday: WeekDay, from startDate: DateInRegion, to endDate: DateInRegion,
region: Region = SwiftDate.defaultRegion) -> [DateInRegion] {
let calendarObj = region.calendar
let startDateWeekDay = Int(calendarObj.component(.weekday, from: startDate.date))
let desiredDay = weekday.rawValue
let offset = (desiredDay - startDateWeekDay + 7) % 7
let firstOccurrence = calendarObj.startOfDay(for: calendarObj.date(byAdding: DateComponents(day: offset), to: startDate.date)!)
guard firstOccurrence.timeIntervalSince1970 < endDate.timeIntervalSince1970 else {
return []
}
var dateOccurrences = [DateInRegion(firstOccurrence, region: region)]
while true {
let nextDate = DateInRegion(calendarObj.date(byAdding: DateComponents(day: 7), to: dateOccurrences.last!.date)!,
region: region)
guard nextDate < endDate else {
break
}
dateOccurrences.append(nextDate)
}
return dateOccurrences
}
}
public extension DateInRegion {
/// Returns the date at the given week number and week day preserving smaller components (hour, minute, seconds)
///
/// For example: to get the third friday of next month
/// let today = DateInRegion()
/// let result = today.dateAt(weekdayOrdinal: 3, weekday: .friday, monthNumber: today.month + 1)
///
/// - Parameters:
/// - weekdayOrdinal: the week number (by set position in a recurrence rule)
/// - weekday: WeekDay
/// - monthNumber: a number from 1 to 12 representing the month, optional parameter
/// - yearNumber: a number representing the year, optional parameter
/// - Returns: new date created with the given parameters
func dateAt(weekdayOrdinal: Int, weekday: WeekDay, monthNumber: Int? = nil,
yearNumber: Int? = nil) -> DateInRegion {
let monthNum = monthNumber ?? month
let yearNum = yearNumber ?? year
var requiredWeekNum = weekdayOrdinal
var result = DateInRegion(year: yearNum, month: monthNum, day: 1, hour: hour,
minute: minute, second: second, nanosecond: nanosecond, region: region)
if result.weekday == weekday.rawValue {
requiredWeekNum -= 1
}
while requiredWeekNum > 0 {
result = result.nextWeekday(weekday)
requiredWeekNum -= 1
}
return result
}
/// Returns the date on the given day of month preserving smaller components
func dateAt(dayOfMonth: Int, monthNumber: Int? = nil,
yearNumber: Int? = nil) -> DateInRegion {
let monthNum = monthNumber ?? month
let yearNum = yearNumber ?? year
let result = DateInRegion(year: yearNum, month: monthNum, day: dayOfMonth,
hour: hour, minute: minute, second: second,
nanosecond: nanosecond, region: region)
return result
}
/// Returns the date after given number of weeks on the given day of week
func dateAfter(weeks count: Int, on weekday: WeekDay) -> DateInRegion {
var result = self.dateByAdding(count, .weekOfMonth)
if result.weekday == weekday.rawValue {
return result
} else if result.weekday > weekday.rawValue {
result = result.dateByAdding(-1, .weekOfMonth)
}
return result.nextWeekday(weekday)
}
/// Returns the next weekday preserving smaller components
///
/// - Parameters:
/// - weekday: weekday to get.
/// - region: region target, omit to use `SwiftDate.defaultRegion`
/// - Returns: `DateInRegion`
func nextWeekday(_ weekday: WeekDay) -> DateInRegion {
var components = DateComponents()
components.weekday = weekday.rawValue
components.hour = hour
components.second = second
components.minute = minute
guard let next = region.calendar.nextDate(after: date, matching: components,
matchingPolicy: .nextTimePreservingSmallerComponents) else {
return self
}
return DateInRegion(next, region: region)
}
/// Returns next date with the given weekday and the given week number
func next(_ weekday: WeekDay, withWeekOfMonth weekNumber: Int,
andMonthNumber monthNumber: Int? = nil) -> DateInRegion {
var result = self.dateAt(weekdayOrdinal: weekNumber, weekday: weekday, monthNumber: monthNumber)
if result <= self {
if let monthNum = monthNumber {
result = self.dateAt(weekdayOrdinal: weekNumber, weekday: weekday,
monthNumber: monthNum, yearNumber: self.year + 1)
} else {
result = self.dateAt(weekdayOrdinal: weekNumber, weekday: weekday, monthNumber: self.month + 1)
}
}
return result
}
/// Returns the next day of month preserving smaller components (hour, minute, seconds)
func next(dayOfMonth: Int, monthOfYear: Int? = nil) -> DateInRegion {
var components = DateComponents()
components.day = dayOfMonth
components.month = monthOfYear
components.hour = hour
components.second = second
components.minute = minute
guard let next = region.calendar.nextDate(after: date, matching: components,
matchingPolicy: .nextTimePreservingSmallerComponents) else {
return self
}
return DateInRegion(next, region: region)
}
}

View File

@@ -0,0 +1,82 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
// MARK: - Math Operation DateInRegion - DateInRegion
public func - (lhs: DateInRegion, rhs: DateInRegion) -> TimeInterval {
return lhs.timeIntervalSince(rhs)
}
// MARK: - Math Operation DateInRegion - Date Components
public func + (lhs: DateInRegion, rhs: DateComponents) -> DateInRegion {
let nextDate = lhs.calendar.date(byAdding: rhs, to: lhs.date)
return DateInRegion(nextDate!, region: lhs.region)
}
public func - (lhs: DateInRegion, rhs: DateComponents) -> DateInRegion {
return lhs + (-rhs)
}
// MARK: - Math Operation DateInRegion - Calendar.Component
public func + (lhs: DateInRegion, rhs: [Calendar.Component: Int]) -> DateInRegion {
let cmps = DateInRegion.componentsFrom(values: rhs)
return lhs + cmps
}
public func - (lhs: DateInRegion, rhs: [Calendar.Component: Int]) -> DateInRegion {
var invertedCmps: [Calendar.Component: Int] = [:]
rhs.forEach { invertedCmps[$0.key] = -$0.value }
return lhs + invertedCmps
}
// MARK: - Internal DateInRegion Extension
extension DateInRegion {
/// Return a `DateComponent` object from a given set of `Calendar.Component` object with associated values and a specific region
///
/// - parameter values: calendar components to set (with their values)
/// - parameter multipler: optional multipler (by default is nil; to make an inverse component value it should be multipled by -1)
/// - parameter region: optional region to set
///
/// - returns: a `DateComponents` object
internal static func componentsFrom(values: [Calendar.Component: Int], multipler: Int? = nil, setRegion region: Region? = nil) -> DateComponents {
var cmps = DateComponents()
if region != nil {
cmps.calendar = region!.calendar
cmps.calendar!.locale = region!.locale
cmps.timeZone = region!.timeZone
}
values.forEach { pair in
if pair.key != .timeZone && pair.key != .calendar {
cmps.setValue( (multipler == nil ? pair.value : pair.value * multipler!), for: pair.key)
}
}
return cmps
}
/// Adds a time interval to this date.
/// WARNING:
/// This only adjusts an absolute value. If you wish to add calendrical concepts like hours,
/// days, months then you must use a Calendar.
/// That will take into account complexities like daylight saving time,
/// months with different numbers of days, and more.
///
/// - Parameter timeInterval: The value to add, in seconds.
public mutating func addTimeInterval(_ timeInterval: TimeInterval) {
date.addTimeInterval(timeInterval)
}
}

View File

@@ -0,0 +1,185 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public struct DateInRegion: DateRepresentable, Decodable, Encodable, CustomStringConvertible, Comparable, Hashable {
/// Absolute date represented. This date is not associated with any timezone or calendar
/// but represent the absolute number of seconds since Jan 1, 2001 at 00:00:00 UTC.
public internal(set) var date: Date
/// Associated region which define where the date is represented into the world.
public let region: Region
/// Formatter used to transform this object in a string. By default is `nil` because SwiftDate
/// uses the thread shared formatter in order to avoid expensive init of the `DateFormatter` object.
/// However, if you need of a custom behaviour you can set a valid value.
public var customFormatter: DateFormatter?
/// Extract date components by taking care of the region in which the date is expressed.
public var dateComponents: DateComponents {
return region.calendar.dateComponents(DateComponents.allComponentsSet, from: date)
}
/// Description of the date
public var description: String {
let absISODate = DateFormatter.sharedFormatter(forRegion: Region.UTC).string(from: date)
let representedDate = formatter(format: DateFormats.iso8601).string(from: date)
return "{abs_date='\(absISODate)', rep_date='\(representedDate)', region=\(region.description)"
}
/// The interval between the date value and 00:00:00 UTC on 1 January 1970.
public var timeIntervalSince1970: TimeInterval {
return date.timeIntervalSince1970
}
/// Initialize with an absolute date and represent it into given geographic region.
///
/// - Parameters:
/// - date: absolute date to represent.
/// - region: region in which the date is represented. If ignored `defaultRegion` is used instead.
public init(_ date: Date = Date(), region: Region = SwiftDate.defaultRegion) {
self.date = date
self.region = region
}
/// Initialize a new `DateInRegion` by parsing given string.
/// If you know the format of the string you should pass it in order to speed up the parsing process.
/// If you don't know the format leave it `nil` and parse is done between all formats in `DateFormats.builtInAutoFormats`
/// and the ordered list you can provide in `SwiftDate.autoParseFormats` (with attempt priority set on your list).
///
/// - Parameters:
/// - string: string with the date.
/// - format: format of the date.
/// - region: region in which the date is expressed.
public init?(_ string: String, format: String? = nil, region: Region = SwiftDate.defaultRegion) {
guard let date = DateFormats.parse(string: string,
format: format,
region: region) else {
return nil // failed to parse date
}
self.date = date
self.region = region
}
/// Initialize a new `DateInRegion` by parsing given string with the ordered list of passed formats.
/// If you know the format of the string you should pass it in order to speed up the parsing process.
/// If you don't know the format leave it `nil` and parse is done between all formats in `DateFormats.builtInAutoFormats`
/// and the ordered list you can provide in `SwiftDate.autoParseFormats` (with attempt priority set on your list).
///
/// - Parameters:
/// - string: string with the date.
/// - formats: ordered list of formats to use.
/// - region: region in which the date is expressed.
public init?(_ string: String, formats: [String]?, region: Region = SwiftDate.defaultRegion) {
guard let date = DateFormats.parse(string: string,
formats: (formats ?? SwiftDate.autoFormats),
region: region) else {
return nil // failed to parse date
}
self.date = date
self.region = region
}
/// Initialize a new date from the number of seconds passed since Unix Epoch.
///
/// - Parameters:
/// - interval: seconds since Unix Epoch.
/// - region: the region in which the date must be expressed, `nil` uses the default region at UTC timezone
public init(seconds interval: TimeInterval, region: Region = Region.UTC) {
self.date = Date(timeIntervalSince1970: interval)
self.region = region
}
/// Initialize a new date corresponding to the number of milliseconds since the Unix Epoch.
///
/// - Parameters:
/// - interval: seconds since the Unix Epoch timestamp.
/// - region: region in which the date must be expressed, `nil` uses the default region at UTC timezone
public init(milliseconds interval: Int, region: Region = Region.UTC) {
self.date = Date(timeIntervalSince1970: TimeInterval(interval) / 1000)
self.region = region
}
/// Initialize a new date with the opportunity to configure single date components via builder pattern.
/// Date is therfore expressed in passed region (`DateComponents`'s `timezone`,`calendar` and `locale` are ignored
/// and overwritten by the region if not `nil`).
///
/// - Parameters:
/// - configuration: configuration callback
/// - region: region in which the date is expressed.
/// Ignore to use `SwiftDate.defaultRegion`, `nil` to use `DateComponents` data.
public init?(components configuration: ((inout DateComponents) -> Void), region: Region? = SwiftDate.defaultRegion) {
var components = DateComponents()
configuration(&components)
let r = (region ?? Region(fromDateComponents: components))
guard let date = r.calendar.date(from: components) else {
return nil
}
self.date = date
self.region = r
}
/// Initialize a new date with given components.
///
/// - Parameters:
/// - components: components of the date.
/// - region: region in which the date is expressed.
/// Ignore to use `SwiftDate.defaultRegion`, `nil` to use `DateComponents` data.
public init?(components: DateComponents, region: Region?) {
let r = (region ?? Region(fromDateComponents: components))
guard let date = r.calendar.date(from: components) else {
return nil
}
self.date = date
self.region = r
}
/// Initialize a new date with given components.
public init(year: Int, month: Int, day: Int, hour: Int = 0, minute: Int = 0, second: Int = 0, nanosecond: Int = 0, region: Region = SwiftDate.defaultRegion) {
var components = DateComponents()
components.year = year
components.month = month
components.day = day
components.hour = hour
components.minute = minute
components.second = second
components.nanosecond = nanosecond
components.timeZone = region.timeZone
components.calendar = region.calendar
self.date = region.calendar.date(from: components)!
self.region = region
}
/// Return a date in the distant past.
///
/// - Returns: Date instance.
public static func past() -> DateInRegion {
return DateInRegion(Date.distantPast, region: SwiftDate.defaultRegion)
}
/// Return a date in the distant future.
///
/// - Returns: Date instance.
public static func future() -> DateInRegion {
return DateInRegion(Date.distantFuture, region: SwiftDate.defaultRegion)
}
// MARK: - Codable Support
enum CodingKeys: String, CodingKey {
case date
case region
}
}

View File

@@ -0,0 +1,155 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
/// Region define a context both for `Date` and `DateInRegion`.
/// Each `Date` is assigned to the currently set `SwiftDate.default
public struct Region: Decodable, Encodable, Equatable, Hashable, CustomStringConvertible {
// MARK: - Properties
/// Calendar associated with region
public let calendar: Calendar
/// Locale associated with region
public var locale: Locale { return calendar.locale! }
/// Timezone associated with region
public var timeZone: TimeZone { return calendar.timeZone }
/// Description of the object
public var description: String {
return "{calendar='\(calendar.identifier)', timezone='\(timeZone.identifier)', locale='\(locale.identifier)'}"
}
public func hash(into hasher: inout Hasher) {
hasher.combine(calendar)
}
// MARK: Initialization
/// Initialize a new region with given parameters.
///
/// - Parameters:
/// - calendar: calendar for region, if not specified `defaultRegions`'s calendar is used instead.
/// - timezone: timezone for region, if not specified `defaultRegions`'s timezone is used instead.
/// - locale: locale for region, if not specified `defaultRegions`'s locale is used instead.
public init(calendar: CalendarConvertible = SwiftDate.defaultRegion.calendar,
zone: ZoneConvertible = SwiftDate.defaultRegion.timeZone,
locale: LocaleConvertible = SwiftDate.defaultRegion.locale) {
self.calendar = Calendar.newCalendar(calendar, configure: {
$0.timeZone = zone.toTimezone()
$0.locale = locale.toLocale()
})
}
/// Initialize a new Region by reading the `timeZone`,`calendar` and `locale`
/// parameters from the passed `DateComponents` instance.
/// For any `nil` parameter the correspondent `SwiftDate.defaultRegion` is used instead.
///
/// - Parameter fromDateComponents: date components
public init(fromDateComponents components: DateComponents) {
let tz = (components.timeZone ?? Zones.current.toTimezone())
let cal = (components.calendar ?? Calendars.gregorian.toCalendar())
let loc = (cal.locale ?? Locales.current.toLocale())
self.init(calendar: cal, zone: tz, locale: loc)
}
public static var UTC: Region {
return Region(calendar: Calendar.autoupdatingCurrent,
zone: Zones.gmt.toTimezone(),
locale: Locale.autoupdatingCurrent)
}
/// Return the current local device's region where all attributes are set to the device's values.
///
/// - Returns: Region
public static var local: Region {
return Region(calendar: Calendar.autoupdatingCurrent,
zone: TimeZone.autoupdatingCurrent,
locale: Locale.autoupdatingCurrent)
}
/// ISO Region is defined by the gregorian calendar, gmt timezone and english posix locale
public static var ISO: Region {
return Region(calendar: Calendars.gregorian.toCalendar(),
zone: Zones.gmt.toTimezone(),
locale: Locales.englishUnitedStatesComputer)
}
/// Return an auto updating region where all settings are obtained from the current's device settings.
///
/// - Returns: Region
public static var current: Region {
return Region(calendar: Calendar.autoupdatingCurrent,
zone: TimeZone.autoupdatingCurrent,
locale: Locale.autoupdatingCurrent)
}
/// Return a new region in current's device timezone with optional adjust of the calendar and locale.
///
/// - Parameters:
/// - locale: locale to set
/// - calendar: calendar to set
/// - Returns: region
public static func currentIn(locale: LocaleConvertible? = nil, calendar: CalendarConvertible? = nil) -> Region {
return Region(calendar: (calendar ?? SwiftDate.defaultRegion.calendar),
zone: SwiftDate.defaultRegion.timeZone,
locale: (locale ?? SwiftDate.defaultRegion.locale))
}
/// Return the current date expressed into the receiver region.
///
/// - Returns: `DateInRegion` instance
public func nowInThisRegion() -> DateInRegion {
return DateInRegion(Date(), region: self)
}
// MARK: - Codable Support
enum CodingKeys: String, CodingKey {
case calendar
case locale
case timezone
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(calendar.timeZone.identifier, forKey: .timezone)
try container.encode(calendar.locale!.identifier, forKey: .locale)
try container.encode(calendar.identifier.description, forKey: .calendar)
}
public init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
let calId = Calendar.Identifier( try values.decode(String.self, forKey: .calendar))
let tz = (TimeZone(identifier: try values.decode(String.self, forKey: .timezone)) ?? SwiftDate.defaultRegion.timeZone)
let lc = Locale(identifier: try values.decode(String.self, forKey: .locale))
calendar = Calendar.newCalendar(calId, configure: {
$0.timeZone = tz
$0.locale = lc
})
}
// MARK: - Comparable
public static func == (lhs: Region, rhs: Region) -> Bool {
// Note: equality does not consider other parameters than the identifier of the major
// attributes (calendar, timezone and locale). Deeper comparisor must be made directly
// between Calendar (it may fail when you encode/decode autoUpdating calendars).
return
(lhs.calendar.identifier == rhs.calendar.identifier) &&
(lhs.timeZone.identifier == rhs.timeZone.identifier) &&
(lhs.locale.identifier == rhs.locale.identifier)
}
}

View File

@@ -0,0 +1,570 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public protocol DateRepresentable {
// MARK: - Date Components
var year: Int { get }
/// Represented month
var month: Int { get }
/// Represented month name with given style.
///
/// - Parameter style: style in which the name must be formatted.
/// - Returns: name of the month
func monthName(_ style: SymbolFormatStyle) -> String
/// Number of the days in the receiver.
var monthDays: Int { get }
/// Day unit of the receiver.
var day: Int { get }
/// Day of year unit of the receiver
var dayOfYear: Int { get }
/// The number of day in ordinal style format for the receiver in current locale.
/// For example, in the en_US locale, the number 3 is represented as 3rd;
/// in the fr_FR locale, the number 3 is represented as 3e.
@available(iOS 9.0, macOS 10.11, *)
var ordinalDay: String { get }
/// Hour unit of the receiver.
var hour: Int { get }
/// Nearest rounded hour from the date
var nearestHour: Int { get }
/// Minute unit of the receiver.
var minute: Int { get }
/// Second unit of the receiver.
var second: Int { get }
/// Nanosecond unit of the receiver.
var nanosecond: Int { get }
/// Milliseconds in day of the receiver
/// This field behaves exactly like a composite of all time-related fields, not including the zone fields.
/// As such, it also reflects discontinuities of those fields on DST transition days.
/// On a day of DST onset, it will jump forward. On a day of DST cessation, it will jump backward.
/// This reflects the fact that is must be combined with the offset field to obtain a unique local time value.
var msInDay: Int { get }
/// Weekday unit of the receiver.
/// The weekday units are the numbers 1-N (where for the Gregorian calendar N=7 and 1 is Sunday).
var weekday: Int { get }
/// Name of the weekday expressed in given format style.
///
/// - Parameter style: style to express the value.
/// - Parameter locale: locale to use; ignore it to use default's region locale.
/// - Returns: weekday name
func weekdayName(_ style: SymbolFormatStyle, locale: LocaleConvertible?) -> String
/// Week of a year of the receiver.
var weekOfYear: Int { get }
/// Week of a month of the receiver.
var weekOfMonth: Int { get }
/// Ordinal position within the month unit of the corresponding weekday unit.
/// For example, in the Gregorian calendar a weekday ordinal unit of 2 for a
/// weekday unit 3 indicates "the second Tuesday in the month".
var weekdayOrdinal: Int { get }
/// Return the first day number of the week where the receiver date is located.
var firstDayOfWeek: Int { get }
/// Return the last day number of the week where the receiver date is located.
var lastDayOfWeek: Int { get }
/// Relative year for a week within a year calendar unit.
var yearForWeekOfYear: Int { get }
/// Quarter value of the receiver.
var quarter: Int { get }
/// Quarter name expressed in given format style.
///
/// - Parameter style: style to express the value.
/// - Parameter locale: locale to use; ignore it to use default's region locale.
/// - Returns: quarter name
func quarterName(_ style: SymbolFormatStyle, locale: LocaleConvertible?) -> String
/// Era value of the receiver.
var era: Int { get }
/// Name of the era expressed in given format style.
///
/// - Parameter style: style to express the value.
/// - Parameter locale: locale to use; ignore it to use default's region locale.
/// - Returns: era
func eraName(_ style: SymbolFormatStyle, locale: LocaleConvertible?) -> String
/// The current daylight saving time offset of the represented date.
var DSTOffset: TimeInterval { get }
// MARK: - Common Properties
/// Absolute representation of the date
var date: Date { get }
/// Associated region
var region: Region { get }
/// Associated calendar
var calendar: Calendar { get }
/// Extract the date components from the date
var dateComponents: DateComponents { get }
/// Returns whether the given date is in today as boolean.
var isToday: Bool { get }
/// Returns whether the given date is in yesterday.
var isYesterday: Bool { get }
/// Returns whether the given date is in tomorrow.
var isTomorrow: Bool { get }
/// Returns whether the given date is in the weekend.
var isInWeekend: Bool { get }
/// Return true if given date represent a passed date
var isInPast: Bool { get }
/// Return true if given date represent a future date
var isInFuture: Bool { get }
/// Use this object to format the date object.
/// By default this object return the `customFormatter` instance (if set) or the
/// local thread shared formatter (via `sharedFormatter()` func; this is the most typical scenario).
///
/// - Parameters:
/// - format: format string to set.
/// - configuration: optional callback used to configure the object inline.
/// - Returns: formatter instance
func formatter(format: String?, configuration: ((DateFormatter) -> Void)?) -> DateFormatter
/// User this object to get an DateFormatter already configured to format the data object with the associated region.
/// By default this object return the `customFormatter` instance (if set) configured for region or the
/// local thread shared formatter even configured for region (via `sharedFormatter()` func; this is the most typical scenario).
///
/// - format: format string to set.
/// - configuration: optional callback used to configure the object inline.
/// - Returns: formatter instance
func formatterForRegion(format: String?, configuration: ((inout DateFormatter) -> Void)?) -> DateFormatter
/// Set a custom formatter for this object.
/// Typically you should not need to set a value for this property.
/// With a `nil` value SwiftDate will uses the threa shared formatter returned by `sharedFormatter()` function.
/// In case you need to a custom formatter instance you can override the default behaviour by setting a value here.
var customFormatter: DateFormatter? { get set }
/// Return a formatter instance created as singleton into the current caller's thread.
/// This object is used for formatting when no `dateFormatter` is set for the object
/// (this is the common scenario where you want to avoid multiple formatter instances to
/// parse dates; instances of DateFormatter are very expensive to create and you should
/// use a single instance in each thread to perform this kind of tasks).
///
/// - Returns: formatter instance
var sharedFormatter: DateFormatter { get }
// MARK: - Init
/// Initialize a new date by parsing a string.
///
/// - Parameters:
/// - string: string with the date.
/// - format: format used to parse date. Pass `nil` to use built-in formats
/// (if you know you should pass it to optimize the parsing process)
/// - region: region in which the date in `string` is expressed.
init?(_ string: String, format: String?, region: Region)
/// Initialize a new date from a number of seconds since the Unix Epoch.
///
/// - Parameters:
/// - interval: seconds since the Unix Epoch timestamp.
/// - region: region in which the date must be expressed.
init(seconds interval: TimeInterval, region: Region)
/// Initialize a new date corresponding to the number of milliseconds since the Unix Epoch.
///
/// - Parameters:
/// - interval: seconds since the Unix Epoch timestamp.
/// - region: region in which the date must be expressed.
init(milliseconds interval: Int, region: Region)
/// Initialize a new date with the opportunity to configure single date components via builder pattern.
/// Date is therfore expressed in passed region (`DateComponents`'s `timezone`,`calendar` and `locale` are ignored
/// and overwritten by the region if not `nil`).
///
/// - Parameters:
/// - configuration: configuration callback
/// - region: region in which the date is expressed. Ignore to use `SwiftDate.defaultRegion`,
/// `nil` to use `DateComponents` data.
init?(components configuration: ((inout DateComponents) -> Void), region: Region?)
/// Initialize a new date with time components passed.
///
/// - Parameters:
/// - components: date components
/// - region: region in which the date is expressed. Ignore to use `SwiftDate.defaultRegion`,
/// `nil` to use `DateComponents` data.
init?(components: DateComponents, region: Region?)
/// Initialize a new date with given components.
init(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Int, nanosecond: Int, region: Region)
// MARK: - Conversion
/// Convert a date to another region.
///
/// - Parameter region: destination region in which the date must be represented.
/// - Returns: converted date
func convertTo(region: Region) -> DateInRegion
// MARK: - To String Formatting
/// Convert date to a string using passed pre-defined style.
///
/// - Parameter style: formatter style, `nil` to use `standard` style
/// - Returns: string representation of the date
func toString(_ style: DateToStringStyles?) -> String
/// Convert date to a string using custom date format.
///
/// - Parameters:
/// - format: format of the string representation
/// - locale: locale to fix a custom locale, `nil` to use associated region's locale
/// - Returns: string representation of the date
func toFormat(_ format: String, locale: LocaleConvertible?) -> String
/// Convert a date to a string representation relative to another reference date (or current
/// if not passed).
///
/// - Parameters:
/// - since: reference date, if `nil` current is used.
/// - style: style to use to format relative date.
/// - locale: force locale print, `nil` to use the date own region's locale
/// - Returns: string representation of the date.
func toRelative(since: DateInRegion?, style: RelativeFormatter.Style?, locale: LocaleConvertible?) -> String
/// Return ISO8601 representation of the date
///
/// - Parameter options: optional options, if nil extended iso format is used
func toISO(_ options: ISOFormatter.Options?) -> String
/// Return DOTNET compatible representation of the date.
///
/// - Returns: string representation of the date
func toDotNET() -> String
/// Return SQL compatible representation of the date.
///
/// - Returns: string represenation of the date
func toSQL() -> String
/// Return RSS compatible representation of the date
///
/// - Parameter alt: `true` to return altRSS version, `false` to return the standard RSS representation
/// - Returns: string representation of the date
func toRSS(alt: Bool) -> String
// MARK: - Extract Components
/// Extract time components for elapsed interval between the receiver date
/// and a reference date.
///
/// - Parameters:
/// - units: units to extract.
/// - refDate: reference date
/// - Returns: extracted time units
func toUnits(_ units: Set<Calendar.Component>, to refDate: DateRepresentable) -> [Calendar.Component: Int]
/// Extract time unit component from given date.
///
/// - Parameters:
/// - unit: time component to extract
/// - refDate: reference date
/// - Returns: extracted time unit value
func toUnit(_ unit: Calendar.Component, to refDate: DateRepresentable) -> Int
}
public extension DateRepresentable {
// MARK: - Common Properties
var calendar: Calendar {
return region.calendar
}
// MARK: - Date Components Properties
var year: Int {
return dateComponents.year!
}
var month: Int {
return dateComponents.month!
}
var monthDays: Int {
return calendar.range(of: .day, in: .month, for: date)!.count
}
func monthName(_ style: SymbolFormatStyle) -> String {
let formatter = self.formatter(format: nil)
let idx = (month - 1)
switch style {
case .default: return formatter.monthSymbols[idx]
case .defaultStandalone: return formatter.standaloneMonthSymbols[idx]
case .short: return formatter.shortMonthSymbols[idx]
case .standaloneShort: return formatter.shortStandaloneMonthSymbols[idx]
case .veryShort: return formatter.veryShortMonthSymbols[idx]
case .standaloneVeryShort: return formatter.veryShortStandaloneMonthSymbols[idx]
}
}
var day: Int {
return dateComponents.day!
}
var dayOfYear: Int {
return calendar.ordinality(of: .day, in: .year, for: date)!
}
@available(iOS 9.0, macOS 10.11, *)
var ordinalDay: String {
let day = self.day
return DateFormatter.sharedOrdinalNumberFormatter(locale: region.locale).string(from: day as NSNumber) ?? "\(day)"
}
var hour: Int {
return dateComponents.hour!
}
var nearestHour: Int {
let newDate = (date + (date.minute >= 30 ? 60 - date.minute : -date.minute).minutes)
return newDate.in(region: region).hour
}
var minute: Int {
return dateComponents.minute!
}
var second: Int {
return dateComponents.second!
}
var nanosecond: Int {
return dateComponents.nanosecond!
}
var msInDay: Int {
return (calendar.ordinality(of: .second, in: .day, for: date)! * 1000)
}
var weekday: Int {
return dateComponents.weekday!
}
func weekdayName(_ style: SymbolFormatStyle, locale: LocaleConvertible? = nil) -> String {
let formatter = self.formatter(format: nil) {
$0.locale = (locale ?? self.region.locale).toLocale()
}
let idx = (weekday - 1)
switch style {
case .default: return formatter.weekdaySymbols[idx]
case .defaultStandalone: return formatter.standaloneWeekdaySymbols[idx]
case .short: return formatter.shortWeekdaySymbols[idx]
case .standaloneShort: return formatter.shortStandaloneWeekdaySymbols[idx]
case .veryShort: return formatter.veryShortWeekdaySymbols[idx]
case .standaloneVeryShort: return formatter.veryShortStandaloneWeekdaySymbols[idx]
}
}
var weekOfYear: Int {
return dateComponents.weekOfYear!
}
var weekOfMonth: Int {
return dateComponents.weekOfMonth!
}
var weekdayOrdinal: Int {
return dateComponents.weekdayOrdinal!
}
var yearForWeekOfYear: Int {
return dateComponents.yearForWeekOfYear!
}
var firstDayOfWeek: Int {
return date.dateAt(.startOfWeek).day
}
var lastDayOfWeek: Int {
return date.dateAt(.endOfWeek).day
}
var quarter: Int {
let monthsInQuarter = Double(Calendar.current.monthSymbols.count) / 4.0
return Int(ceil( Double(month) / monthsInQuarter))
}
var isToday: Bool {
return calendar.isDateInToday(date)
}
var isYesterday: Bool {
return calendar.isDateInYesterday(date)
}
var isTomorrow: Bool {
return calendar.isDateInTomorrow(date)
}
var isInWeekend: Bool {
return calendar.isDateInWeekend(date)
}
var isInPast: Bool {
return date < Date()
}
var isInFuture: Bool {
return date > Date()
}
func quarterName(_ style: SymbolFormatStyle, locale: LocaleConvertible? = nil) -> String {
let formatter = self.formatter(format: nil) {
$0.locale = (locale ?? self.region.locale).toLocale()
}
let idx = (quarter - 1)
switch style {
case .default: return formatter.quarterSymbols[idx]
case .defaultStandalone: return formatter.standaloneQuarterSymbols[idx]
case .short, .veryShort: return formatter.shortQuarterSymbols[idx]
case .standaloneShort, .standaloneVeryShort: return formatter.shortStandaloneQuarterSymbols[idx]
}
}
var era: Int {
return dateComponents.era!
}
func eraName(_ style: SymbolFormatStyle, locale: LocaleConvertible? = nil) -> String {
let formatter = self.formatter(format: nil) {
$0.locale = (locale ?? self.region.locale).toLocale()
}
let idx = (era - 1)
switch style {
case .default, .defaultStandalone: return formatter.longEraSymbols[idx]
case .short, .standaloneShort, .veryShort, .standaloneVeryShort: return formatter.eraSymbols[idx]
}
}
var DSTOffset: TimeInterval {
return region.timeZone.daylightSavingTimeOffset(for: date)
}
// MARK: - Date Formatters
func formatter(format: String? = nil, configuration: ((DateFormatter) -> Void)? = nil) -> DateFormatter {
let formatter = (customFormatter ?? sharedFormatter)
if let dFormat = format {
formatter.dateFormat = dFormat
}
configuration?(formatter)
return formatter
}
func formatterForRegion(format: String? = nil, configuration: ((inout DateFormatter) -> Void)? = nil) -> DateFormatter {
var formatter = self.formatter(format: format, configuration: {
$0.timeZone = self.region.timeZone
$0.calendar = self.calendar
$0.locale = self.region.locale
})
configuration?(&formatter)
return formatter
}
var sharedFormatter: DateFormatter {
return DateFormatter.sharedFormatter(forRegion: region)
}
func toString(_ style: DateToStringStyles? = nil) -> String {
guard let style = style else {
return DateToStringStyles.standard.toString(self)
}
return style.toString(self)
}
func toFormat(_ format: String, locale: LocaleConvertible? = nil) -> String {
guard let fixedLocale = locale else {
return DateToStringStyles.custom(format).toString(self)
}
let fixedRegion = Region(calendar: region.calendar, zone: region.timeZone, locale: fixedLocale)
let fixedDate = DateInRegion(date.date, region: fixedRegion)
return DateToStringStyles.custom(format).toString(fixedDate)
}
func toRelative(since: DateInRegion? = nil, style: RelativeFormatter.Style? = nil, locale: LocaleConvertible? = nil) -> String {
return RelativeFormatter.format(date: self, to: since, style: style, locale: locale?.toLocale())
}
func toISO(_ options: ISOFormatter.Options? = nil) -> String {
return DateToStringStyles.iso( (options ?? ISOFormatter.Options([.withInternetDateTime])) ).toString(self)
}
func toDotNET() -> String {
return DOTNETFormatter.format(self, options: nil)
}
func toRSS(alt: Bool) -> String {
switch alt {
case true: return DateToStringStyles.altRSS.toString(self)
case false: return DateToStringStyles.rss.toString(self)
}
}
func toSQL() -> String {
return DateToStringStyles.sql.toString(self)
}
// MARK: - Conversion
func convertTo(region: Region) -> DateInRegion {
return DateInRegion(date, region: region)
}
// MARK: - Extract Time Components
func toUnits(_ units: Set<Calendar.Component>, to refDate: DateRepresentable) -> [Calendar.Component: Int] {
let cal = region.calendar
let components = cal.dateComponents(units, from: date, to: refDate.date)
return components.toDict()
}
func toUnit(_ unit: Calendar.Component, to refDate: DateRepresentable) -> Int {
let cal = region.calendar
let components = cal.dateComponents([unit], from: date, to: refDate.date)
return components.value(for: unit)!
}
}

View File

@@ -0,0 +1,69 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public class DOTNETParser: StringToDateTransformable {
internal static let pattern = "\\/Date\\((-?\\d+)((?:[\\+\\-]\\d+)?)\\)\\/"
public static func parse(_ string: String) -> (seconds: TimeInterval, tz: TimeZone)? {
do {
let parser = try NSRegularExpression(pattern: DOTNETParser.pattern, options: .caseInsensitive)
guard let match = parser.firstMatch(in: string, options: .reportCompletion, range: NSRange(location: 0, length: string.count)) else {
return nil
}
guard let milliseconds = TimeInterval((string as NSString).substring(with: match.range(at: 1))) else { return nil }
// Parse timezone
let raw_tz = ((string as NSString).substring(with: match.range(at: 2)) as NSString)
guard raw_tz.length > 1 else {
return nil
}
let tz_sign: String = raw_tz.substring(to: 1)
if tz_sign != "+" && tz_sign != "-" {
return nil
}
let tz_hours: String = raw_tz.substring(with: NSRange(location: 1, length: 2))
let tz_minutes: String = raw_tz.substring(with: NSRange(location: 3, length: 2))
let tz_offset = (Int(tz_hours)! * 60 * 60) + ( Int(tz_minutes)! * 60 )
guard let tz_obj = TimeZone(secondsFromGMT: tz_offset) else {
return nil
}
return ( (milliseconds / 1000), tz_obj )
} catch {
return nil
}
}
public static func parse(_ string: String, region: Region?, options: Any?) -> DateInRegion? {
guard let result = DOTNETParser.parse(string) else { return nil }
let regionSet = region ?? Region.ISO
let adaptedRegion = Region(calendar: regionSet.calendar, zone: regionSet.timeZone, locale: regionSet.locale)
return DateInRegion(seconds: result.seconds, region: adaptedRegion)
}
}
public class DOTNETFormatter: DateToStringTrasformable {
public static func format(_ date: DateRepresentable, options: Any?) -> String {
let milliseconds = (date.date.timeIntervalSince1970 * 1000.0)
let tzOffsets = (date.region.timeZone.secondsFromGMT(for: date.date) / 3600)
let formattedStr = String(format: "/Date(%.0f%+03d00)/", milliseconds, tzOffsets)
return formattedStr
}
}

View File

@@ -0,0 +1,129 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public protocol DateToStringTrasformable {
static func format(_ date: DateRepresentable, options: Any?) -> String
}
public protocol StringToDateTransformable {
static func parse(_ string: String, region: Region?, options: Any?) -> DateInRegion?
}
// MARK: - Formatters
/// Format to represent a date to string
///
/// - iso: standard iso format. The ISO8601 formatted date, time and millisec "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
/// - extended: Extended format. "eee dd-MMM-yyyy GG HH:mm:ss.SSS zzz"
/// - rss: The RSS formatted date "EEE, d MMM yyyy HH:mm:ss ZZZ" i.e. "Fri, 09 Sep 2011 15:26:08 +0200"
/// - altRSS: The Alternative RSS formatted date "d MMM yyyy HH:mm:ss ZZZ" i.e. "09 Sep 2011 15:26:08 +0200"
/// - dotNet: The dotNet formatted date "/Date(%d%d)/" i.e. "/Date(1268123281843)/"
/// - httpHeader: The http header formatted date "EEE, dd MMM yyyy HH:mm:ss zzz" i.e. "Tue, 15 Nov 1994 12:45:26 GMT"
/// - custom: custom string format
/// - standard: A generic standard format date i.e. "EEE MMM dd HH:mm:ss Z yyyy"
/// - date: Date only format (short = "2/27/17", medium = "Feb 27, 2017", long = "February 27, 2017", full = "Monday, February 27, 2017"
/// - time: Time only format (short = "2:22 PM", medium = "2:22:06 PM", long = "2:22:06 PM EST", full = "2:22:06 PM Eastern Standard Time"
/// - dateTime: Date/Time format (short = "2/27/17, 2:22 PM", medium = "Feb 27, 2017, 2:22:06 PM", long = "February 27, 2017 at 2:22:06 PM EST", full = "Monday, February 27, 2017 at 2:22:06 PM Eastern Standard Time"
public enum DateToStringStyles {
case iso(_: ISOFormatter.Options)
case extended
case rss
case altRSS
case dotNet
case httpHeader
case sql
case date(_: DateFormatter.Style)
case time(_: DateFormatter.Style)
case dateTime(_: DateFormatter.Style)
case custom(_: String)
case standard
case relative(style: RelativeFormatter.Style?)
public func toString(_ date: DateRepresentable) -> String {
switch self {
case .iso(let opts): return ISOFormatter.format(date, options: opts)
case .extended: return date.formatterForRegion(format: DateFormats.extended).string(from: date.date)
case .rss: return date.formatterForRegion(format: DateFormats.rss).string(from: date.date)
case .altRSS: return date.formatterForRegion(format: DateFormats.altRSS).string(from: date.date)
case .sql: return date.formatterForRegion(format: DateFormats.sql).string(from: date.date)
case .dotNet: return DOTNETFormatter.format(date, options: nil)
case .httpHeader: return date.formatterForRegion(format: DateFormats.httpHeader).string(from: date.date)
case .custom(let format): return date.formatterForRegion(format: format).string(from: date.date)
case .standard: return date.formatterForRegion(format: DateFormats.standard).string(from: date.date)
case .date(let style):
return date.formatterForRegion(format: nil, configuration: {
$0.dateStyle = style
$0.timeStyle = .none
}).string(from: date.date)
case .time(let style):
return date.formatterForRegion(format: nil, configuration: {
$0.dateStyle = .none
$0.timeStyle = style
}).string(from: date.date)
case .dateTime(let style):
return date.formatterForRegion(format: nil, configuration: {
$0.dateStyle = style
$0.timeStyle = style
}).string(from: date.date)
case .relative(let style):
return RelativeFormatter.format(date, options: style)
}
}
}
// MARK: - Parsers
/// String to date transform
///
/// - iso: standard automatic iso parser (evaluate the date components automatically)
/// - extended: Extended format. "eee dd-MMM-yyyy GG HH:mm:ss.SSS zzz"
/// - rss: The RSS formatted date "EEE, d MMM yyyy HH:mm:ss ZZZ" i.e. "Fri, 09 Sep 2011 15:26:08 +0200"
/// - altRSS: The Alternative RSS formatted date "d MMM yyyy HH:mm:ss ZZZ" i.e. "09 Sep 2011 15:26:08 +0200"
/// - dotNet: The dotNet formatted date "/Date(%d%d)/" i.e. "/Date(1268123281843)/"
/// - httpHeader: The http header formatted date "EEE, dd MMM yyyy HH:mm:ss zzz" i.e. "Tue, 15 Nov 1994 12:45:26 GMT"
/// - strict: custom string format with lenient options active
/// - custom: custom string format
/// - standard: A generic standard format date i.e. "EEE MMM dd HH:mm:ss Z yyyy"
public enum StringToDateStyles {
case iso(_: ISOParser.Options)
case extended
case rss
case altRSS
case dotNet
case sql
case httpHeader
case strict(_: String)
case custom(_: String)
case standard
public func toDate(_ string: String, region: Region) -> DateInRegion? {
switch self {
case .iso(let options): return ISOParser.parse(string, region: region, options: options)
case .custom(let format): return DateInRegion(string, format: format, region: region)
case .extended: return DateInRegion(string, format: DateFormats.extended, region: region)
case .sql: return DateInRegion(string, format: DateFormats.sql, region: region)
case .rss: return DateInRegion(string, format: DateFormats.rss, region: Region.ISO)?.convertTo(locale: region.locale)
case .altRSS: return DateInRegion(string, format: DateFormats.altRSS, region: Region.ISO)?.convertTo(locale: region.locale)
case .dotNet: return DOTNETParser.parse(string, region: region, options: nil)
case .httpHeader: return DateInRegion(string, format: DateFormats.httpHeader, region: region)
case .standard: return DateInRegion(string, format: DateFormats.standard, region: region)
case .strict(let format):
let formatter = DateFormatter.sharedFormatter(forRegion: region, format: format)
formatter.isLenient = false
guard let absDate = formatter.date(from: string) else { return nil }
return DateInRegion(absDate, region: region)
}
}
}

View File

@@ -0,0 +1,179 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public class ISOFormatter: DateToStringTrasformable {
public struct Options: OptionSet {
public let rawValue: Int
public init(rawValue: Int) {
self.rawValue = rawValue
}
/// The date representation includes the year. The format for year is inferred based on the other specified options.
/// - If withWeekOfYear is specified, YYYY is used.
/// - Otherwise, yyyy is used.
public static let withYear = ISOFormatter.Options(rawValue: 1 << 0)
/// The date representation includes the month. The format for month is MM.
public static let withMonth = ISOFormatter.Options(rawValue: 1 << 1)
/// The date representation includes the week of the year.
/// The format for week of year is ww, including the W prefix.
public static let withWeekOfYear = ISOFormatter.Options(rawValue: 1 << 2)
/// The date representation includes the day. The format for day is inferred based on provided options:
/// - If withMonth is specified, dd is used.
/// - If withWeekOfYear is specified, ee is used.
/// - Otherwise, DDD is used.
public static let withDay = ISOFormatter.Options(rawValue: 1 << 3)
/// The date representation includes the time. The format for time is HH:mm:ss.
public static let withTime = ISOFormatter.Options(rawValue: 1 << 4)
/// The date representation includes the timezone. The format for timezone is ZZZZZ.
public static let withTimeZone = ISOFormatter.Options(rawValue: 1 << 5)
/// The date representation uses a space ( ) instead of T between the date and time.
public static let withSpaceBetweenDateAndTime = ISOFormatter.Options(rawValue: 1 << 6)
/// The date representation uses the dash separator (-) in the date.
public static let withDashSeparatorInDate = ISOFormatter.Options(rawValue: 1 << 7)
/// The date representation uses the colon separator (:) in the time.
public static let withFullDate = ISOFormatter.Options(rawValue: 1 << 8)
/// The date representation includes the hour, minute, and second.
public static let withFullTime = ISOFormatter.Options(rawValue: 1 << 9)
/// The format used for internet date times, according to the RFC 3339 standard.
/// Equivalent to specifying withFullDate, withFullTime, withDashSeparatorInDate,
/// withColonSeparatorInTime, and withColonSeparatorInTimeZone.
public static let withInternetDateTime = ISOFormatter.Options(rawValue: 1 << 10)
// The format used for internet date times; it's similar to .withInternetDateTime
// but include milliseconds ('yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ').
public static let withInternetDateTimeExtended = ISOFormatter.Options(rawValue: 1 << 11)
/// Print the timezone in format `ZZZ` instead of `ZZZZZ`
/// An example outout maybe be `+0200` instead of `+02:00`.
public static let withoutTZSeparators = ISOFormatter.Options(rawValue: 1 << 12)
/// Evaluate formatting string
public var dateFormat: String {
if contains(.withInternetDateTimeExtended) || contains(.withoutTZSeparators) {
if contains(.withoutTZSeparators) {
return "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"
}
return "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
}
if contains(.withInternetDateTime) {
if contains(.withoutTZSeparators) {
return "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"
}
return "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
}
var format: String = ""
if contains(.withFullDate) {
format += "yyyy-MM-dd"
} else {
if contains(.withYear) {
if contains(.withWeekOfYear) {
format += "YYYY"
} else if contains(.withMonth) || contains(.withDay) {
format += "yyyy"
} else {
// not valid
}
}
if contains(.withMonth) {
if contains(.withYear) || contains(.withDay) || contains(.withWeekOfYear) {
format += "MM"
} else {
// not valid
}
}
if contains(.withWeekOfYear) {
if contains(.withDay) {
format += "'W'ww"
} else {
if contains(.withYear) || contains(.withMonth) {
if contains(.withDashSeparatorInDate) {
format += "-'W'ww"
} else {
format += "'W'ww"
}
} else {
// not valid
}
}
}
if contains(.withDay) {
if contains(.withWeekOfYear) {
format += "FF"
} else if contains(.withMonth) {
format += "dd"
} else if contains(.withYear) {
if contains(.withDashSeparatorInDate) {
format += "-DDD"
} else {
format += "DDD"
}
} else {
// not valid
}
}
}
let hasDate = (contains(.withFullDate) || contains(.withMonth) || contains(.withDay) || contains(.withWeekOfYear) || contains(.withYear))
if hasDate && (contains(.withFullTime) || contains(.withTimeZone) || contains(.withTime)) {
if contains(.withSpaceBetweenDateAndTime) {
format += " "
} else {
format += "'T'"
}
}
if contains(.withFullTime) {
format += "HH:mm:ssZZZZZ"
} else {
if contains(.withTime) {
format += "HH:mm:ss"
}
if contains(.withTimeZone) {
if contains(.withoutTZSeparators) {
return "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"
}
format += "ZZZZZ"
}
}
return format
}
}
public static func format(_ date: DateRepresentable, options: Any?) -> String {
let formatOptions = ((options as? ISOFormatter.Options) ?? ISOFormatter.Options([.withInternetDateTime]))
let formatter = date.formatter(format: formatOptions.dateFormat) {
$0.locale = Locales.englishUnitedStatesComputer.toLocale() // fix for 12/24h
$0.timeZone = date.region.timeZone
$0.calendar = Calendars.gregorian.toCalendar()
}
return formatter.string(from: date.date)
}
}

View File

@@ -0,0 +1,932 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
// swiftlint:disable file_length
import Foundation
/// This defines all possible errors you can encounter parsing ISO8601 string
///
/// - eof: end of file
/// - notDigit: expected digit, value cannot be parsed as int
/// - notDouble: expected double digit, value cannot be parsed as double
/// - invalid: invalid state reached. Something in the format is not correct
public enum ISO8601ParserError: Error {
case eof
case notDigit
case notDouble
case invalid
}
fileprivate extension Int {
/// Return `true` if current year is a leap year, `false` otherwise
var isLeapYear: Bool {
return ((self % 4) == 0) && (((self % 100) != 0) || ((self % 400) == 0))
}
}
// MARK: - Internal Extension for UnicodeScalar type
internal extension UnicodeScalar {
/// return `true` if current character is a digit (arabic), `false` otherwise
var isDigit: Bool {
return "0"..."9" ~= self
}
/// return `true` if current character is a space
var isSpace: Bool {
return CharacterSet.whitespaces.contains(self)
}
}
/// This is the ISO8601 Parser class: it evaluates automatically the format of the ISO8601 date
/// and attempt to parse it in a valid `Date` object.
/// Resulting date also includes Time Zone settings and a property which allows you to inspect
/// single date components.
///
/// This work is inspired to the original ISO8601DateFormatter class written in ObjC by
/// Peter Hosey (available here https://bitbucket.org/boredzo/iso-8601-parser-unparser).
/// I've made a Swift porting and fixed some issues when parsing several ISO8601 date variants.
// swiftlint:disable type_body_length
public class ISOParser: StringToDateTransformable {
/// Internal structure
internal enum Weekday: Int {
case monday = 0
case tuesday = 1
case wednesday = 2
case thursday = 3
}
public struct Options {
/// Time separator character. By default is `:`.
var time_separator: ISOParser.ISOChar = ":"
/// Strict parsing. By default is `false`.
var strict: Bool = false
public init(strict: Bool = false) {
self.strict = strict
}
}
/// Some typealias to make the code cleaner
public typealias ISOString = String.UnicodeScalarView
public typealias ISOIndex = String.UnicodeScalarView.Index
public typealias ISOChar = UnicodeScalar
public typealias ISOParsedDate = (date: Date?, timezone: TimeZone?)
/// This represent the internal parser status representation
public struct ParsedDate {
/// Type of date parsed
///
/// - monthAndDate: month and date style
/// - week: date with week number
/// - dateOnly: date only
// swiftlint:disable nesting
public enum DateStyle {
case monthAndDate
case week
case dateOnly
}
/// Parsed year value
var year: Int = 0
/// Parsed month or week number
var month_or_week: Int = 0
/// Parsed day value
var day: Int = 0
/// Parsed hour value
var hour: Int = 0
/// Parsed minutes value
var minute: TimeInterval = 0.0
/// Parsed seconds value
var seconds: TimeInterval = 0.0
/// Parsed nanoseconds value
var nanoseconds: TimeInterval = 0.0
/// Parsed weekday number (1=monday, 7=sunday)
/// If `nil` source string has not specs about weekday.
var weekday: Int?
/// Timezone parsed hour value
var tz_hour: Int = 0
/// Timezone parsed minute value
var tz_minute: Int = 0
/// Type of parsed date
var type: DateStyle = .monthAndDate
/// Parsed timezone object
var timezone: TimeZone?
}
/// Source generation calendar.
private var srcCalendar = Calendars.gregorian.toCalendar()
/// Source raw parsed values
private var date = ParsedDate()
/// Source string represented as unicode scalars
private var string: ISOString
/// Current position of the parser in source string.
/// Initially is equal to `string.startIndex`
private var cIdx: ISOIndex
/// Just a shortcut to the last index in source string
private var eIdx: ISOIndex
/// Lenght of the string
private var length: Int
/// Number of hyphens characters found before any value
/// Consequential "-" are used to define implicit values in dates.
private var hyphens: Int = 0
/// Private date components used for default values
private var now_cmps: DateComponents
/// Configuration used for parser
private var options: ISOParser.Options
/// Date components parsed
private(set) var date_components: DateComponents?
/// Parsed date
private(set) var parsedDate: Date?
/// Parsed timezone
private(set) var parsedTimeZone: TimeZone?
/// Date adjusted at parsed timezone
private var dateInTimezone: Date? {
get {
srcCalendar.timeZone = date.timezone ?? TimeZone(identifier: "UTC")!
return srcCalendar.date(from: date_components!)
}
}
/// Initialize a new parser with a source ISO8601 string to parse
/// Parsing is done during initialization; any exception is reported
/// before allocating.
///
/// - Parameters:
/// - src: source ISO8601 string
/// - config: configuration used for parsing
/// - Throws: throw an `ISO8601Error` if parsing operation fails
public init?(_ src: String, options: ISOParser.Options? = nil) {
let src_trimmed = src.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
guard src_trimmed.count > 0 else {
return nil
}
string = src_trimmed.unicodeScalars
length = src_trimmed.count
cIdx = string.startIndex
eIdx = string.endIndex
self.options = (options ?? ISOParser.Options())
self.now_cmps = srcCalendar.dateComponents([.year, .month, .day], from: Date())
var idx = cIdx
while idx < eIdx {
if string[idx] == "-" { hyphens += 1 } else { break }
idx = string.index(after: idx)
}
do {
try parse()
} catch {
return nil
}
}
// MARK: - Internal Parser
/// Private parsing function
///
/// - Throws: throw an `ISO8601Error` if parsing operation fails
@discardableResult
private func parse() throws -> ISOParsedDate {
// PARSE DATE
if current() == "T" {
// There is no date here, only a time.
// Set the date to now; then we'll parse the time.
next()
guard current()?.isDigit ?? false else {
throw ISO8601ParserError.invalid
}
date.year = now_cmps.year!
date.month_or_week = now_cmps.month!
date.day = now_cmps.day!
} else {
moveUntil(is: "-")
let is_time_only = (string.contains("T") == false && string.contains(":") && !string.contains("-"))
if is_time_only == false {
var (num_digits, segment) = try read_int()
switch num_digits {
case 0: try parse_digits_0(num_digits, &segment)
case 8: try parse_digits_8(num_digits, &segment)
case 6: try parse_digits_6(num_digits, &segment)
case 4: try parse_digits_4(num_digits, &segment)
case 5: try parse_digits_5(num_digits, &segment)
case 1: try parse_digits_1(num_digits, &segment)
case 2: try parse_digits_2(num_digits, &segment)
case 7: try parse_digits_7(num_digits, &segment) //YYYY DDD (ordinal date)
case 3: try parse_digits_3(num_digits, &segment) //--DDD (ordinal date, implicit year)
default: throw ISO8601ParserError.invalid
}
} else {
date.year = now_cmps.year!
date.month_or_week = now_cmps.month!
date.day = now_cmps.day!
}
}
var hasTime = false
if current()?.isSpace ?? false || current() == "T" {
hasTime = true
next()
}
// PARSE TIME
if current()?.isDigit ?? false == true {
let time_sep = options.time_separator
let hasTimeSeparator = string.contains(time_sep)
date.hour = try read_int(2).value
if hasTimeSeparator == false && hasTime {
date.minute = TimeInterval(try read_int(2).value)
} else if current() == time_sep {
next()
if time_sep == "," || time_sep == "." {
//We can't do fractional minutes when '.' is the segment separator.
//Only allow whole minutes and whole seconds.
date.minute = TimeInterval(try read_int(2).value)
if current() == time_sep {
next()
date.seconds = TimeInterval(try read_int(2).value)
}
} else {
//Allow a fractional minute.
//If we don't get a fraction, look for a seconds segment.
//Otherwise, the fraction of a minute is the seconds.
date.minute = try read_double().value
if current() != ":" {
var int_part: Double = 0.0
var frac_part: Double = 0.0
frac_part = modf(date.minute, &int_part)
date.minute = int_part
date.seconds = frac_part
if date.seconds > Double.ulpOfOne {
// Convert fraction (e.g. .5) into seconds (e.g. 30).
date.seconds *= 60
} else if current() == time_sep {
next()
// date.seconds = try read_double().value
let value = try modf(read_double().value)
date.nanoseconds = TimeInterval(round(value.1 * 1000) * 1_000_000)
date.seconds = TimeInterval(value.0)
}
} else {
// fractional minutes
next()
let value = try modf(read_double().value)
date.nanoseconds = TimeInterval(round(value.1 * 1000) * 1_000_000)
date.seconds = TimeInterval(value.0)
}
}
}
if options.strict == false {
if cIdx != eIdx && current()?.isSpace ?? false == true {
next()
}
}
if cIdx != eIdx {
switch current() {
case "Z":
date.timezone = TimeZone(abbreviation: "UTC")
case "+", "-":
let is_negative = current() == "-"
next()
if current()?.isDigit ?? false == true {
//Read hour offset.
date.tz_hour = try read_int(2).value
if is_negative == true { date.tz_hour = -date.tz_hour }
// Optional separator
if current() == time_sep {
next()
}
if current()?.isDigit ?? false {
// Read minute offset
date.tz_minute = try read_int(2).value
if is_negative == true { date.tz_minute = -date.tz_minute }
}
let timezone_offset = (date.tz_hour * 3600) + (date.tz_minute * 60)
date.timezone = TimeZone(secondsFromGMT: timezone_offset)
}
default:
break
}
}
}
date_components = DateComponents()
date_components!.year = date.year
date_components!.day = date.day
date_components!.hour = date.hour
date_components!.minute = Int(date.minute)
date_components!.second = Int(date.seconds)
date_components!.nanosecond = Int(date.nanoseconds)
switch date.type {
case .monthAndDate:
date_components!.month = date.month_or_week
case .week:
//Adapted from <http://personal.ecu.edu/mccartyr/ISOwdALG.txt>.
//This works by converting the week date into an ordinal date, then letting the next case handle it.
let prevYear = date.year - 1
let YY = prevYear % 100
let prevC = prevYear - YY
let prevG = YY + YY / 4
let isLeapYear = (((prevC / 100) % 4) * 5)
let jan1Weekday = ((isLeapYear + prevG) % 7)
var day = ((8 - jan1Weekday) + (7 * (jan1Weekday > Weekday.thursday.rawValue ? 1 : 0)))
day += (date.day - 1) + (7 * (date.month_or_week - 2))
if let weekday = date.weekday {
//date_components!.weekday = weekday
date_components!.day = day + weekday
} else {
date_components!.day = day
}
case .dateOnly: //An "ordinal date".
break
}
//cfg.calendar.timeZone = date.timezone ?? TimeZone(identifier: "UTC")!
//parsedDate = cfg.calendar.date(from: date_components!)
let tz = date.timezone ?? TimeZone(identifier: "UTC")!
parsedTimeZone = tz
srcCalendar.timeZone = tz
parsedDate = srcCalendar.date(from: date_components!)
return (parsedDate, parsedTimeZone)
}
private func parse_digits_3(_ num_digits: Int, _ segment: inout Int) throws {
//Technically, the standard only allows one hyphen. But it says that two hyphens is the logical implementation, and one was dropped for brevity. So I have chosen to allow the missing hyphen.
if hyphens < 1 || (hyphens > 2 && options.strict == false) {
throw ISO8601ParserError.invalid
}
date.day = segment
date.year = now_cmps.year!
date.type = .dateOnly
if options.strict == true && (date.day > (365 + (date.year.isLeapYear ? 1 : 0))) {
throw ISO8601ParserError.invalid
}
}
private func parse_digits_7(_ num_digits: Int, _ segment: inout Int) throws {
guard hyphens == 0 else { throw ISO8601ParserError.invalid }
date.day = segment % 1000
date.year = segment / 1000
date.type = .dateOnly
if options.strict == true && (date.day > (365 + (date.year.isLeapYear ? 1 : 0))) {
throw ISO8601ParserError.invalid
}
}
private func parse_digits_2(_ num_digits: Int, _ segment: inout Int) throws {
func parse_hyphens_3(_ num_digits: Int, _ segment: inout Int) throws {
date.year = now_cmps.year!
date.month_or_week = now_cmps.month!
date.day = segment
}
func parse_hyphens_2(_ num_digits: Int, _ segment: inout Int) throws {
date.year = now_cmps.year!
date.month_or_week = segment
if current() == "-" {
next()
date.day = try read_int(2).value
} else {
date.day = 1
}
}
func parse_hyphens_1(_ num_digits: Int, _ segment: inout Int) throws {
let current_year = now_cmps.year!
let current_century = (current_year % 100)
date.year = segment + (current_year - current_century)
if num_digits == 1 { // implied decade
date.year += current_century - (current_year % 10)
}
if current() == "-" {
next()
if current() == "W" {
next()
date.type = .week
}
date.month_or_week = try read_int(2).value
if current() == "-" {
next()
if date.type == .week {
// weekday number
let weekday = try read_int().value
if weekday > 7 {
throw ISO8601ParserError.invalid
}
date.weekday = weekday
} else {
date.day = try read_int().value
if date.day == 0 {
date.day = 1
}
if date.month_or_week == 0 {
date.month_or_week = 1
}
}
} else {
date.day = 1
}
} else {
date.month_or_week = 1
date.day = 1
}
}
func parse_hyphens_0(_ num_digits: Int, _ segment: inout Int) throws {
if current() == "-" {
// Implicit century
date.year = now_cmps.year!
date.year -= (date.year % 100)
date.year += segment
next()
if current() == "W" {
try parseWeekAndDay()
} else if current()?.isDigit ?? false == false {
try centuryOnly(&segment)
} else {
// Get month and/or date.
let (v_count, v_seg) = try read_int()
switch v_count {
case 4: // YY-MMDD
date.day = v_seg % 100
date.month_or_week = v_seg / 100
case 1: // YY-M; YY-M-DD (extension)
if options.strict == true {
throw ISO8601ParserError.invalid
}
case 2: // YY-MM; YY-MM-DD
date.month_or_week = v_seg
if current() == "-" {
next()
if current()?.isDigit ?? false == true {
date.day = try read_int(2).value
} else {
date.day = 1
}
} else {
date.day = 1
}
case 3: // Ordinal date
date.day = v_seg
date.type = .dateOnly
default:
break
}
}
} else if current() == "W" {
date.year = now_cmps.year!
date.year -= (date.year % 100)
date.year += segment
try parseWeekAndDay()
} else {
try centuryOnly(&segment)
}
}
switch hyphens {
case 0: try parse_hyphens_0(num_digits, &segment)
case 1: try parse_hyphens_1(num_digits, &segment) //-YY; -YY-MM (implicit century)
case 2: try parse_hyphens_2(num_digits, &segment) //--MM; --MM-DD
case 3: try parse_hyphens_3(num_digits, &segment) //---DD
default: throw ISO8601ParserError.invalid
}
}
private func parse_digits_1(_ num_digits: Int, _ segment: inout Int) throws {
if options.strict == true {
// Two digits only - never just one.
guard hyphens == 1 else { throw ISO8601ParserError.invalid }
if current() == "-" {
next()
}
next()
guard current() == "W" else { throw ISO8601ParserError.invalid }
date.year = now_cmps.year!
date.year -= (date.year % 10)
date.year += segment
} else {
try parse_digits_2(num_digits, &segment)
}
}
private func parse_digits_5(_ num_digits: Int, _ segment: inout Int) throws {
guard hyphens == 0 else { throw ISO8601ParserError.invalid }
// YYDDD
date.year = now_cmps.year!
date.year -= (date.year % 100)
date.year += segment / 1000
date.day = segment % 1000
date.type = .dateOnly
}
private func parse_digits_4(_ num_digits: Int, _ segment: inout Int) throws {
func parse_hyphens_0(_ num_digits: Int, _ segment: inout Int) throws {
date.year = segment
if current() == "-" {
next()
}
if current()?.isDigit ?? false == false {
if current() == "W" {
try parseWeekAndDay()
} else {
date.month_or_week = 1
date.day = 1
}
} else {
let (v_num, v_seg) = try read_int()
switch v_num {
case 4: // MMDD
date.day = v_seg % 100
date.month_or_week = v_seg / 100
case 2: // MM
date.month_or_week = v_seg
if current() == "-" {
next()
}
if current()?.isDigit ?? false == false {
date.day = 1
} else {
date.day = try read_int().value
}
case 3: // DDD
date.day = v_seg % 1000
date.type = .dateOnly
if options.strict == true && (date.day > 365 + (date.year.isLeapYear ? 1 : 0)) {
throw ISO8601ParserError.invalid
}
default:
throw ISO8601ParserError.invalid
}
}
}
func parse_hyphens_1(_ num_digits: Int, _ segment: inout Int) throws {
date.month_or_week = segment % 100
date.year = segment / 100
if current() == "-" {
next()
}
if current()?.isDigit ?? false == false {
date.day = 1
} else {
date.day = try read_int().value
}
}
func parse_hyphens_2(_ num_digits: Int, _ segment: inout Int) throws {
date.day = segment % 100
date.month_or_week = segment / 100
date.year = now_cmps.year!
}
switch hyphens {
case 0: try parse_hyphens_0(num_digits, &segment) // YYYY
case 1: try parse_hyphens_1(num_digits, &segment) // YYMM
case 2: try parse_hyphens_2(num_digits, &segment) // MMDD
default: throw ISO8601ParserError.invalid
}
}
private func parse_digits_6(_ num_digits: Int, _ segment: inout Int) throws {
// YYMMDD (implicit century)
guard hyphens == 0 else {
throw ISO8601ParserError.invalid
}
date.day = segment % 100
segment /= 100
date.month_or_week = segment % 100
date.year = now_cmps.year!
date.year -= (date.year % 100)
date.year += (segment / 100)
}
private func parse_digits_8(_ num_digits: Int, _ segment: inout Int) throws {
// YYYY MM DD
guard hyphens == 0 else {
throw ISO8601ParserError.invalid
}
date.day = segment % 100
segment /= 100
date.month_or_week = segment % 100
date.year = segment / 100
}
private func parse_digits_0(_ num_digits: Int, _ segment: inout Int) throws {
guard current() == "W" else {
throw ISO8601ParserError.invalid
}
if seek(1) == "-" && isDigit(seek(2)) &&
((hyphens == 1 || hyphens == 2) && options.strict == false) {
date.year = now_cmps.year!
date.month_or_week = 1
next(2)
try parseDayAfterWeek()
} else if hyphens == 1 {
date.year = now_cmps.year!
if current() == "W" {
next()
date.month_or_week = try read_int(2).value
date.type = .week
try parseWeekday()
} else {
try parseDayAfterWeek()
}
} else {
throw ISO8601ParserError.invalid
}
}
private func parseWeekday() throws {
if current() == "-" {
next()
}
let weekday = try read_int().value
if weekday > 7 {
throw ISO8601ParserError.invalid
}
date.type = .week
date.weekday = weekday
}
private func parseWeekAndDay() throws {
next()
if current()?.isDigit ?? false == false {
//Not really a week-based date; just a year followed by '-W'.
guard options.strict == false else {
throw ISO8601ParserError.invalid
}
date.month_or_week = 1
date.day = 1
} else {
date.month_or_week = try read_int(2).value
try parseWeekday()
}
}
private func parseDayAfterWeek() throws {
date.day = current()?.isDigit ?? false == true ? try read_int(2).value : 1
date.type = .week
}
private func centuryOnly(_ segment: inout Int) throws {
date.year = segment * 100 + now_cmps.year! % 100
date.month_or_week = 1
date.day = 1
}
/// Return `true` if given character is a char
///
/// - Parameter char: char to evaluate
/// - Returns: `true` if char is a digit, `false` otherwise
private func isDigit(_ char: UnicodeScalar?) -> Bool {
guard let char = char else { return false }
return char.isDigit
}
/// MARK: - Scanner internal functions
/// Get the value at specified offset from current scanner position without
/// moving the current scanner's index.
///
/// - Parameter offset: offset to move
/// - Returns: char at given position, `nil` if not found
@discardableResult
public func seek(_ offset: Int = 1) -> ISOChar? {
let move_idx = string.index(cIdx, offsetBy: offset)
guard move_idx < eIdx else {
return nil
}
return string[move_idx]
}
/// Return the char at the current position of the scanner
///
/// - Parameter next: if `true` return the current char and move to the next position
/// - Returns: the char sat the current position of the scanner
@discardableResult
public func current(_ next: Bool = false) -> ISOChar? {
guard cIdx != eIdx else { return nil }
let current = string[cIdx]
if next == true { cIdx = string.index(after: cIdx) }
return current
}
/// Move by `offset` characters the index of the scanner and return the char at the current
/// position. If EOF is reached `nil` is returned.
///
/// - Parameter offset: offset value (use negative number to move backwards)
/// - Returns: character at the current position.
@discardableResult
private func next(_ offset: Int = 1) -> ISOChar? {
let next = string.index(cIdx, offsetBy: offset)
guard next < eIdx else {
return nil
}
cIdx = next
return string[cIdx]
}
/// Read from the current scanner index and parse the value as Int.
///
/// - Parameter max_count: number of characters to move. If nil scanners continues until a non
/// digit value is encountered.
/// - Returns: parsed value
/// - Throws: throw an exception if parser fails
@discardableResult
private func read_int(_ max_count: Int? = nil) throws -> (count: Int, value: Int) {
var move_idx = cIdx
var count = 0
while move_idx < eIdx {
if let max = max_count, count >= max { break }
if string[move_idx].isDigit == false { break }
count += 1
move_idx = string.index(after: move_idx)
}
let raw_value = String(string[cIdx..<move_idx])
if raw_value == "" {
return (count, 0)
}
guard let value = Int(raw_value) else {
throw ISO8601ParserError.notDigit
}
cIdx = move_idx
return (count, value)
}
/// Read from the current scanner index and parse the value as Double.
/// If parser fails an exception is throw.
/// Unit separator can be `-` or `,`.
///
/// - Returns: double value
/// - Throws: throw an exception if parser fails
@discardableResult
private func read_double() throws -> (count: Int, value: Double) {
var move_idx = cIdx
var count = 0
var fractional_start = false
while move_idx < eIdx {
let char = string[move_idx]
if char == "." || char == "," {
if fractional_start == true { throw ISO8601ParserError.notDouble } else { fractional_start = true }
} else {
if char.isDigit == false { break }
}
count += 1
move_idx = string.index(after: move_idx)
}
let raw_value = String(string[cIdx..<move_idx]).replacingOccurrences(of: ",", with: ".")
if raw_value == "" {
return (count, 0.0)
}
guard let value = Double(raw_value) else {
throw ISO8601ParserError.notDouble
}
cIdx = move_idx
return (count, value)
}
/// Move the current scanner index to the next position until the current char of the scanner
/// is the given `char` value.
///
/// - Parameter char: char
/// - Returns: the number of characters passed
@discardableResult
private func moveUntil(is char: UnicodeScalar) -> Int {
var move_idx = cIdx
var count = 0
while move_idx < eIdx {
guard string[move_idx] == char else { break }
move_idx = string.index(after: move_idx)
count += 1
}
cIdx = move_idx
return count
}
/// Move the current scanner index to the next position until passed `char` value is
/// encountered or `eof` is reached.
///
/// - Parameter char: char
/// - Returns: the number of characters passed
@discardableResult
private func moveUntil(isNot char: UnicodeScalar) -> Int {
var move_idx = cIdx
var count = 0
while move_idx < eIdx {
guard string[move_idx] != char else { break }
move_idx = string.index(after: move_idx)
count += 1
}
cIdx = move_idx
return count
}
/// Return a date parsed from a valid ISO8601 string
///
/// - Parameter string: source string
/// - Returns: a valid `Date` object or `nil` if date cannot be parsed
public static func date(from string: String) -> ISOParsedDate? {
guard let parser = ISOParser(string) else {
return nil
}
return (parser.parsedDate, parser.parsedTimeZone)
}
public static func parse(_ string: String, region: Region?, options: Any?) -> DateInRegion? {
let formatOptions = options as? ISOParser.Options
guard let parser = ISOParser(string, options: formatOptions),
let date = parser.parsedDate else {
return nil
}
let parsedRegion = Region(calendar: region?.calendar ?? Region.ISO.calendar,
zone: (region?.timeZone ?? parser.parsedTimeZone ?? Region.ISO.timeZone),
locale: region?.locale ?? Region.ISO.locale)
return DateInRegion(date, region: parsedRegion)
}
}

View File

@@ -0,0 +1,335 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
#if os(Linux)
import Glibc
#else
import Darwin
#endif
// MARK: - Style
public extension RelativeFormatter {
enum PluralForm: String {
case zero, one, two, few, many, other
}
/// Style for formatter
struct Style {
/// Flavours supported by the style, specified in order.
/// The first available flavour for specified locale is used.
/// If no flavour is available `.long` is used instead (this flavour
/// MUST be part of every lang structure).
public var flavours: [Flavour]
/// Gradation specify how the unit are evaluated in order to get the
/// best one to represent a given amount of time interval.
/// By default `convenient()` is used.
public var gradation: Gradation = .convenient()
/// Allowed time units the style can use. Some styles may not include
/// some time units (ie. `.quarter`) because they are not useful for
/// a given representation.
/// If not specified all the following units are set:
/// `.now, .minute, .hour, .day, .week, .month, .year`
public var allowedUnits: [Unit]?
/// Create a new style.
///
/// - Parameters:
/// - flavours: flavours of the style.
/// - gradation: gradation rules.
/// - units: allowed units.
public init(flavours: [Flavour], gradation: Gradation, allowedUnits units: [Unit]? = nil) {
self.flavours = flavours
self.gradation = gradation
allowedUnits = (units ?? [.now, .minute, .hour, .day, .week, .month, .year])
}
}
/// Return the default style for relative formatter.
///
/// - Returns: style instance.
static func defaultStyle() -> Style {
return Style(flavours: [.longConvenient, .long], gradation: .convenient())
}
/// Return the time-only style for relative formatter.
///
/// - Returns: style instance.
static func timeStyle() -> Style {
return Style(flavours: [.longTime], gradation: .convenient())
}
/// Return the twitter style for relative formatter.
///
/// - Returns: style instance.
static func twitterStyle() -> Style {
return Style(flavours: [.tiny, .shortTime, .narrow, .shortTime], gradation: .twitter())
}
}
// MARK: - Flavour
public extension RelativeFormatter {
/// Supported flavours
enum Flavour: String {
case long = "long"
case longTime = "long_time"
case longConvenient = "long_convenient"
case short = "short"
case shortTime = "short_time"
case shortConvenient = "short_convenient"
case narrow = "narrow"
case tiny = "tiny"
case quantify = "quantify"
}
}
// MARK: - Gradation
public extension RelativeFormatter {
/// Gradation is used to define a set of rules used to get the best
/// representation of a given elapsed time interval (ie. the best
/// representation for 300 seconds is in minutes, 5 minutes specifically).
/// Rules are executed in order by the parser and the best one (< elapsed interval)
/// is returned to be used by the formatter.
struct Gradation {
/// A single Gradation rule specification
// swiftlint:disable nesting
public struct Rule {
public enum ThresholdType {
case value(_: Double?)
case function(_: ((TimeInterval) -> (Double?)))
func evaluateForTimeInterval(_ elapsed: TimeInterval) -> Double? {
switch self {
case .value(let value): return value
case .function(let function): return function(elapsed)
}
}
}
public enum RoundingStrategy {
case regularRound
case ceiling
case flooring
case custom((Double) -> Double)
func roundValue(_ value: Double) -> Double {
switch self {
case .regularRound: return round(value)
case .ceiling: return ceil(value)
case .flooring: return floor(value)
case .custom(let roundingFunction): return roundingFunction(value)
}
}
}
/// The time unit to which the rule refers.
/// It's used to evaluate the factor.
public var unit: Unit
/// Threhsold value of the unit. When a difference between two dates
/// is less than the threshold the unit before this is the best
/// candidate to represent the time interval.
public var threshold: ThresholdType?
/// Granuality threshold of the unit
public var granularity: Double?
/// The rounding strategy that should be used prior to generating the relative time
public var roundingStrategy: RoundingStrategy
/// Relation with a previous threshold
public var thresholdPrevious: [Unit: Double]?
/// You can specify a custom formatter for a rule which return the
/// string representation of a data with your own pattern.
// swiftlint:disable nesting
public typealias CustomFormatter = ((DateRepresentable) -> (String))
public var customFormatter: CustomFormatter?
/// Create a new rule.
///
/// - Parameters:
/// - unit: target time unit.
/// - threshold: threshold value.
/// - granularity: granularity value.
/// - prev: relation with a previous rule in gradation lsit.
/// - formatter: custom formatter.
public init(_ unit: Unit,
threshold: ThresholdType?,
granularity: Double? = nil,
roundingStrategy: RoundingStrategy = .regularRound,
prev: [Unit: Double]? = nil,
formatter: CustomFormatter? = nil ) {
self.unit = unit
self.threshold = threshold
self.granularity = granularity
self.roundingStrategy = roundingStrategy
self.thresholdPrevious = prev
self.customFormatter = formatter
}
}
/// Gradation rules
var rules: [Rule]
/// Number of gradation rules
var count: Int { return rules.count }
/// Subscript by unit.
/// Return the first rule for given unit.
///
/// - Parameter unit: unit to get.
public subscript(_ unit: Unit) -> Rule? {
return rules.first(where: { $0.unit == unit })
}
/// Subscript by index.
/// Return the rule at given index, `nil` if index is invalid.
///
/// - Parameter index: index
public subscript(_ index: Int) -> Rule? {
guard index < rules.count, index >= 0 else { return nil }
return rules[index]
}
/// Create a new gradition with a given set of ordered rules.
///
/// - Parameter rules: ordered rules.
public init(_ rules: [Rule]) {
self.rules = rules
}
/// Create a new gradation by removing the units from receiver which are not part of the given array.
///
/// - Parameter units: units to keep.
/// - Returns: a new filtered `Gradation` instance.
public func filtered(byUnits units: [Unit]) -> Gradation {
return Gradation(rules.filter { units.contains($0.unit) })
}
/// Canonical gradation rules
public static func canonical() -> Gradation {
return Gradation([
Rule(.now, threshold: .value(0)),
Rule(.second, threshold: .value(0.5)),
Rule(.minute, threshold: .value(59.5)),
Rule(.hour, threshold: .value(59.5 * 60.0)),
Rule(.day, threshold: .value(23.5 * 60 * 60)),
Rule(.week, threshold: .value(6.5 * Unit.day.factor)),
Rule(.month, threshold: .value(3.5 * 7 * Unit.day.factor)),
Rule(.year, threshold: .value(1.5 * Unit.month.factor))
])
}
/// Convenient gradation rules
public static func convenient() -> Gradation {
let list = Gradation([
Rule(.now, threshold: .value(0)),
Rule(.second, threshold: .value(1), prev: [.now: 1]),
Rule(.minute, threshold: .value(45)),
Rule(.minute, threshold: .value(2.5 * 60), granularity: 5),
Rule(.halfHour, threshold: .value(22.5 * 60), granularity: 5),
Rule(.hour, threshold: .value(42.5 * 60), prev: [.minute: 52.5 * 60]),
Rule(.day, threshold: .value((20.5 / 24) * Unit.day.factor)),
Rule(.week, threshold: .value(5.5 * Unit.day.factor)),
Rule(.month, threshold: .value(3.5 * 7 * Unit.day.factor)),
Rule(.year, threshold: .value(10.5 * Unit.month.factor))
])
return list
}
/// Twitter gradation rules
public static func twitter() -> Gradation {
return Gradation([
Rule(.now, threshold: .value(0)),
Rule(.second, threshold: .value(1), prev: [.now: 1]),
Rule(.minute, threshold: .value(45)),
Rule(.hour, threshold: .value(59.5 * 60.0)),
Rule(.hour, threshold: .value((1.days.timeInterval - 0.5 * 1.hours.timeInterval))),
Rule(.day, threshold: .value((20.5 / 24) * Unit.day.factor)),
Rule(.other, threshold: .function({ now in
// Jan 1st of the next year.
let nextYear = (Date(timeIntervalSince1970: now) + 1.years).dateAtStartOf(.year)
return (nextYear.timeIntervalSince1970 - now)
}), formatter: { date in // "Apr 11, 2017"
return date.toFormat("MMM dd, yyyy")
})
])
}
}
}
// MARK: - Unit
public extension RelativeFormatter {
/// Units for relative formatter
enum Unit: String {
case now = "now"
case second = "second"
case minute = "minute"
case hour = "hour"
case halfHour = "half_hour"
case day = "day"
case week = "week"
case month = "month"
case year = "year"
case quarter = "quarter"
case other = ""
/// Factor of conversion of the unit to seconds
public var factor: Double {
switch self {
case .now, .second: return 1
case .minute: return 1.minutes.timeInterval
case .hour: return 1.hours.timeInterval
case .halfHour: return (1.hours.timeInterval * 0.5)
case .day: return 1.days.timeInterval
case .week: return 1.weeks.timeInterval
case .month: return 1.months.timeInterval
case .year: return 1.years.timeInterval
case .quarter: return (91.days.timeInterval + 6.hours.timeInterval)
case .other: return 0
}
}
}
}
internal extension Double {
/// Return -1 if number is negative, 1 if positive
var sign: Int {
return (self < 0 ? -1 : 1)
}
}

View File

@@ -0,0 +1,278 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
public class RelativeFormatter: DateToStringTrasformable {
/// Private singleton for relative formatter
private static let shared = RelativeFormatter()
/// Return all languages supported by the library for relative date formatting
public static var allLanguages: [RelativeFormatterLanguage] {
return RelativeFormatterLanguage.allCases
}
private init() {}
/// Return the language table for a specified locale.
/// If not loaded yet a new instance of the table is loaded and cached.
///
/// - Parameter locale: locale to load
/// - Returns: language table
private func tableForLocale(_ locale: Locale) -> RelativeFormatterLanguage {
let localeId = (locale.collatorIdentifier ?? Locales.english.toLocale().collatorIdentifier!)
if let lang = RelativeFormatterLanguage(rawValue: localeId) {
return lang
}
guard let fallbackFlavours = RelativeFormatterLanguage(rawValue: localeId.components(separatedBy: "_").first!) ??
RelativeFormatterLanguage(rawValue: localeId.components(separatedBy: "-").first!) else {
return tableForLocale(Locales.english.toLocale()) // fallback not found, return english
}
return fallbackFlavours // return fallback
}
/// Implementation of the protocol for DateToStringTransformable.
public static func format(_ date: DateRepresentable, options: Any?) -> String {
let dateToFormat = (date as? DateInRegion ?? DateInRegion(date.date, region: SwiftDate.defaultRegion))
return RelativeFormatter.format(date: dateToFormat, style: (options as? Style), locale: date.region.locale)
}
/// Return relative formatted string result of comparison of two passed dates.
///
/// - Parameters:
/// - date: date to compare
/// - toDate: date to compare against for (if `nil` current date in the same region of `date` is used)
/// - style: style of the relative formatter.
/// - locale: locale to use; if not passed the `date`'s region locale is used.
/// - Returns: formatted string, empty string if formatting fails
public static func format(date: DateRepresentable, to toDate: DateRepresentable? = nil,
style: Style?, locale fixedLocale: Locale? = nil) -> String {
let refDate = (toDate ?? date.region.nowInThisRegion()) // a now() date is created if no reference is passed
let options = (style ?? RelativeFormatter.defaultStyle()) // default style if not used
let locale = (fixedLocale ?? date.region.locale) // date's locale is used if no value is forced
// how much time elapsed (in seconds)
let elapsed = (refDate.date.timeIntervalSince1970 - date.date.timeIntervalSince1970)
// get first suitable flavour for a given locale
let (flavour, localeData) = suitableFlavour(inList: options.flavours, forLocale: locale)
// get all units which can be represented by the locale data for required style
let allUnits = suitableUnits(inLocaleData: localeData, requiredUnits: options.allowedUnits)
guard allUnits.count > 0 else {
debugPrint("Required units in style were not found in locale spec. Returning empty string")
return ""
}
guard let suitableRule = ruleToRepresent(timeInterval: abs(elapsed),
referenceInterval: refDate.date.timeIntervalSince1970,
units: allUnits,
gradation: options.gradation) else {
// If no time unit is suitable, just output an empty string.
// E.g. when "now" unit is not available
// and "second" has a threshold of `0.5`
// (e.g. the "canonical" grading scale).
return ""
}
if let customFormat = suitableRule.customFormatter {
return customFormat(date)
}
var amount = (abs(elapsed) / suitableRule.unit.factor)
// Apply granularity to the time amount
// (and fallback to the previous step
// if the first level of granularity
// isn't met by this amount)
if let granularity = suitableRule.granularity {
// Recalculate the elapsed time amount based on granularity
amount = round(amount / granularity) * granularity
}
let value: Double = -1.0 * Double(elapsed.sign) * suitableRule.roundingStrategy.roundValue(amount)
let formatString = relativeFormat(locale: locale, flavour: flavour, value: value, unit: suitableRule.unit)
return formatString.replacingOccurrences(of: "{0}", with: String(Int(abs(value))))
}
private static func relativeFormat(locale: Locale, flavour: Flavour, value: Double, unit: Unit) -> String {
let table = RelativeFormatter.shared.tableForLocale(locale)
guard let styleTable = table.flavours[flavour.rawValue] as? [String: Any] else {
return ""
}
if let fixedValue = styleTable[unit.rawValue] as? String {
return fixedValue
}
guard let unitRules = styleTable[unit.rawValue] as? [String: Any] else {
return ""
}
// Choose either "previous", "past", "current", "next" or "future" based on time `value` sign.
// If "next" is not present, we fallback on "future"
// If "previous" is not present, we fallback on "past"
// If "current" is not present, we fallback on "past"
// If "past" is same as "future" then they're stored as "other".
// If there's only "other" then it's being collapsed.
let quantifierKey: String
switch value {
case -1 where unitRules["previous"] != nil: // If it is previous value -1, and previous unitRule exist
quantifierKey = "previous"
case 0 where unitRules["current"] != nil: // If it is current value 0, and current unitRule exist
quantifierKey = "current"
case ...0: // If value is up to 0 included, also fallback when current or previous isn't found
quantifierKey = "past"
case 1 where unitRules["next"] != nil: // If it is next value 1, and next unitRule exist
quantifierKey = "next"
case 1...: // If it is future value >0, and fallback if next isn't found
quantifierKey = "future"
default: // Should never happen
fatalError()
}
if let fixedValue = unitRules[quantifierKey] as? String {
return fixedValue
} else if let quantifierRules = unitRules[quantifierKey] as? [String: Any] {
// plurar/translations forms
// "other" rule is supposed to always be present.
// If only "other" rule is present then "rules" is not an object and is a string.
let quantifier = (table.quantifyKey(forValue: abs(value)) ?? .other).rawValue
if let relativeFormat = quantifierRules[quantifier] as? String {
return relativeFormat
} else {
return quantifierRules[RelativeFormatter.PluralForm.other.rawValue] as? String ?? ""
}
} else {
return ""
}
}
/// Return the first suitable flavour into the list which is available for a given locale.
///
/// - Parameters:
/// - flavours: ordered flavours.
/// - locale: locale to use.
/// - Returns: a pair of found flavor and locale table
private static func suitableFlavour(inList flavours: [Flavour], forLocale locale: Locale) -> (flavour: Flavour, locale: [String: Any]) {
let localeData = RelativeFormatter.shared.tableForLocale(locale) // get the locale table
for flavour in flavours {
if let flavourData = localeData.flavours[flavour.rawValue] as? [String: Any] {
return (flavour, flavourData) // found our required flavor in passed locale
}
}
// long must be always present
// swiftlint:disable force_cast
return (.long, localeData.flavours[Flavour.long.rawValue] as! [String: Any])
}
/// Return a list of available time units in locale filtered by required units of style.
/// If resulting array if empty there is not any time unit which can be rapresented with given locale
/// so formatting fails.
///
/// - Parameters:
/// - localeData: local table.
/// - styleUnits: required time units.
/// - Returns: available units.
private static func suitableUnits(inLocaleData localeData: [String: Any], requiredUnits styleUnits: [Unit]?) -> [Unit] {
let localeUnits: [Unit] = localeData.keys.compactMap { Unit(rawValue: $0) }
guard let restrictedStyleUnits = styleUnits else { return localeUnits } // no restrictions
return localeUnits.filter({ restrictedStyleUnits.contains($0) })
}
/// Return the best rule in gradation to represent given time interval.
///
/// - Parameters:
/// - elapsed: elapsed interval to represent
/// - referenceInterval: reference interval
/// - units: units
/// - gradation: gradation
/// - Returns: best rule to represent
private static func ruleToRepresent(timeInterval elapsed: TimeInterval, referenceInterval: TimeInterval, units: [Unit], gradation: Gradation) -> Gradation.Rule? {
// Leave only allowed time measurement units.
// E.g. omit "quarter" unit.
let filteredGradation = gradation.filtered(byUnits: units)
// If no steps of gradation fit the conditions
// then return nothing.
guard gradation.count > 0 else {
return nil
}
// Find the most appropriate gradation step
let i = findGradationStep(elapsed: elapsed, now: referenceInterval, gradation: filteredGradation)
guard i >= 0 else {
return nil
}
let step = filteredGradation[i]!
// Apply granularity to the time amount
// (and fall back to the previous step
// if the first level of granularity
// isn't met by this amount)
if let granurality = step.granularity {
// Recalculate the elapsed time amount based on granularity
let amount = round( (elapsed / step.unit.factor) / granurality) * granurality
// If the granularity for this step
// is too high, then fallback
// to the previous step of gradation.
// (if there is any previous step of gradation)
if amount == 0 && i > 0 {
return filteredGradation[i - 1]
}
}
return step
}
private static func findGradationStep(elapsed: TimeInterval, now: TimeInterval, gradation: Gradation, step: Int = 0) -> Int {
// If the threshold for moving from previous step
// to this step is too high then return the previous step.
let fromGradation = gradation[step - 1]
let currentGradation = gradation[step]!
let thresholdValue = threshold(from: fromGradation, to: currentGradation, now: now)
if let t = thresholdValue, elapsed < t {
return step - 1
}
// If it's the last step of gradation then return it.
if step == (gradation.count - 1) {
return step
}
// Move to the next step.
return findGradationStep(elapsed: elapsed, now: now, gradation: gradation, step: step + 1)
}
/// Evaluate threshold.
private static func threshold(from fromRule: Gradation.Rule?, to toRule: Gradation.Rule, now: TimeInterval) -> Double? {
var threshold: Double?
// Allows custom thresholds when moving
// from a specific step to a specific step.
if let fromStepUnit = fromRule?.unit {
threshold = toRule.thresholdPrevious?[fromStepUnit]
}
// If no custom threshold is set for this transition
// then use the usual threshold for the next step.
if threshold == nil {
threshold = toRule.threshold?.evaluateForTimeInterval(now)
}
return threshold
}
}

View File

@@ -0,0 +1,421 @@
//
// SwiftDate
// Parse, validate, manipulate, and display dates, time and timezones in Swift
//
// Created by Daniele Margutti
// - Web: https://www.danielemargutti.com
// - Twitter: https://twitter.com/danielemargutti
// - Mail: hello@danielemargutti.com
//
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
//
import Foundation
internal class RelativeFormatterLanguagesCache {
static let shared = RelativeFormatterLanguagesCache()
private(set) var cachedValues = [String: [String: Any]]()
func flavoursForLocaleID(_ langID: String) -> [String: Any]? {
do {
guard let fullURL = Bundle(for: RelativeFormatter.self).resourceURL?.appendingPathComponent("langs/\(langID).json") else {
return nil
}
let data = try Data(contentsOf: fullURL)
let json = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments)
if let value = json as? [String: Any] {
cachedValues[langID] = value
return value
} else {
return nil
}
} catch {
debugPrint("Failed to read data for language id: \(langID)")
return nil
}
}
}
public enum RelativeFormatterLanguage: String, CaseIterable {
case af = "af" // Locales.afrikaans
case am = "am" // Locales.amharic
case ar_AE = "ar_AE" // Locales.arabicUnitedArabEmirates
case ar = "ar" // Locales.arabic
case `as` = "as" // Locales.assamese
case az = "az" // Locales.assamese
case be = "be" // Locales.belarusian
case bg = "bg" // Locales.bulgarian
case bn = "bn" // Locales.bengali
case br = "br" // Locales.breton
case bs = "bs" // Locales.bosnian
case bs_Cyrl = "bs-Cyrl" // Locales.belarusian
case ca = "ca" // Locales.catalan
case cz = "cz" // Locales.czech
case cy = "cy" // Locales.welsh
case cs = "cs" // Locales.czech
case da = "da" // Locales.danish
case de = "de" // Locales.dutch
case dsb = "dsb" // Locales.lowerSorbian
case dz = "dz" // Locales.dzongkha
case ee = "ee" // Locales.ewe
case el = "el" // Locales.greek
case en = "en" // Locales.english
case es_AR = "es_AR" // Locales.spanishArgentina
case es_PY = "es_PY" // Locales.spanishParaguay
case es_MX = "es_MX" // Locales.spanishMexico
case es_US = "es_US" // Locales.spanishUnitedStates
case es = "es" // Locales.spanish
case et = "et" // Locales.estonian
case eu = "eu" // Locales.basque
case fa = "fa" // Locales.persian
case fi = "fi" // Locales.finnish
case fil = "fil" // Locales.filipino
case fo = "fo" // Locales.faroese
case fr_CA = "fr_CA" // French (Canada)
case fr = "fr" // French
case fur = "fur" // Friulian
case fy = "fy" // Western Frisian
case ga = "ga" // Irish
case gd = "gd" // Scottish Gaelic
case gl = "gl" // Galician
case gu = "gu" // Gujarati
case he = "he" // Hebrew
case hi = "hi" // Hindi
case hr = "hr" // Croatian
case hsb = "hsb" // Upper Sorbian
case hu = "hu" // Hungarian
case hy = "hy" // Armenian
case id = "id" // Indonesian
case `is` = "is" // Icelandic
case it = "it" // Locales.italian
case ja = "ja" // Japanese
case jgo = "jgo" // Ngomba
case ka = "ka" // Georgian
case kea = "kea" // Kabuverdianu
case kk = "kk" // Kazakh
case kl = "kl" // Kalaallisut
case km = "km" // Khmer
case kn = "kn" // Kannada
case ko = "ko" // Korean
case kok = "kok" // Konkani
case ksh = "ksh" // Colognian
case ky = "ky" // Kyrgyz
case lb = "lb" // Luxembourgish
case lkt = "lkt" // Lakota
case lo = "lo" // Lao
case lt = "lt" // Lithuanian
case lv = "lv" // Latvian
case mk = "mk" // Macedonian
case ml = "ml" // Malayalam
case mn = "mn" // Mongolian
case mr = "mr" // Marathi
case ms = "ms" // Malay
case mt = "mt" // Maltese
case my = "my" // Burmese
case mzn = "mzn" // Mazanderani
case nb = "nb" // Norwegian Bokmål
case ne = "ne" // Nepali
case nl = "nl" // Netherland
case nn = "nn" // Norwegian Nynorsk
case or = "or" // Odia
case pa = "pa" // Punjabi
case pl = "pl" // Polish
case ps = "ps" // Pashto
case pt = "pt" // Portuguese
case ro = "ro" // Romanian
case ru = "ru" // Russian
case sah = "sah" // Sakha
case sd = "sd" // Sindhi
case se_FI = "se_FI" // Northern Sami (Finland)
case se = "se" // Northern Sami
case si = "si" // Sinhala
case sk = "sk" // Slovak
case sl = "sl" // Slovenian
case sq = "sq" // Albanian
case sr_Latn = "sr_Latn" // Serbian (Latin)
case sr = "sr" // Serbian
case sv = "sv" // Swedish
case sw = "sw" // Swedish
case ta = "ta" // Tamil
case te = "te" // Telugu
case th = "th" // Thai
case ti = "ti" // Tigrinya
case tk = "tk" // Turkmen
case to = "to" // Tongan
case tr = "tr" // Turkish
case ug = "ug" // Uyghur
case uk = "uk" // Ukrainian
case ur_IN = "ur_IN" // Urdu (India)
case ur = "ur" // Urdu
case uz_Cyrl = "uz_Cyrl" // Uzbek (Cyrillic)
case uz = "uz" // Uzbek (Cyrillic)
case vi = "vi" // Vietnamese
case wae = "wae" // Walser
case yue_Hans = "yue_Hans" // Cantonese (Simplified)
case yue_Hant = "yue_Hant" // Cantonese (Traditional)
case zh_Hans_HK = "zh_Hans_HK" // Chinese (Simplified, Hong Kong [China])
case zh_Hans_MO = "zh_Hans_MO" // Chinese (Simplified, Macau [China])
case zh_Hans_SG = "zh_Hans_SG" // Chinese (Simplified, Singapore)
case zh_Hant_HK = "zh_Hant_HK" // Chinese (Traditional, Hong Kong [China])
case zh_Hant_MO = "zh_Hant_MO" // Chinese (Traditional, Macau [China])
case zh_Hans = "zh_Hans" // Chinese (Simplified)
case zh_Hant = "zh_Hant" // Chinese (Traditional)
case zh = "zh" // Chinese
case zu = "zu" // Zulu
/// Table with the data of the language.
/// Data is structured in:
/// { flavour: { unit : { data } } }
public var flavours: [String: Any] {
return RelativeFormatterLanguagesCache.shared.flavoursForLocaleID(self.rawValue) ?? [:]
}
public var identifier: String {
return self.rawValue
}
public func quantifyKey(forValue value: Double) -> RelativeFormatter.PluralForm? {
switch self {
case .sr_Latn, .sr, .uk:
let mod10 = Int(value) % 10
let mod100 = Int(value) % 100
switch mod10 {
case 1:
switch mod100 {
case 11:
break
default:
return .one
}
case 2, 3, 4:
switch mod100 {
case 12, 13, 14:
break
default:
return .few
}
default:
break
}
return .many
case .ru, .sk, .sl:
let mod10 = Int(value) % 10
let mod100 = Int(value) % 100
switch mod100 {
case 11...14:
break
default:
switch mod10 {
case 1:
return .one
case 2...4:
return .few
default:
break
}
}
return .many
case .ro:
let mod100 = Int(value) % 100
switch value {
case 0:
return .few
case 1:
return .one
default:
if mod100 > 1 && mod100 <= 19 {
return .few
}
}
return .other
case .pa:
switch value {
case 0, 1:
return .one
default:
return .other
}
case .mt:
switch value {
case 1: return .one
case 0: return .few
case 2...10: return .few
case 11...19: return .many
default: return .other
}
case .lt, .lv:
let mod10 = Int(value) % 10
let mod100 = Int(value) % 100
if value == 0 {
return .zero
}
if value == 1 {
return .one
}
switch mod10 {
case 1:
if mod100 != 11 {
return .one
}
return .many
default:
return .many
}
case .ksh, .se:
switch value {
case 0: return .zero
case 1: return .one
default: return .other
}
case .`is`:
let mod10 = Int(value) % 10
let mod100 = Int(value) % 100
if value == 0 {
return .zero
}
if value == 1 {
return .one
}
switch mod10 {
case 1:
if mod100 != 11 {
return .one
}
default:
break
}
return .many
case .id, .ja, .ms, .my, .mzn, .sah, .se_FI, .si, .th, .yue_Hans, .yue_Hant,
.zh_Hans_HK, .zh_Hans_MO, .zh_Hans_SG, .zh_Hant_HK, .zh_Hant_MO, .zh:
return .other
case .hy:
return (value >= 0 && value < 2 ? .one : .other)
case .ga, .gd:
switch Int(value) {
case 1: return .one
case 2: return .two
case 3...6: return .few
case 7...10: return .many
default: return .other
}
case .fr_CA, .fr:
return (value >= 0 && value < 2 ? .one : .other)
case .dz, .kea, .ko, .kok, .lkt, .lo:
return nil
case .cs: // Locales.czech
switch value {
case 1:
return .one
case 2, 3, 4:
return .few
default:
return .other
}
case .cy:
switch value {
case 0: return .zero
case 1: return .one
case 2: return .two
case 3: return .few
case 6: return .many
default: return .other
}
case .cz, .dsb:
switch value {
case 1:
return .one
case 2, 3, 4:
return .few
default:
return .other
}
case .br:
let n = Int(value)
return n % 10 == 1 && n % 100 != 11 && n % 100 != 71 && n % 100 != 91 ? .zero : n % 10 == 2 && n % 100 != 12 && n % 100 != 72 && n % 100 != 92 ? .one : (n % 10 == 3 || n % 10 == 4 || n % 10 == 9) && n % 100 != 13 && n % 100 != 14 && n % 100 != 19 && n % 100 != 73 && n % 100 != 74 && n % 100 != 79 && n % 100 != 93 && n % 100 != 94 && n % 100 != 99 ? .two : n % 1_000_000 == 0 && n != 0 ? .many : .other
case .be, .bs, .bs_Cyrl, .hr, .hsb, .pl:
let mod10 = Int(value) % 10
let mod100 = Int(value) % 100
switch mod10 {
case 1:
switch mod100 {
case 11:
break
default:
return .one
}
case 2, 3, 4:
switch mod100 {
case 12, 13, 14:
break
default:
return .few
}
default:
break
}
return .many
case .ar, .ar_AE, .he:
switch value {
case 0: return .zero
case 1: return .one
case 2: return .two
default:
let mod100 = Int(value) % 100
if mod100 >= 3 && mod100 <= 10 {
return .few
} else if mod100 >= 11 {
return .many
} else {
return .other
}
}
case .am, .bn, .fa, .gu, .kn, .mr, .zu:
return (value >= 0 && value <= 1 ? .one : .other)
default:
return (value == 1 ? .one : .other)
}
}
}

View File

@@ -0,0 +1,209 @@
{
"narrow" : {
"quarter" : {
"previous" : "vorige kwartaal",
"current" : "hierdie kwartaal",
"next" : "volgende kwartaal",
"past" : "{0} kwartale gelede",
"future" : "oor {0} kwartale"
},
"month" : {
"past" : "{0} md. gelede",
"next" : "volgende maand",
"future" : "oor {0} md.",
"previous" : "verlede maand",
"current" : "vandeesmaand"
},
"now" : "nou",
"hour" : {
"future" : "oor {0} uur",
"past" : "{0} uur gelede",
"current" : "hierdie uur"
},
"minute" : {
"past" : "{0} min. gelede",
"current" : "hierdie minuut",
"future" : "oor {0} min."
},
"day" : {
"previous" : "gister",
"future" : {
"one" : "oor {0} dag",
"other" : "oor {0} dae"
},
"past" : {
"one" : "{0} dag gelede",
"other" : "{0} dae gelede"
},
"current" : "vandag",
"next" : "môre"
},
"year" : {
"next" : "volgende jaar",
"past" : "{0} jaar gelede",
"future" : "oor {0} jaar",
"previous" : "verlede jaar",
"current" : "hierdie jaar"
},
"week" : {
"next" : "volgende week",
"previous" : "verlede week",
"past" : "{0} w. gelede",
"future" : "oor {0} w.",
"current" : "vandeesweek"
},
"second" : {
"future" : "oor {0} sek.",
"current" : "nou",
"past" : "{0} sek. gelede"
}
},
"short" : {
"minute" : {
"future" : "oor {0} min.",
"current" : "hierdie minuut",
"past" : "{0} min. gelede"
},
"month" : {
"current" : "vandeesmaand",
"past" : "{0} md. gelede",
"future" : "oor {0} md.",
"next" : "volgende maand",
"previous" : "verlede maand"
},
"week" : {
"current" : "vandeesweek",
"past" : "{0} w. gelede",
"future" : "oor {0} w.",
"next" : "volgende week",
"previous" : "verlede week"
},
"hour" : {
"future" : "oor {0} uur",
"current" : "hierdie uur",
"past" : "{0} uur gelede"
},
"day" : {
"next" : "môre",
"current" : "vandag",
"previous" : "gister",
"past" : {
"one" : "{0} dag gelede",
"other" : "{0} dae gelede"
},
"future" : {
"one" : "oor {0} dag",
"other" : "oor {0} dae"
}
},
"second" : {
"future" : "oor {0} sek.",
"current" : "nou",
"past" : "{0} sek. gelede"
},
"now" : "nou",
"year" : {
"current" : "hierdie jaar",
"future" : "oor {0} jaar",
"past" : "{0} jaar gelede",
"next" : "volgende jaar",
"previous" : "verlede jaar"
},
"quarter" : {
"current" : "hierdie kwartaal",
"future" : {
"one" : "oor {0} kwartaal",
"other" : "oor {0} kwartale"
},
"previous" : "vorige kwartaal",
"next" : "volgende kwartaal",
"past" : {
"other" : "{0} kwartale gelede",
"one" : "{0} kwartaal gelede"
}
}
},
"long" : {
"day" : {
"previous" : "gister",
"past" : {
"one" : "{0} dag gelede",
"other" : "{0} dae gelede"
},
"future" : {
"other" : "oor {0} dae",
"one" : "oor {0} dag"
},
"next" : "môre",
"current" : "vandag"
},
"hour" : {
"current" : "hierdie uur",
"future" : "oor {0} uur",
"past" : "{0} uur gelede"
},
"month" : {
"next" : "volgende maand",
"current" : "vandeesmaand",
"past" : {
"one" : "{0} maand gelede",
"other" : "{0} maande gelede"
},
"previous" : "verlede maand",
"future" : "oor {0} minuut"
},
"quarter" : {
"next" : "volgende kwartaal",
"past" : {
"one" : "{0} kwartaal gelede",
"other" : "{0} kwartale gelede"
},
"previous" : "vorige kwartaal",
"current" : "hierdie kwartaal",
"future" : {
"one" : "oor {0} kwartaal",
"other" : "oor {0} kwartale"
}
},
"year" : {
"previous" : "verlede jaar",
"current" : "hierdie jaar",
"next" : "volgende jaar",
"past" : "{0} jaar gelede",
"future" : "oor {0} jaar"
},
"minute" : {
"past" : {
"other" : "{0} minute gelede",
"one" : "{0} minuut gelede"
},
"future" : "oor {0} minuut",
"current" : "hierdie minuut"
},
"second" : {
"current" : "nou",
"future" : {
"one" : "oor {0} sekonde",
"other" : "oor {0} sekondes"
},
"past" : {
"other" : "{0} sekondes gelede",
"one" : "{0} sekonde gelede"
}
},
"week" : {
"future" : {
"other" : "oor {0} weke",
"one" : "oor {0} week"
},
"previous" : "verlede week",
"current" : "vandeesweek",
"next" : "volgende week",
"past" : {
"one" : "{0} week gelede",
"other" : "{0} weke gelede"
}
},
"now" : "nou"
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,240 @@
{
"narrow" : {
"quarter" : {
"previous" : "last quarter",
"current" : "this quarter",
"next" : "next quarter",
"past" : "-{0} trim.",
"future" : "+{0} trim."
},
"month" : {
"past" : "-{0} miz",
"next" : "ar miz a zeu",
"future" : "+{0} miz",
"previous" : "ar miz diaraok",
"current" : "ar miz-mañ"
},
"now" : "brem.",
"hour" : {
"future" : "+{0} h",
"past" : "-{0} h",
"current" : "this hour"
},
"minute" : {
"past" : "-{0} min",
"current" : "this minute",
"future" : "+{0} min"
},
"day" : {
"current" : "hiziv",
"future" : "+{0} d",
"next" : "warcʼhoazh",
"previous" : "decʼh",
"past" : "-{0} d"
},
"year" : {
"next" : "ar bl. a zeu",
"past" : "-{0} bl.",
"future" : "+{0} bl.",
"previous" : "warlene",
"current" : "hevlene"
},
"week" : {
"next" : "ar sizhun a zeu",
"previous" : "ar sizhun diaraok",
"past" : {
"many" : "{0} a sizhunioù zo",
"other" : "{0} sizhun zo"
},
"future" : {
"many" : "a-benn {0} a sizhunioù",
"other" : "a-benn {0} sizhun"
},
"current" : "ar sizhun-mañ"
},
"second" : {
"future" : "+{0} s",
"current" : "brem.",
"past" : "-{0} s"
}
},
"short" : {
"minute" : {
"future" : "a-benn {0} min",
"current" : "this minute",
"past" : "{0} min zo"
},
"month" : {
"current" : "ar miz-mañ",
"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"
},
"next" : "ar miz a zeu",
"previous" : "ar miz diaraok"
},
"week" : {
"next" : "ar sizhun a zeu",
"current" : "ar sizhun-mañ",
"previous" : "ar sizhun diaraok",
"past" : {
"many" : "{0} a sizhunioù zo",
"other" : "{0} sizhun zo"
},
"future" : {
"other" : "a-benn {0} sizhun",
"many" : "a-benn {0} a sizhunioù"
}
},
"hour" : {
"future" : "a-benn {0} e",
"current" : "this hour",
"past" : "{0} e zo"
},
"day" : {
"future" : "a-benn {0} d",
"previous" : "decʼh",
"current" : "hiziv",
"next" : "warcʼhoazh",
"past" : "{0} d zo"
},
"second" : {
"future" : "a-benn {0} s",
"current" : "brem.",
"past" : "{0} s zo"
},
"now" : "brem.",
"year" : {
"current" : "hevlene",
"future" : "a-benn {0} bl.",
"past" : "{0} bl. zo",
"next" : "ar bl. a zeu",
"previous" : "warlene"
},
"quarter" : {
"current" : "this quarter",
"future" : "a-benn {0} trim.",
"previous" : "last quarter",
"next" : "next quarter",
"past" : "{0} trim. zo"
}
},
"long" : {
"minute" : {
"past" : {
"other" : "{0} munut zo",
"two" : "{0} vunut zo",
"many" : "{0} a vunutoù zo"
},
"future" : {
"two" : "a-benn {0} vunut",
"many" : "a-benn {0} a vunutoù",
"other" : "a-benn {0} munut"
},
"current" : "this minute"
},
"week" : {
"past" : {
"many" : "{0} a sizhunioù zo",
"other" : "{0} sizhun zo"
},
"future" : {
"many" : "a-benn {0} a sizhunioù",
"other" : "a-benn {0} sizhun"
},
"next" : "ar sizhun a zeu",
"previous" : "ar sizhun diaraok",
"current" : "ar sizhun-mañ"
},
"now" : "bremañ",
"hour" : {
"current" : "this hour",
"future" : {
"other" : "a-benn {0} eur",
"many" : "a-benn {0} a eurioù"
},
"past" : {
"other" : "{0} eur zo",
"many" : "{0} a eurioù zo"
}
},
"second" : {
"future" : {
"other" : "a-benn {0} eilenn",
"many" : "a-benn {0} a eilennoù"
},
"current" : "bremañ",
"past" : "{0} eilenn zo"
},
"day" : {
"next" : "warcʼhoazh",
"previous" : "decʼh",
"future" : {
"many" : "a-benn {0} a zeizioù",
"two" : "a-benn {0} zeiz",
"other" : "a-benn {0} deiz"
},
"current" : "hiziv",
"past" : {
"other" : "{0} deiz zo",
"many" : "{0} a zeizioù zo",
"two" : "{0} zeiz zo"
}
},
"year" : {
"next" : "ar bloaz a zeu",
"past" : {
"many" : "{0} a vloazioù zo",
"other" : "{0} vloaz zo",
"one" : "{0} bloaz zo",
"few" : "{0} bloaz zo"
},
"future" : {
"other" : "a-benn {0} vloaz",
"one" : "a-benn {0} bloaz",
"many" : "a-benn {0} a vloazioù",
"few" : "a-benn {0} bloaz"
},
"previous" : "warlene",
"current" : "hevlene"
},
"quarter" : {
"past" : {
"few" : "{0} zrimiziad zo",
"other" : "{0} trimiziad zo",
"many" : "{0} a zrimiziadoù zo",
"two" : "{0} drimiziad zo"
},
"current" : "this quarter",
"next" : "next quarter",
"future" : {
"many" : "a-benn {0} a drimiziadoù",
"few" : "a-benn {0} zrimiziad",
"two" : "a-benn {0} drimiziad",
"other" : "a-benn {0} trimiziad"
},
"previous" : "last quarter"
},
"month" : {
"previous" : "ar miz diaraok",
"next" : "ar miz a zeu",
"future" : {
"two" : "a-benn {0} viz",
"many" : "a-benn {0} a vizioù",
"other" : "a-benn {0} miz"
},
"current" : "ar miz-mañ",
"past" : {
"two" : "{0} viz zo",
"other" : "{0} miz zo",
"many" : "{0} a vizioù zo"
}
}
}
}

View File

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

View File

@@ -0,0 +1,237 @@
{
"narrow" : {
"second" : {
"past" : "prije {0} sek.",
"future" : "za {0} sek.",
"current" : "sada"
},
"week" : {
"current" : "ove sedmice",
"next" : "sljedeće sedmice",
"past" : "prije {0} sed.",
"previous" : "prošle sedmice",
"future" : "za {0} sed."
},
"year" : {
"next" : "sljedeće godine",
"previous" : "prošle godine",
"current" : "ove godine",
"past" : "prije {0} g.",
"future" : "za {0} g."
},
"minute" : {
"current" : "ova minuta",
"past" : "prije {0} min.",
"future" : "za {0} min."
},
"quarter" : {
"previous" : "posljednji kvartal",
"future" : "za {0} kv.",
"next" : "sljedeći kvartal",
"current" : "ovaj kvartal",
"past" : "prije {0} kv."
},
"hour" : {
"future" : {
"other" : "za {0} sati",
"one" : "za {0} sat",
"few" : "za {0} sata"
},
"past" : {
"other" : "prije {0} sati",
"one" : "prije {0} sat",
"few" : "prije {0} sata"
},
"current" : "ovaj sat"
},
"day" : {
"previous" : "jučer",
"current" : "danas",
"next" : "sutra",
"past" : "prije {0} d.",
"future" : "za {0} d."
},
"now" : "sada",
"month" : {
"future" : "za {0} mj.",
"previous" : "prošli mjesec",
"next" : "sljedeći mjesec",
"current" : "ovaj mjesec",
"past" : "prije {0} mj."
}
},
"long" : {
"week" : {
"previous" : "prošle sedmice",
"future" : {
"other" : "za {0} sedmica",
"one" : "za {0} sedmicu",
"few" : "za {0} sedmice"
},
"past" : {
"few" : "prije {0} sedmice",
"one" : "prije {0} sedmicu",
"other" : "prije {0} sedmica"
},
"current" : "ove sedmice",
"next" : "sljedeće sedmice"
},
"second" : {
"future" : {
"few" : "za {0} sekunde",
"one" : "za {0} sekundu",
"other" : "za {0} sekundi"
},
"current" : "sada",
"past" : {
"one" : "prije {0} sekundu",
"other" : "prije {0} sekundi",
"few" : "prije {0} sekunde"
}
},
"minute" : {
"future" : {
"one" : "za {0} minutu",
"few" : "za {0} minute",
"other" : "za {0} minuta"
},
"current" : "ova minuta",
"past" : {
"one" : "prije {0} minutu",
"other" : "prije {0} minuta",
"few" : "prije {0} minute"
}
},
"quarter" : {
"future" : {
"one" : "za {0} kvartal",
"other" : "za {0} kvartala"
},
"current" : "ovaj kvartal",
"next" : "sljedeći kvartal",
"past" : {
"other" : "prije {0} kvartala",
"one" : "prije {0} kvartal"
},
"previous" : "posljednji kvartal"
},
"day" : {
"previous" : "jučer",
"current" : "danas",
"next" : "sutra",
"past" : {
"one" : "prije {0} dan",
"other" : "prije {0} dana"
},
"future" : {
"other" : "za {0} dana",
"one" : "za {0} dan"
}
},
"now" : "sada",
"month" : {
"next" : "sljedeći mjesec",
"current" : "ovaj mjesec",
"future" : {
"one" : "za {0} mjesec",
"other" : "za {0} mjeseci",
"few" : "za {0} mjeseca"
},
"previous" : "prošli mjesec",
"past" : {
"few" : "prije {0} mjeseca",
"one" : "prije {0} mjesec",
"other" : "prije {0} mjeseci"
}
},
"hour" : {
"past" : {
"few" : "prije {0} sata",
"other" : "prije {0} sati",
"one" : "prije {0} sat"
},
"current" : "ovaj sat",
"future" : {
"few" : "za {0} sata",
"other" : "za {0} sati",
"one" : "za {0} sat"
}
},
"year" : {
"current" : "ove godine",
"past" : {
"one" : "prije {0} godinu",
"few" : "prije {0} godine",
"other" : "prije {0} godina"
},
"previous" : "prošle godine",
"future" : {
"one" : "za {0} godinu",
"other" : "za {0} godina",
"few" : "za {0} godine"
},
"next" : "sljedeće godine"
}
},
"short" : {
"week" : {
"previous" : "prošle sedmice",
"current" : "ove sedmice",
"next" : "sljedeće sedmice",
"past" : "prije {0} sed.",
"future" : "za {0} sed."
},
"day" : {
"next" : "sutra",
"past" : "prije {0} d.",
"future" : "za {0} d.",
"previous" : "jučer",
"current" : "danas"
},
"second" : {
"future" : "za {0} sek.",
"current" : "sada",
"past" : "prije {0} sek."
},
"month" : {
"previous" : "prošli mjesec",
"next" : "sljedeći mjesec",
"past" : "prije {0} mj.",
"current" : "ovaj mjesec",
"future" : "za {0} mj."
},
"hour" : {
"future" : {
"few" : "za {0} sata",
"other" : "za {0} sati",
"one" : "za {0} sat"
},
"current" : "ovaj sat",
"past" : {
"other" : "prije {0} sati",
"one" : "prije {0} sat",
"few" : "prije {0} sata"
}
},
"now" : "sada",
"quarter" : {
"future" : "za {0} kv.",
"next" : "sljedeći kvartal",
"previous" : "posljednji kvartal",
"current" : "ovaj kvartal",
"past" : "prije {0} kv."
},
"minute" : {
"current" : "ova minuta",
"past" : "prije {0} min.",
"future" : "za {0} min."
},
"year" : {
"next" : "sljedeće godine",
"future" : "za {0} god.",
"current" : "ove godine",
"past" : "prije {0} god.",
"previous" : "prošle godine"
}
}
}

View File

@@ -0,0 +1,245 @@
{
"long" : {
"minute" : {
"current" : "aquest minut",
"past" : {
"one" : "fa {0} minut",
"other" : "fa {0} minuts"
},
"future" : {
"other" : "daquí a {0} minuts",
"one" : "daquí a {0} minut"
}
},
"hour" : {
"past" : {
"other" : "fa {0} hores",
"one" : "fa {0} hora"
},
"future" : {
"one" : "daquí a {0} hora",
"other" : "daquí a {0} hores"
},
"current" : "aquesta hora"
},
"quarter" : {
"current" : "aquest trimestre",
"next" : "el trimestre que ve",
"previous" : "el trimestre passat",
"past" : {
"other" : "fa {0} trimestres",
"one" : "fa {0} trimestre"
},
"future" : {
"one" : "daquí a {0} trimestre",
"other" : "daquí a {0} trimestres"
}
},
"now" : "ara",
"year" : {
"next" : "lany que ve",
"future" : {
"one" : "daquí a {0} any",
"other" : "daquí a {0} anys"
},
"past" : {
"one" : "fa {0} any",
"other" : "fa {0} anys"
},
"current" : "enguany",
"previous" : "lany passat"
},
"month" : {
"future" : {
"other" : "daquí a {0} mesos",
"one" : "daquí a {0} mes"
},
"previous" : "el mes passat",
"next" : "el mes que ve",
"past" : {
"other" : "fa {0} mesos",
"one" : "fa {0} mes"
},
"current" : "aquest mes"
},
"second" : {
"future" : {
"one" : "daquí a {0} segon",
"other" : "daquí a {0} segons"
},
"current" : "ara",
"past" : {
"other" : "fa {0} segons",
"one" : "fa {0} segon"
}
},
"day" : {
"previous" : "ahir",
"current" : "avui",
"next" : "demà",
"future" : {
"other" : "daquí a {0} dies",
"one" : "daquí a {0} dia"
},
"past" : {
"one" : "fa {0} dia",
"other" : "fa {0} dies"
}
},
"week" : {
"current" : "aquesta setmana",
"previous" : "la setmana passada",
"past" : {
"other" : "fa {0} setmanes",
"one" : "fa {0} setmana"
},
"future" : {
"one" : "daquí a {0} setmana",
"other" : "daquí a {0} setmanes"
},
"next" : "la setmana que ve"
}
},
"narrow" : {
"year" : {
"previous" : "lany passat",
"current" : "enguany",
"next" : "lany que ve",
"past" : {
"one" : "fa {0} any",
"other" : "fa {0} anys"
},
"future" : {
"other" : "daquí a {0} anys",
"one" : "daquí a {0} any"
}
},
"second" : {
"current" : "ara",
"future" : "daquí a {0} s",
"past" : "fa {0} s"
},
"hour" : {
"past" : "fa {0} h",
"current" : "aquesta hora",
"future" : "daquí a {0} h"
},
"week" : {
"current" : "aquesta setm.",
"previous" : "setm. passada",
"past" : "fa {0} setm.",
"next" : "setm. vinent",
"future" : "daquí a {0} setm."
},
"day" : {
"current" : "avui",
"next" : "demà",
"past" : {
"other" : "fa {0} dies",
"one" : "fa {0} dia"
},
"previous" : "ahir",
"future" : {
"one" : "daquí a {0} dia",
"other" : "daquí a {0} dies"
}
},
"month" : {
"current" : "aquest mes",
"next" : "mes vinent",
"past" : {
"one" : "fa {0} mes",
"other" : "fa {0} mesos"
},
"previous" : "mes passat",
"future" : {
"one" : "daquí a {0} mes",
"other" : "daquí a {0} mesos"
}
},
"now" : "ara",
"minute" : {
"current" : "aquest minut",
"past" : "fa {0} min",
"future" : "daquí a {0} min"
},
"quarter" : {
"previous" : "trim. passat",
"current" : "aquest trim.",
"past" : "fa {0} trim.",
"future" : "daquí a {0} trim.",
"next" : "trim. vinent"
}
},
"short" : {
"month" : {
"next" : "el mes que ve",
"past" : {
"other" : "fa {0} mesos",
"one" : "fa {0} mes"
},
"current" : "aquest mes",
"previous" : "el mes passat",
"future" : {
"other" : "daquí a {0} mesos",
"one" : "daquí a {0} mes"
}
},
"now" : "ara",
"day" : {
"next" : "demà",
"current" : "avui",
"previous" : "ahir",
"past" : {
"one" : "fa {0} dia",
"other" : "fa {0} dies"
},
"future" : {
"one" : "daquí a {0} dia",
"other" : "daquí a {0} dies"
}
},
"year" : {
"current" : "enguany",
"next" : "lany que ve",
"past" : {
"other" : "fa {0} anys",
"one" : "fa {0} any"
},
"future" : {
"one" : "daquí a {0} any",
"other" : "daquí a {0} anys"
},
"previous" : "lany passat"
},
"hour" : {
"current" : "aquesta hora",
"past" : "fa {0} h",
"future" : "daquí a {0} h"
},
"minute" : {
"past" : "fa {0} min",
"future" : "daquí a {0} min",
"current" : "aquest minut"
},
"second" : {
"future" : "daquí a {0} s",
"past" : "fa {0} s",
"current" : "ara"
},
"quarter" : {
"current" : "aquest trim.",
"future" : "daquí a {0} trim.",
"previous" : "el trim. passat",
"next" : "el trim. que ve",
"past" : "fa {0} trim."
},
"week" : {
"future" : "daquí a {0} setm.",
"previous" : "la setm. passada",
"next" : "la setm. que ve",
"past" : "fa {0} setm.",
"current" : "aquesta setm."
}
}
}

View File

@@ -0,0 +1,266 @@
{
"long" : {
"month" : {
"past" : {
"many" : "před {0} měsíce",
"other" : "před {0} měsíci",
"one" : "před {0} měsícem"
},
"previous" : "minulý měsíc",
"current" : "tento měsíc",
"future" : {
"one" : "za {0} měsíc",
"many" : "za {0} měsíce",
"few" : "za {0} měsíce",
"other" : "za {0} měsíců"
},
"next" : "příští měsíc"
},
"year" : {
"future" : {
"other" : "za {0} let",
"many" : "za {0} roku",
"one" : "za {0} rok",
"few" : "za {0} roky"
},
"past" : {
"one" : "před {0} rokem",
"many" : "před {0} roku",
"other" : "před {0} lety"
},
"current" : "tento rok",
"next" : "příští rok",
"previous" : "minulý rok"
},
"second" : {
"current" : "nyní",
"past" : {
"one" : "před {0} sekundou",
"other" : "před {0} sekundami",
"many" : "před {0} sekundy"
},
"future" : {
"many" : "za {0} sekundy",
"other" : "za {0} sekund",
"one" : "za {0} sekundu",
"few" : "za {0} sekundy"
}
},
"quarter" : {
"future" : "za {0} čtvrtletí",
"previous" : "minulé čtvrtletí",
"current" : "toto čtvrtletí",
"past" : {
"one" : "před {0} čtvrtletím",
"many" : "před {0} čtvrtletí",
"other" : "před {0} čtvrtletími"
},
"next" : "příští čtvrtletí"
},
"week" : {
"past" : {
"many" : "před {0} týdne",
"one" : "před {0} týdnem",
"other" : "před {0} týdny"
},
"current" : "tento týden",
"future" : {
"other" : "za {0} týdnů",
"one" : "za {0} týden",
"few" : "za {0} týdny",
"many" : "za {0} týdne"
},
"previous" : "minulý týden",
"next" : "příští týden"
},
"minute" : {
"current" : "tuto minutu",
"past" : {
"one" : "před {0} minutou",
"other" : "před {0} minutami",
"many" : "před {0} minuty"
},
"future" : {
"few" : "za {0} minuty",
"one" : "za {0} minutu",
"many" : "za {0} minuty",
"other" : "za {0} minut"
}
},
"day" : {
"past" : {
"other" : "před {0} dny",
"one" : "před {0} dnem",
"many" : "před {0} dne"
},
"previous" : "včera",
"current" : "dnes",
"next" : "zítra",
"future" : {
"few" : "za {0} dny",
"many" : "za {0} dne",
"other" : "za {0} dní",
"one" : "za {0} den"
}
},
"hour" : {
"future" : {
"many" : "za {0} hodiny",
"other" : "za {0} hodin",
"one" : "za {0} hodinu",
"few" : "za {0} hodiny"
},
"current" : "tuto hodinu",
"past" : {
"many" : "před {0} hodiny",
"one" : "před {0} hodinou",
"other" : "před {0} hodinami"
}
},
"now" : "nyní"
},
"narrow" : {
"hour" : {
"future" : "za {0} h",
"current" : "tuto hodinu",
"past" : "před {0} h"
},
"minute" : {
"past" : "před {0} min",
"future" : "za {0} min",
"current" : "tuto minutu"
},
"second" : {
"past" : "před {0} s",
"current" : "nyní",
"future" : "za {0} s"
},
"now" : "nyní",
"quarter" : {
"past" : "-{0} Q",
"previous" : "minulé čtvrtletí",
"next" : "příští čtvrtletí",
"future" : "+{0} Q",
"current" : "toto čtvrtletí"
},
"week" : {
"previous" : "minulý týd.",
"past" : "před {0} týd.",
"next" : "příští týd.",
"current" : "tento týd.",
"future" : "za {0} týd."
},
"year" : {
"past" : {
"other" : "před {0} l.",
"many" : "před {0} r.",
"one" : "před {0} r.",
"few" : "před {0} r."
},
"previous" : "minulý rok",
"current" : "tento rok",
"next" : "příští rok",
"future" : {
"few" : "za {0} r.",
"many" : "za {0} r.",
"one" : "za {0} r.",
"other" : "za {0} l."
}
},
"day" : {
"past" : {
"one" : "před {0} dnem",
"other" : "před {0} dny",
"many" : "před {0} dne"
},
"previous" : "včera",
"future" : {
"one" : "za {0} den",
"few" : "za {0} dny",
"many" : "za {0} dne",
"other" : "za {0} dní"
},
"next" : "zítra",
"current" : "dnes"
},
"month" : {
"current" : "tento měs.",
"next" : "příští měs.",
"future" : "za {0} měs.",
"past" : "před {0} měs.",
"previous" : "minuý měs."
}
},
"short" : {
"year" : {
"current" : "tento rok",
"previous" : "minulý rok",
"next" : "příští rok",
"past" : {
"few" : "před {0} r.",
"one" : "před {0} r.",
"many" : "před {0} r.",
"other" : "před {0} l."
},
"future" : {
"few" : "za {0} r.",
"many" : "za {0} r.",
"other" : "za {0} l.",
"one" : "za {0} r."
}
},
"quarter" : {
"next" : "příští čtvrtletí",
"future" : "+{0} Q",
"current" : "toto čtvrtletí",
"past" : "-{0} Q",
"previous" : "minulé čtvrtletí"
},
"second" : {
"past" : "před {0} s",
"future" : "za {0} s",
"current" : "nyní"
},
"minute" : {
"future" : "za {0} min",
"current" : "tuto minutu",
"past" : "před {0} min"
},
"day" : {
"past" : {
"many" : "před {0} dne",
"other" : "před {0} dny",
"one" : "před {0} dnem"
},
"next" : "zítra",
"future" : {
"one" : "za {0} den",
"many" : "za {0} dne",
"other" : "za {0} dní",
"few" : "za {0} dny"
},
"previous" : "včera",
"current" : "dnes"
},
"month" : {
"future" : "za {0} měs.",
"next" : "příští měs.",
"previous" : "minulý měs.",
"current" : "tento měs.",
"past" : "před {0} měs."
},
"hour" : {
"future" : "za {0} h",
"current" : "tuto hodinu",
"past" : "před {0} h"
},
"now" : "nyní",
"week" : {
"previous" : "minulý týd.",
"next" : "příští týd.",
"past" : "před {0} týd.",
"current" : "tento týd.",
"future" : "za {0} týd."
}
}
}

View File

@@ -0,0 +1,283 @@
{
"narrow" : {
"now" : "nawr",
"minute" : {
"past" : "{0} mun. yn ôl",
"current" : "y funud hon",
"future" : "ymhen {0} mun."
},
"day" : {
"current" : "heddiw",
"future" : "ymhen {0} diwrnod",
"next" : "yfory",
"past" : {
"two" : "{0} ddiwrnod yn ôl",
"other" : "{0} diwrnod yn ôl"
},
"previous" : "ddoe"
},
"month" : {
"next" : "mis nesaf",
"past" : {
"two" : "{0} fis yn ôl",
"other" : "{0} mis yn ôl"
},
"future" : {
"one" : "ymhen mis",
"two" : "ymhen deufis",
"other" : "ymhen {0} mis"
},
"previous" : "mis diwethaf",
"current" : "y mis hwn"
},
"week" : {
"future" : "ymhen {0} wythnos",
"previous" : "wythnos ddiwethaf",
"current" : "yr wythnos hon",
"next" : "wythnos nesaf",
"past" : {
"two" : "pythefnos yn ôl",
"other" : "{0} wythnos yn ôl"
}
},
"quarter" : {
"previous" : "chwarter olaf",
"future" : "ymhen {0} chwarter",
"next" : "chwarter nesaf",
"current" : "chwarter hwn",
"past" : {
"one" : "{0} chwarter yn ôl",
"few" : "{0} chwarter yn ôl",
"many" : "{0} chwarter yn ôl",
"other" : "{0} o chwarteri yn ôl",
"two" : "{0} chwarter yn ôl"
}
},
"year" : {
"future" : {
"few" : "ymhen {0} blynedd",
"one" : "ymhen blwyddyn",
"many" : "ymhen {0} blynedd",
"other" : "ymhen {0} mlynedd",
"two" : "ymhen {0} flynedd"
},
"next" : "blwyddyn nesaf",
"past" : {
"other" : "{0} o flynyddoedd yn ôl",
"two" : "{0} flynedd yn ôl",
"few" : "{0} blynedd yn ôl",
"many" : "{0} blynedd yn ôl",
"one" : "blwyddyn yn ôl"
},
"previous" : "llynedd",
"current" : "eleni"
},
"hour" : {
"current" : "yr awr hon",
"past" : "{0} awr yn ôl",
"future" : "ymhen {0} awr"
},
"second" : {
"past" : "{0} eiliad yn ôl",
"current" : "nawr",
"future" : "ymhen {0} eiliad"
}
},
"long" : {
"now" : "nawr",
"year" : {
"past" : {
"one" : "blwyddyn yn ôl",
"two" : "{0} flynedd yn ôl",
"few" : "{0} blynedd yn ôl",
"many" : "{0} blynedd yn ôl",
"other" : "{0} o flynyddoedd yn ôl"
},
"previous" : "llynedd",
"current" : "eleni",
"next" : "blwyddyn nesaf",
"future" : {
"many" : "ymhen {0} blynedd",
"few" : "ymhen {0} blynedd",
"one" : "ymhen blwyddyn",
"other" : "ymhen {0} mlynedd",
"two" : "ymhen {0} flynedd"
}
},
"month" : {
"next" : "mis nesaf",
"current" : "y mis hwn",
"past" : {
"two" : "{0} fis yn ôl",
"other" : "{0} mis yn ôl"
},
"previous" : "mis diwethaf",
"future" : {
"two" : "ymhen deufis",
"other" : "ymhen {0} mis",
"one" : "ymhen mis"
}
},
"week" : {
"next" : "wythnos nesaf",
"future" : {
"other" : "ymhen {0} wythnos",
"one" : "ymhen wythnos",
"two" : "ymhen pythefnos"
},
"current" : "yr wythnos hon",
"past" : "{0} wythnos yn ôl",
"previous" : "wythnos ddiwethaf"
},
"hour" : {
"future" : {
"one" : "ymhen awr",
"other" : "ymhen {0} awr"
},
"current" : "yr awr hon",
"past" : "{0} awr yn ôl"
},
"minute" : {
"current" : "y funud hon",
"past" : "{0} munud yn ôl",
"future" : "ymhen {0} munud"
},
"second" : {
"future" : "ymhen {0} eiliad",
"past" : "{0} eiliad yn ôl",
"current" : "nawr"
},
"quarter" : {
"future" : "ymhen {0} chwarter",
"current" : "chwarter hwn",
"previous" : "chwarter olaf",
"next" : "chwarter nesaf",
"past" : {
"many" : "{0} chwarter yn ôl",
"other" : "{0} o chwarteri yn ôl",
"one" : "{0} chwarter yn ôl",
"few" : "{0} chwarter yn ôl",
"two" : "{0} chwarter yn ôl"
}
},
"day" : {
"future" : {
"one" : "ymhen diwrnod",
"two" : "ymhen deuddydd",
"other" : "ymhen {0} diwrnod"
},
"previous" : "ddoe",
"current" : "heddiw",
"next" : "yfory",
"past" : {
"two" : "{0} ddiwrnod yn ôl",
"other" : "{0} diwrnod yn ôl"
}
}
},
"short" : {
"year" : {
"current" : "eleni",
"past" : {
"other" : "{0} o flynyddoedd yn ôl",
"many" : "{0} blynedd yn ôl",
"one" : "blwyddyn yn ôl",
"two" : "{0} flynedd yn ôl",
"few" : "{0} blynedd yn ôl"
},
"future" : {
"few" : "ymhen {0} blynedd",
"one" : "ymhen blwyddyn",
"two" : "ymhen {0} flynedd",
"many" : "ymhen {0} blynedd",
"other" : "ymhen {0} mlynedd"
},
"next" : "blwyddyn nesaf",
"previous" : "llynedd"
},
"minute" : {
"future" : {
"one" : "ymhen {0} mun.",
"other" : "ymhen {0} munud",
"two" : "ymhen {0} fun."
},
"past" : {
"two" : "{0} fun. yn ôl",
"other" : "{0} munud yn ôl"
},
"current" : "y funud hon"
},
"day" : {
"previous" : "ddoe",
"current" : "heddiw",
"next" : "yfory",
"past" : {
"two" : "{0} ddiwrnod yn ôl",
"other" : "{0} diwrnod yn ôl"
},
"future" : {
"two" : "ymhen deuddydd",
"one" : "ymhen diwrnod",
"other" : "ymhen {0} diwrnod"
}
},
"second" : {
"past" : "{0} eiliad yn ôl",
"current" : "nawr",
"future" : "ymhen {0} eiliad"
},
"now" : "nawr",
"month" : {
"future" : {
"one" : "ymhen mis",
"two" : "ymhen deufis",
"other" : "ymhen {0} mis"
},
"current" : "y mis hwn",
"next" : "mis nesaf",
"previous" : "mis diwethaf",
"past" : {
"two" : "deufis yn ôl",
"other" : "{0} mis yn ôl"
}
},
"week" : {
"past" : {
"two" : "pythefnos yn ôl",
"other" : "{0} wythnos yn ôl"
},
"previous" : "wythnos ddiwethaf",
"future" : {
"one" : "ymhen wythnos",
"other" : "ymhen {0} wythnos",
"two" : "ymhen pythefnos"
},
"next" : "wythnos nesaf",
"current" : "yr wythnos hon"
},
"quarter" : {
"next" : "chwarter nesaf",
"current" : "chwarter hwn",
"previous" : "chwarter olaf",
"past" : {
"many" : "{0} chwarter yn ôl",
"one" : "{0} chwarter yn ôl",
"few" : "{0} chwarter yn ôl",
"other" : "{0} o chwarteri yn ôl",
"two" : "{0} chwarter yn ôl"
},
"future" : "ymhen {0} chwarter"
},
"hour" : {
"current" : "yr awr hon",
"future" : {
"one" : "ymhen awr",
"other" : "ymhen {0} awr"
},
"past" : {
"other" : "{0} awr yn ôl",
"one" : "awr yn ôl"
}
}
}
}

View File

@@ -0,0 +1,251 @@
{
"narrow" : {
"hour" : {
"current" : "i den kommende time",
"future" : {
"one" : "om {0} time",
"other" : "om {0} timer"
},
"past" : {
"other" : "for {0} timer siden",
"one" : "for {0} time siden"
}
},
"week" : {
"previous" : "sidste uge",
"current" : "denne uge",
"next" : "næste uge",
"past" : {
"one" : "for {0} uge siden",
"other" : "for {0} uger siden"
},
"future" : {
"one" : "om {0} uge",
"other" : "om {0} uger"
}
},
"second" : {
"current" : "nu",
"future" : "om {0} sek.",
"past" : "for {0} sek. siden"
},
"month" : {
"previous" : "sidste md.",
"next" : "næste md.",
"future" : {
"other" : "om {0} mdr.",
"one" : "om {0} md."
},
"current" : "denne md.",
"past" : {
"other" : "for {0} mdr. siden",
"one" : "for {0} md. siden"
}
},
"minute" : {
"past" : "for {0} min. siden",
"future" : "om {0} min.",
"current" : "i det kommende minut"
},
"now" : "nu",
"year" : {
"future" : "om {0} år",
"previous" : "sidste år",
"current" : "i år",
"next" : "næste år",
"past" : "for {0} år siden"
},
"quarter" : {
"next" : "næste kvt.",
"future" : "om {0} kvt.",
"previous" : "sidste kvt.",
"current" : "dette kvt.",
"past" : "for {0} kvt. siden"
},
"day" : {
"previous" : "i går",
"current" : "i dag",
"next" : "i morgen",
"past" : {
"one" : "for {0} dag siden",
"other" : "for {0} dage siden"
},
"future" : {
"one" : "om {0} dag",
"other" : "om {0} dage"
}
}
},
"long" : {
"day" : {
"previous" : "i går",
"next" : "i morgen",
"future" : {
"other" : "om {0} dage",
"one" : "om {0} dag"
},
"current" : "i dag",
"past" : {
"one" : "for {0} dag siden",
"other" : "for {0} dage siden"
}
},
"second" : {
"past" : {
"other" : "for {0} sekunder siden",
"one" : "for {0} sekund siden"
},
"current" : "nu",
"future" : {
"one" : "om {0} sekund",
"other" : "om {0} sekunder"
}
},
"minute" : {
"past" : {
"one" : "for {0} minut siden",
"other" : "for {0} minutter siden"
},
"current" : "i det kommende minut",
"future" : {
"one" : "om {0} minut",
"other" : "om {0} minutter"
}
},
"week" : {
"current" : "denne uge",
"past" : {
"one" : "for {0} uge siden",
"other" : "for {0} uger siden"
},
"future" : {
"other" : "om {0} uger",
"one" : "om {0} uge"
},
"previous" : "sidste uge",
"next" : "næste uge"
},
"now" : "nu",
"year" : {
"current" : "i år",
"next" : "næste år",
"past" : "for {0} år siden",
"previous" : "sidste år",
"future" : "om {0} år"
},
"month" : {
"previous" : "sidste måned",
"past" : {
"one" : "for {0} måned siden",
"other" : "for {0} måneder siden"
},
"future" : {
"one" : "om {0} måned",
"other" : "om {0} måneder"
},
"current" : "denne måned",
"next" : "næste måned"
},
"hour" : {
"future" : {
"one" : "om {0} time",
"other" : "om {0} timer"
},
"past" : {
"other" : "for {0} timer siden",
"one" : "for {0} time siden"
},
"current" : "i den kommende time"
},
"quarter" : {
"current" : "dette kvartal",
"future" : {
"other" : "om {0} kvartaler",
"one" : "om {0} kvartal"
},
"next" : "næste kvartal",
"previous" : "sidste kvartal",
"past" : {
"other" : "for {0} kvartaler siden",
"one" : "for {0} kvartal siden"
}
}
},
"short" : {
"hour" : {
"future" : {
"one" : "om {0} time",
"other" : "om {0} timer"
},
"past" : {
"other" : "for {0} timer siden",
"one" : "for {0} time siden"
},
"current" : "i den kommende time"
},
"now" : "nu",
"quarter" : {
"current" : "dette kvt.",
"future" : "om {0} kvt.",
"past" : "for {0} kvt. siden",
"next" : "næste kvt.",
"previous" : "sidste kvt."
},
"day" : {
"current" : "i dag",
"past" : {
"one" : "for {0} dag siden",
"other" : "for {0} dage siden"
},
"future" : {
"one" : "om {0} dag",
"other" : "om {0} dage"
},
"next" : "i morgen",
"previous" : "i går"
},
"week" : {
"current" : "denne uge",
"future" : {
"one" : "om {0} uge",
"other" : "om {0} uger"
},
"previous" : "sidste uge",
"next" : "næste uge",
"past" : {
"one" : "for {0} uge siden",
"other" : "for {0} uger siden"
}
},
"minute" : {
"past" : "for {0} min. siden",
"current" : "i det kommende minut",
"future" : "om {0} min."
},
"second" : {
"future" : "om {0} sek.",
"past" : "for {0} sek. siden",
"current" : "nu"
},
"month" : {
"future" : {
"one" : "om {0} md.",
"other" : "om {0} mdr."
},
"previous" : "sidste md.",
"next" : "næste md.",
"current" : "denne md.",
"past" : {
"other" : "for {0} mdr. siden",
"one" : "for {0} md. siden"
}
},
"year" : {
"next" : "næste år",
"previous" : "sidste år",
"current" : "i år",
"future" : "om {0} år",
"past" : "for {0} år siden"
}
}
}

View File

@@ -0,0 +1,251 @@
{
"narrow" : {
"year" : {
"past" : {
"other" : "vor {0} Jahren",
"one" : "vor {0} Jahr"
},
"current" : "dieses Jahr",
"future" : {
"one" : "in {0} Jahr",
"other" : "in {0} Jahren"
},
"previous" : "letztes Jahr",
"next" : "nächstes Jahr"
},
"minute" : {
"future" : "in {0} m",
"current" : "in dieser Minute",
"past" : "vor {0} m"
},
"day" : {
"current" : "heute",
"past" : {
"one" : "vor {0} Tag",
"other" : "vor {0} Tagen"
},
"previous" : "gestern",
"next" : "morgen",
"future" : {
"one" : "in {0} Tag",
"other" : "in {0} Tagen"
}
},
"now" : "jetzt",
"week" : {
"current" : "diese Woche",
"future" : "in {0} Wo.",
"next" : "nächste Woche",
"past" : "vor {0} Wo.",
"previous" : "letzte Woche"
},
"second" : {
"current" : "jetzt",
"past" : "vor {0} s",
"future" : "in {0} s"
},
"hour" : {
"current" : "in dieser Stunde",
"future" : "in {0} Std.",
"past" : "vor {0} Std."
},
"quarter" : {
"current" : "dieses Quartal",
"previous" : "letztes Quartal",
"next" : "nächstes Quartal",
"future" : "in {0} Q",
"past" : "vor {0} Q"
},
"month" : {
"current" : "diesen Monat",
"future" : {
"one" : "in {0} Monat",
"other" : "in {0} Monaten"
},
"previous" : "letzten Monat",
"past" : {
"other" : "vor {0} Monaten",
"one" : "vor {0} Monat"
},
"next" : "nächsten Monat"
}
},
"long" : {
"month" : {
"previous" : "letzten Monat",
"next" : "nächsten Monat",
"past" : {
"other" : "vor {0} Monaten",
"one" : "vor {0} Monat"
},
"current" : "diesen Monat",
"future" : {
"one" : "in {0} Monat",
"other" : "in {0} Monaten"
}
},
"second" : {
"past" : {
"one" : "vor {0} Sekunde",
"other" : "vor {0} Sekunden"
},
"future" : {
"other" : "in {0} Sekunden",
"one" : "in {0} Sekunde"
},
"current" : "jetzt"
},
"hour" : {
"past" : {
"other" : "vor {0} Stunden",
"one" : "vor {0} Stunde"
},
"current" : "in dieser Stunde",
"future" : {
"one" : "in {0} Stunde",
"other" : "in {0} Stunden"
}
},
"quarter" : {
"previous" : "letztes Quartal",
"future" : {
"one" : "in {0} Quartal",
"other" : "in {0} Quartalen"
},
"next" : "nächstes Quartal",
"current" : "dieses Quartal",
"past" : {
"one" : "vor {0} Quartal",
"other" : "vor {0} Quartalen"
}
},
"now" : "jetzt",
"minute" : {
"current" : "in dieser Minute",
"future" : {
"other" : "in {0} Minuten",
"one" : "in {0} Minute"
},
"past" : {
"other" : "vor {0} Minuten",
"one" : "vor {0} Minute"
}
},
"day" : {
"past" : {
"one" : "vor {0} Tag",
"other" : "vor {0} Tagen"
},
"previous" : "gestern",
"current" : "heute",
"future" : {
"one" : "in {0} Tag",
"other" : "in {0} Tagen"
},
"next" : "morgen"
},
"year" : {
"past" : {
"other" : "vor {0} Jahren",
"one" : "vor {0} Jahr"
},
"next" : "nächstes Jahr",
"current" : "dieses Jahr",
"previous" : "letztes Jahr",
"future" : {
"one" : "in {0} Jahr",
"other" : "in {0} Jahren"
}
},
"week" : {
"current" : "diese Woche",
"past" : {
"other" : "vor {0} Wochen",
"one" : "vor {0} Woche"
},
"previous" : "letzte Woche",
"future" : {
"one" : "in {0} Woche",
"other" : "in {0} Wochen"
},
"next" : "nächste Woche"
}
},
"short" : {
"minute" : {
"past" : "vor {0} Min.",
"future" : "in {0} Min.",
"current" : "in dieser Minute"
},
"week" : {
"past" : {
"one" : "vor {0} Woche",
"other" : "vor {0} Wochen"
},
"future" : {
"one" : "in {0} Woche",
"other" : "in {0} Wochen"
},
"next" : "nächste Woche",
"current" : "diese Woche",
"previous" : "letzte Woche"
},
"day" : {
"future" : {
"one" : "in {0} Tag",
"other" : "in {0} Tagen"
},
"current" : "heute",
"previous" : "gestern",
"next" : "morgen",
"past" : {
"one" : "vor {0} Tag",
"other" : "vor {0} Tagen"
}
},
"second" : {
"past" : "vor {0} Sek.",
"future" : "in {0} Sek.",
"current" : "jetzt"
},
"now" : "jetzt",
"year" : {
"past" : {
"other" : "vor {0} Jahren",
"one" : "vor {0} Jahr"
},
"future" : {
"one" : "in {0} Jahr",
"other" : "in {0} Jahren"
},
"previous" : "letztes Jahr",
"current" : "dieses Jahr",
"next" : "nächstes Jahr"
},
"month" : {
"past" : {
"other" : "vor {0} Monaten",
"one" : "vor {0} Monat"
},
"future" : {
"other" : "in {0} Monaten",
"one" : "in {0} Monat"
},
"next" : "nächsten Monat",
"previous" : "letzten Monat",
"current" : "diesen Monat"
},
"quarter" : {
"previous" : "letztes Quartal",
"future" : "in {0} Quart.",
"next" : "nächstes Quartal",
"past" : "vor {0} Quart.",
"current" : "dieses Quartal"
},
"hour" : {
"current" : "in dieser Stunde",
"past" : "vor {0} Std.",
"future" : "in {0} Std."
}
}
}

View File

@@ -0,0 +1,237 @@
{
"narrow" : {
"second" : {
"future" : "za {0} s",
"current" : "now",
"past" : "pśed {0} s"
},
"year" : {
"next" : "znowa",
"past" : "pśed {0} l.",
"future" : "za {0} l.",
"previous" : "łoni",
"current" : "lětosa"
},
"month" : {
"past" : "pśed {0} mjas.",
"next" : "pśiducy mjasec",
"future" : "za {0} mjas.",
"previous" : "slědny mjasec",
"current" : "ten mjasec"
},
"minute" : {
"future" : "za {0} m",
"current" : "this minute",
"past" : "pśed {0} m"
},
"quarter" : {
"previous" : "last quarter",
"current" : "this quarter",
"next" : "next quarter",
"past" : "pśed {0} kw.",
"future" : "za {0} kw."
},
"hour" : {
"future" : "za {0} g",
"current" : "this hour",
"past" : "pśed {0} g"
},
"now" : "now",
"week" : {
"next" : "pśiducy tyźeń",
"previous" : "slědny tyźeń",
"past" : "pśed {0} tyź.",
"future" : "za {0} tyź.",
"current" : "ten tyźeń"
},
"day" : {
"previous" : "cora",
"future" : "za {0} ź",
"past" : "pśed {0} d",
"current" : "źinsa",
"next" : "witśe"
}
},
"long" : {
"week" : {
"past" : {
"two" : "pśed {0} tyźenjoma",
"other" : "pśed {0} tyźenjami",
"one" : "pśed {0} tyźenjom"
},
"future" : {
"other" : "za {0} tyźenjow",
"two" : "za {0} tyźenja",
"few" : "za {0} tyźenje",
"one" : "za {0} tyźeń"
},
"previous" : "slědny tyźeń",
"current" : "ten tyźeń",
"next" : "pśiducy tyźeń"
},
"now" : "now",
"quarter" : {
"previous" : "last quarter",
"past" : {
"one" : "pśed {0} kwartalom",
"two" : "pśed {0} kwartaloma",
"other" : "pśed {0} kwartalami"
},
"future" : {
"one" : "za {0} kwartal",
"two" : "za {0} kwartala",
"few" : "za {0} kwartale",
"other" : "za {0} kwartalow"
},
"current" : "this quarter",
"next" : "next quarter"
},
"month" : {
"past" : {
"one" : "pśed {0} mjasecom",
"other" : "pśed {0} mjasecami",
"two" : "pśed {0} mjasecoma"
},
"current" : "ten mjasec",
"next" : "pśiducy mjasec",
"future" : {
"one" : "za {0} mjasec",
"few" : "za {0} mjasecy",
"two" : "za {0} mjaseca",
"other" : "za {0} mjasecow"
},
"previous" : "slědny mjasec"
},
"year" : {
"previous" : "łoni",
"future" : {
"one" : "za {0} lěto",
"few" : "za {0} lěta",
"other" : "za {0} lět",
"two" : "za {0} lěśe"
},
"next" : "znowa",
"current" : "lětosa",
"past" : {
"two" : "pśed {0} lětoma",
"one" : "pśed {0} lětom",
"other" : "pśed {0} lětami"
}
},
"minute" : {
"current" : "this minute",
"future" : {
"one" : "za {0} minutu",
"few" : "za {0} minuty",
"two" : "za {0} minuśe",
"other" : "za {0} minutow"
},
"past" : {
"two" : "pśed {0} minutoma",
"one" : "pśed {0} minutu",
"other" : "pśed {0} minutami"
}
},
"hour" : {
"future" : {
"two" : "za {0} góźinje",
"few" : "za {0} góźiny",
"one" : "za {0} góźinu",
"other" : "za {0} góźin"
},
"past" : {
"one" : "pśed {0} góźinu",
"two" : "pśed {0} góźinoma",
"other" : "pśed {0} góźinami"
},
"current" : "this hour"
},
"day" : {
"previous" : "cora",
"current" : "źinsa",
"next" : "witśe",
"future" : {
"two" : "za {0} dnja",
"few" : "za {0} dny",
"one" : "za {0} źeń",
"other" : "za {0} dnjow"
},
"past" : {
"other" : "pśed {0} dnjami",
"two" : "pśed {0} dnjoma",
"one" : "pśed {0} dnjom"
}
},
"second" : {
"future" : {
"two" : "za {0} sekunźe",
"other" : "za {0} sekundow",
"few" : "za {0} sekundy",
"one" : "za {0} sekundu"
},
"current" : "now",
"past" : {
"one" : "pśed {0} sekundu",
"two" : "pśed {0} sekundoma",
"other" : "pśed {0} sekundami"
}
}
},
"short" : {
"minute" : {
"past" : "pśed {0} min.",
"current" : "this minute",
"future" : "za {0} min."
},
"month" : {
"current" : "ten mjasec",
"past" : "pśed {0} mjas.",
"future" : "za {0} mjas.",
"next" : "pśiducy mjasec",
"previous" : "slědny mjasec"
},
"week" : {
"current" : "ten tyźeń",
"past" : "pśed {0} tyź.",
"future" : "za {0} tyź.",
"next" : "pśiducy tyźeń",
"previous" : "slědny tyźeń"
},
"hour" : {
"past" : "pśed {0} góź.",
"future" : "za {0} góź.",
"current" : "this hour"
},
"day" : {
"next" : "witśe",
"current" : "źinsa",
"previous" : "cora",
"past" : "pśed {0} dnj.",
"future" : {
"few" : "za {0} dny",
"other" : "za {0} dnj.",
"one" : "za {0} źeń"
}
},
"second" : {
"current" : "now",
"past" : "pśed {0} sek.",
"future" : "za {0} sek."
},
"now" : "now",
"year" : {
"future" : "za {0} l.",
"previous" : "łoni",
"next" : "znowa",
"current" : "lětosa",
"past" : "pśed {0} l."
},
"quarter" : {
"current" : "this quarter",
"future" : "za {0} kwart.",
"previous" : "last quarter",
"next" : "next quarter",
"past" : "pśed {0} kwart."
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"quarter" : {
"current" : "this quarter",
"past" : "-{0} Q",
"next" : "next quarter",
"future" : "+{0} Q",
"previous" : "last quarter"
},
"day" : {
"next" : "ནངས་པ་",
"previous" : "ཁ་ཙ་",
"future" : "ཉིནམ་ {0} ནང་",
"past" : "ཉིནམ་ {0} ཧེ་མ་",
"current" : "ད་རིས་"
},
"year" : {
"past" : "ལོ་འཁོར་ {0} ཧེ་མ་",
"previous" : "last year",
"future" : "ལོ་འཁོར་ {0} ནང་",
"next" : "next year",
"current" : "this year"
},
"minute" : {
"current" : "this minute",
"past" : "སྐར་མ་ {0} ཧེ་མ་",
"future" : "སྐར་མ་ {0} ནང་"
},
"now" : "now",
"week" : {
"current" : "this week",
"previous" : "last week",
"past" : "བངུན་ཕྲག་ {0} ཧེ་མ་",
"next" : "next week",
"future" : "བངུན་ཕྲག་ {0} ནང་"
},
"second" : {
"current" : "now",
"future" : "སྐར་ཆ་ {0} ནང་",
"past" : "སྐར་ཆ་ {0} ཧེ་མ་"
},
"month" : {
"future" : "ཟླཝ་ {0} ནང་",
"current" : "this month",
"past" : "ཟླཝ་ {0} ཧེ་མ་",
"previous" : "last month",
"next" : "next month"
},
"hour" : {
"past" : "ཆུ་ཚོད་ {0} ཧེ་མ་",
"future" : "ཆུ་ཚོད་ {0} ནང་",
"current" : "this hour"
}
},
"long" : {
"year" : {
"next" : "next year",
"previous" : "last year",
"past" : "ལོ་འཁོར་ {0} ཧེ་མ་",
"future" : "ལོ་འཁོར་ {0} ནང་",
"current" : "this year"
},
"now" : "now",
"quarter" : {
"next" : "next quarter",
"past" : "-{0} Q",
"future" : "+{0} Q",
"current" : "this quarter",
"previous" : "last quarter"
},
"month" : {
"past" : "ཟླཝ་ {0} ཧེ་མ་",
"next" : "next month",
"previous" : "last month",
"future" : "ཟླཝ་ {0} ནང་",
"current" : "this month"
},
"second" : {
"past" : "སྐར་ཆ་ {0} ཧེ་མ་",
"future" : "སྐར་ཆ་ {0} ནང་",
"current" : "now"
},
"week" : {
"past" : "བངུན་ཕྲག་ {0} ཧེ་མ་",
"previous" : "last week",
"future" : "བངུན་ཕྲག་ {0} ནང་",
"next" : "next week",
"current" : "this week"
},
"day" : {
"next" : "ནངས་པ་",
"future" : "ཉིནམ་ {0} ནང་",
"previous" : "ཁ་ཙ་",
"current" : "ད་རིས་",
"past" : "ཉིནམ་ {0} ཧེ་མ་"
},
"minute" : {
"past" : "སྐར་མ་ {0} ཧེ་མ་",
"future" : "སྐར་མ་ {0} ནང་",
"current" : "this minute"
},
"hour" : {
"current" : "this hour",
"past" : "ཆུ་ཚོད་ {0} ཧེ་མ་",
"future" : "ཆུ་ཚོད་ {0} ནང་"
}
},
"short" : {
"minute" : {
"current" : "this minute",
"past" : "སྐར་མ་ {0} ཧེ་མ་",
"future" : "སྐར་མ་ {0} ནང་"
},
"week" : {
"future" : "བངུན་ཕྲག་ {0} ནང་",
"previous" : "last week",
"next" : "next week",
"current" : "this week",
"past" : "བངུན་ཕྲག་ {0} ཧེ་མ་"
},
"year" : {
"current" : "this year",
"previous" : "last year",
"future" : "ལོ་འཁོར་ {0} ནང་",
"past" : "ལོ་འཁོར་ {0} ཧེ་མ་",
"next" : "next year"
},
"month" : {
"next" : "next month",
"past" : "ཟླཝ་ {0} ཧེ་མ་",
"future" : "ཟླཝ་ {0} ནང་",
"previous" : "last month",
"current" : "this month"
},
"quarter" : {
"next" : "next quarter",
"past" : "-{0} Q",
"previous" : "last quarter",
"current" : "this quarter",
"future" : "+{0} Q"
},
"day" : {
"current" : "ད་རིས་",
"previous" : "ཁ་ཙ་",
"past" : "ཉིནམ་ {0} ཧེ་མ་",
"next" : "ནངས་པ་",
"future" : "ཉིནམ་ {0} ནང་"
},
"hour" : {
"future" : "ཆུ་ཚོད་ {0} ནང་",
"current" : "this hour",
"past" : "ཆུ་ཚོད་ {0} ཧེ་མ་"
},
"second" : {
"current" : "now",
"past" : "སྐར་ཆ་ {0} ཧེ་མ་",
"future" : "སྐར་ཆ་ {0} ནང་"
},
"now" : "now"
}
}

View File

@@ -0,0 +1,275 @@
{
"narrow" : {
"day" : {
"current" : "egbe",
"next" : "etsɔ si gbɔna",
"future" : {
"one" : "le ŋkeke {0} me",
"other" : "le ŋkeke {0} wo me"
},
"past" : {
"one" : "ŋkeke {0} si va yi",
"other" : "ŋkeke {0} si wo va yi"
},
"previous" : "etsɔ si va yi"
},
"week" : {
"next" : "kɔsiɖa si gbɔ na",
"previous" : "kɔsiɖa si va yi",
"future" : {
"other" : "le kɔsiɖa {0} wo me",
"one" : "le kɔsiɖa {0} me"
},
"current" : "kɔsiɖa sia",
"past" : {
"one" : "kɔsiɖa {0} si va yi",
"other" : "kɔsiɖa {0} si wo va yi"
}
},
"year" : {
"current" : "ƒe sia",
"past" : "ƒe {0} si va yi me",
"next" : "ƒe si gbɔ na",
"previous" : "ƒe si va yi",
"future" : "le ƒe {0} si gbɔna me"
},
"hour" : {
"past" : {
"other" : "gaƒoƒo {0} si wo va yi",
"one" : "gaƒoƒo {0} si va yi"
},
"future" : {
"other" : "le gaƒoƒo {0} wo me",
"one" : "le gaƒoƒo {0} me"
},
"current" : "this hour"
},
"now" : "fifi",
"second" : {
"past" : {
"one" : "sekend {0} si va yi",
"other" : "sekend {0} si wo va yi"
},
"current" : "fifi",
"future" : {
"other" : "le sekend {0} wo me",
"one" : "le sekend {0} me"
}
},
"minute" : {
"future" : {
"other" : "le aɖabaƒoƒo {0} wo me",
"one" : "le aɖabaƒoƒo {0} me"
},
"current" : "this minute",
"past" : {
"one" : "aɖabaƒoƒo {0} si va yi",
"other" : "aɖabaƒoƒo {0} si wo va yi"
}
},
"quarter" : {
"current" : "this quarter",
"future" : {
"one" : "le kɔta {0} si gbɔna me",
"other" : "le kɔta {0} si gbɔ na me"
},
"next" : "next quarter",
"previous" : "last quarter",
"past" : "kɔta {0} si va yi me"
},
"month" : {
"next" : "ɣleti si gbɔ na",
"past" : {
"other" : "ɣleti {0} si wo va yi",
"one" : "ɣleti {0} si va yi"
},
"future" : {
"one" : "le ɣleti {0} me",
"other" : "le ɣleti {0} wo me"
},
"previous" : "ɣleti si va yi",
"current" : "ɣleti sia"
}
},
"long" : {
"second" : {
"past" : {
"other" : "sekend {0} si wo va yi",
"one" : "sekend {0} si va yi"
},
"future" : {
"one" : "le sekend {0} me",
"other" : "le sekend {0} wo me"
},
"current" : "fifi"
},
"week" : {
"current" : "kɔsiɖa sia",
"next" : "kɔsiɖa si gbɔ na",
"previous" : "kɔsiɖa si va yi",
"past" : {
"one" : "kɔsiɖa {0} si va yi",
"other" : "kɔsiɖa {0} si wo va yi"
},
"future" : {
"one" : "le kɔsiɖa {0} me",
"other" : "le kɔsiɖa {0} wo me"
}
},
"day" : {
"past" : {
"other" : "ŋkeke {0} si wo va yi",
"one" : "ŋkeke {0} si va yi"
},
"previous" : "etsɔ si va yi",
"next" : "etsɔ si gbɔna",
"future" : {
"one" : "le ŋkeke {0} me",
"other" : "le ŋkeke {0} wo me"
},
"current" : "egbe"
},
"now" : "fifi",
"hour" : {
"future" : {
"other" : "le gaƒoƒo {0} wo me",
"one" : "le gaƒoƒo {0} me"
},
"past" : {
"one" : "gaƒoƒo {0} si va yi",
"other" : "gaƒoƒo {0} si wo va yi"
},
"current" : "this hour"
},
"month" : {
"future" : {
"one" : "le ɣleti {0} me",
"other" : "le ɣleti {0} wo me"
},
"past" : {
"other" : "ɣleti {0} si wo va yi",
"one" : "ɣleti {0} si va yi"
},
"current" : "ɣleti sia",
"next" : "ɣleti si gbɔ na",
"previous" : "ɣleti si va yi"
},
"minute" : {
"past" : {
"other" : "aɖabaƒoƒo {0} si wo va yi",
"one" : "aɖabaƒoƒo {0} si va yi"
},
"future" : {
"other" : "le aɖabaƒoƒo {0} wo me",
"one" : "le aɖabaƒoƒo {0} me"
},
"current" : "this minute"
},
"year" : {
"next" : "ƒe si gbɔ na",
"previous" : "ƒe si va yi",
"past" : {
"one" : "ƒe {0} si va yi",
"other" : "ƒe {0} si wo va yi"
},
"future" : "le ƒe {0} me",
"current" : "ƒe sia"
},
"quarter" : {
"future" : "le kɔta {0} si gbɔ na me",
"current" : "this quarter",
"past" : "kɔta {0} si va yi me",
"next" : "next quarter",
"previous" : "last quarter"
}
},
"short" : {
"week" : {
"future" : {
"one" : "le kɔsiɖa {0} me",
"other" : "le kɔsiɖa {0} wo me"
},
"next" : "kɔsiɖa si gbɔ na",
"current" : "kɔsiɖa sia",
"past" : {
"one" : "kɔsiɖa {0} si va yi",
"other" : "kɔsiɖa {0} si wo va yi"
},
"previous" : "kɔsiɖa si va yi"
},
"minute" : {
"current" : "this minute",
"future" : {
"one" : "le aɖabaƒoƒo {0} me",
"other" : "le aɖabaƒoƒo {0} wo me"
},
"past" : {
"one" : "aɖabaƒoƒo {0} si va yi",
"other" : "aɖabaƒoƒo {0} si wo va yi"
}
},
"day" : {
"next" : "etsɔ si gbɔna",
"current" : "egbe",
"previous" : "etsɔ si va yi",
"future" : {
"one" : "le ŋkeke {0} me",
"other" : "le ŋkeke {0} wo me"
},
"past" : {
"other" : "ŋkeke {0} si wo va yi",
"one" : "ŋkeke {0} si va yi"
}
},
"now" : "fifi",
"second" : {
"past" : {
"one" : "sekend {0} si va yi",
"other" : "sekend {0} si wo va yi"
},
"future" : {
"other" : "le sekend {0} wo me",
"one" : "le sekend {0} me"
},
"current" : "fifi"
},
"hour" : {
"current" : "this hour",
"past" : {
"one" : "gaƒoƒo {0} si va yi",
"other" : "gaƒoƒo {0} si wo va yi"
},
"future" : {
"one" : "le gaƒoƒo {0} me",
"other" : "le gaƒoƒo {0} wo me"
}
},
"month" : {
"current" : "ɣleti sia",
"past" : {
"one" : "ɣleti {0} si va yi",
"other" : "ɣleti {0} si wo va yi"
},
"previous" : "ɣleti si va yi",
"next" : "ɣleti si gbɔ na",
"future" : {
"other" : "le ɣleti {0} wo me",
"one" : "le ɣleti {0} me"
}
},
"year" : {
"next" : "ƒe si gbɔ na",
"future" : "le ƒe {0} me",
"current" : "ƒe sia",
"past" : "le ƒe {0} si va yi me",
"previous" : "ƒe si va yi"
},
"quarter" : {
"future" : "le kɔta {0} si gbɔ na me",
"next" : "next quarter",
"previous" : "last quarter",
"current" : "this quarter",
"past" : "kɔta {0} si va yi me"
}
}
}

View File

@@ -0,0 +1,227 @@
{
"narrow" : {
"now" : "τώρα",
"hour" : {
"future" : "σε {0} ώ.",
"past" : "{0} ώ. πριν",
"current" : "τρέχουσα ώρα"
},
"minute" : {
"past" : "{0} λ. πριν",
"current" : "τρέχον λεπτό",
"future" : "σε {0} λ."
},
"second" : {
"future" : "σε {0} δ.",
"current" : "τώρα",
"past" : "{0} δ. πριν"
},
"year" : {
"next" : "επόμενο έτος",
"future" : {
"one" : "σε {0} έτος",
"other" : "σε {0} έτη"
},
"previous" : "πέρσι",
"current" : "φέτος",
"past" : {
"one" : "{0} έτος πριν",
"other" : "{0} έτη πριν"
}
},
"week" : {
"past" : "{0} εβδ. πριν",
"next" : "επόμενη εβδομάδα",
"future" : "σε {0} εβδ.",
"previous" : "προηγούμενη εβδομάδα",
"current" : "τρέχουσα εβδομάδα"
},
"month" : {
"previous" : "προηγούμενος μήνας",
"current" : "τρέχων μήνας",
"next" : "επόμενος μήνας",
"past" : "{0} μ. πριν",
"future" : "σε {0} μ."
},
"quarter" : {
"next" : "επόμ. τρίμ.",
"past" : "{0} τρίμ. πριν",
"future" : "σε {0} τρίμ.",
"previous" : "προηγ. τρίμ.",
"current" : "τρέχον τρίμ."
},
"day" : {
"next" : "αύριο",
"previous" : "χθες",
"past" : "{0} ημ. πριν",
"future" : "σε {0} ημ.",
"current" : "σήμερα"
}
},
"long" : {
"week" : {
"future" : {
"other" : "σε {0} εβδομάδες",
"one" : "σε {0} εβδομάδα"
},
"past" : {
"other" : "πριν από {0} εβδομάδες",
"one" : "πριν από {0} εβδομάδα"
},
"next" : "επόμενη εβδομάδα",
"current" : "τρέχουσα εβδομάδα",
"previous" : "προηγούμενη εβδομάδα"
},
"minute" : {
"current" : "τρέχον λεπτό",
"future" : {
"other" : "σε {0} λεπτά",
"one" : "σε {0} λεπτό"
},
"past" : {
"one" : "πριν από {0} λεπτό",
"other" : "πριν από {0} λεπτά"
}
},
"month" : {
"current" : "τρέχων μήνας",
"past" : {
"other" : "πριν από {0} μήνες",
"one" : "πριν από {0} μήνα"
},
"previous" : "προηγούμενος μήνας",
"future" : {
"one" : "σε {0} μήνα",
"other" : "σε {0} μήνες"
},
"next" : "επόμενος μήνας"
},
"hour" : {
"future" : {
"one" : "σε {0} ώρα",
"other" : "σε {0} ώρες"
},
"past" : {
"one" : "πριν από {0} ώρα",
"other" : "πριν από {0} ώρες"
},
"current" : "τρέχουσα ώρα"
},
"year" : {
"previous" : "πέρσι",
"past" : {
"one" : "πριν από {0} έτος",
"other" : "πριν από {0} έτη"
},
"next" : "επόμενο έτος",
"future" : {
"one" : "σε {0} έτος",
"other" : "σε {0} έτη"
},
"current" : "φέτος"
},
"day" : {
"current" : "σήμερα",
"previous" : "χθες",
"next" : "αύριο",
"future" : {
"other" : "σε {0} ημέρες",
"one" : "σε {0} ημέρα"
},
"past" : {
"other" : "πριν από {0} ημέρες",
"one" : "πριν από {0} ημέρα"
}
},
"second" : {
"current" : "τώρα",
"future" : {
"other" : "σε {0} δευτερόλεπτα",
"one" : "σε {0} δευτερόλεπτο"
},
"past" : {
"one" : "πριν από {0} δευτερόλεπτο",
"other" : "πριν από {0} δευτερόλεπτα"
}
},
"quarter" : {
"previous" : "προηγούμενο τρίμηνο",
"current" : "τρέχον τρίμηνο",
"next" : "επόμενο τρίμηνο",
"past" : {
"one" : "πριν από {0} τρίμηνο",
"other" : "πριν από {0} τρίμηνα"
},
"future" : {
"one" : "σε {0} τρίμηνο",
"other" : "σε {0} τρίμηνα"
}
},
"now" : "τώρα"
},
"short" : {
"hour" : {
"future" : "σε {0} ώ.",
"current" : "τρέχουσα ώρα",
"past" : "πριν από {0} ώ."
},
"now" : "τώρα",
"quarter" : {
"current" : "τρέχον τρίμ.",
"future" : "σε {0} τρίμ.",
"past" : "πριν από {0} τρίμ.",
"next" : "επόμ. τρίμ.",
"previous" : "προηγ. τρίμ."
},
"day" : {
"current" : "σήμερα",
"past" : "πριν από {0} ημ.",
"future" : "σε {0} ημ.",
"next" : "αύριο",
"previous" : "χθες"
},
"week" : {
"current" : "τρέχουσα εβδομάδα",
"past" : "πριν από {0} εβδ.",
"future" : "σε {0} εβδ.",
"next" : "επόμενη εβδομάδα",
"previous" : "προηγούμενη εβδομάδα"
},
"minute" : {
"future" : "σε {0} λεπ.",
"current" : "τρέχον λεπτό",
"past" : "πριν από {0} λεπ."
},
"second" : {
"future" : "σε {0} δευτ.",
"current" : "τώρα",
"past" : "πριν από {0} δευτ."
},
"month" : {
"current" : "τρέχων μήνας",
"future" : {
"one" : "σε {0} μήνα",
"other" : "σε {0} μήνες"
},
"previous" : "προηγούμενος μήνας",
"next" : "επόμενος μήνας",
"past" : {
"one" : "πριν από {0} μήνα",
"other" : "πριν από {0} μήνες"
}
},
"year" : {
"future" : {
"one" : "σε {0} έτος",
"other" : "σε {0} έτη"
},
"previous" : "πέρσι",
"next" : "επόμενο έτος",
"current" : "φέτος",
"past" : {
"other" : "πριν από {0} έτη",
"one" : "πριν από {0} έτος"
}
}
}
}

View File

@@ -0,0 +1,233 @@
{
"long" : {
"quarter" : {
"next" : "next quarter",
"previous" : "last quarter",
"current" : "this quarter",
"future" : {
"one" : "in {0} quarter",
"other" : "in {0} quarters"
},
"past" : {
"one" : "{0} quarter ago",
"other" : "{0} quarters ago"
}
},
"month" : {
"next" : "next month",
"past" : {
"one" : "{0} month ago",
"other" : "{0} months ago"
},
"future" : {
"one" : "in {0} month",
"other" : "in {0} months"
},
"previous" : "last month",
"current" : "this month"
},
"hour" : {
"past" : {
"other" : "{0} hours ago",
"one" : "{0} hour ago"
},
"future" : {
"one" : "in {0} hour",
"other" : "in {0} hours"
},
"current" : "this hour"
},
"week" : {
"previous" : "last week",
"current" : "this week",
"future" : {
"one" : "in {0} week",
"other" : "in {0} weeks"
},
"next" : "next week",
"past" : {
"one" : "{0} week ago",
"other" : "{0} weeks ago"
}
},
"minute" : {
"current" : "this minute",
"past" : {
"one" : "{0} minute ago",
"other" : "{0} minutes ago"
},
"future" : {
"one" : "in {0} minute",
"other" : "in {0} minutes"
}
},
"now" : "now",
"year" : {
"next" : "next year",
"future" : {
"one" : "in {0} year",
"other" : "in {0} years"
},
"past" : {
"other" : "{0} years ago",
"one" : "{0} year ago"
},
"current" : "this year",
"previous" : "last year"
},
"second" : {
"current" : "now",
"past" : {
"other" : "{0} seconds ago",
"one" : "{0} second ago"
},
"future" : {
"one" : "in {0} second",
"other" : "in {0} seconds"
}
},
"day" : {
"next" : "tomorrow",
"past" : {
"other" : "{0} days ago",
"one" : "{0} day ago"
},
"future" : {
"other" : "in {0} days",
"one" : "in {0} day"
},
"previous" : "yesterday",
"current" : "today"
}
},
"short" : {
"month" : {
"future" : "in {0} mo.",
"previous" : "last mo.",
"current" : "this mo.",
"next" : "next mo.",
"past" : "{0} mo. ago"
},
"day" : {
"past" : {
"one" : "{0} day ago",
"other" : "{0} days ago"
},
"previous" : "yesterday",
"current" : "today",
"next" : "tomorrow",
"future" : {
"other" : "in {0} days",
"one" : "in {0} day"
}
},
"hour" : {
"current" : "this hour",
"future" : "in {0} hr.",
"past" : "{0} hr. ago"
},
"second" : {
"past" : "{0} sec. ago",
"future" : "in {0} sec.",
"current" : "now"
},
"year" : {
"current" : "this yr.",
"previous" : "last yr.",
"future" : "in {0} yr.",
"past" : "{0} yr. ago",
"next" : "next yr."
},
"week" : {
"previous" : "last wk.",
"current" : "this wk.",
"future" : "in {0} wk.",
"past" : "{0} wk. ago",
"next" : "next wk."
},
"minute" : {
"current" : "this minute",
"future" : "in {0} min.",
"past" : "{0} min. ago"
},
"now" : "now",
"quarter" : {
"next" : "next qtr.",
"previous" : "last qtr.",
"current" : "this qtr.",
"past" : {
"other" : "{0} qtrs. ago",
"one" : "{0} qtr. ago"
},
"future" : {
"one" : "in {0} qtr.",
"other" : "in {0} qtrs."
}
}
},
"narrow" : {
"hour" : {
"future" : "in {0} hr.",
"current" : "this hour",
"past" : "{0} hr. ago"
},
"week" : {
"next" : "next wk.",
"previous" : "last wk.",
"past" : "{0} wk. ago",
"current" : "this wk.",
"future" : "in {0} wk."
},
"minute" : {
"current" : "this minute",
"past" : "{0} min. ago",
"future" : "in {0} min."
},
"second" : {
"current" : "now",
"past" : "{0} sec. ago",
"future" : "in {0} sec."
},
"now" : "now",
"month" : {
"past" : "{0} mo. ago",
"current" : "this mo.",
"next" : "next mo.",
"previous" : "last mo.",
"future" : "in {0} mo."
},
"day" : {
"current" : "today",
"future" : {
"one" : "in {0} day",
"other" : "in {0} days"
},
"previous" : "yesterday",
"next" : "tomorrow",
"past" : {
"one" : "{0} day ago",
"other" : "{0} days ago"
}
},
"year" : {
"previous" : "last yr.",
"current" : "this yr.",
"past" : "{0} yr. ago",
"next" : "next yr.",
"future" : "in {0} yr."
},
"quarter" : {
"previous" : "last qtr.",
"next" : "next qtr.",
"past" : {
"one" : "{0} qtr. ago",
"other" : "{0} qtrs. ago"
},
"future" : {
"one" : "in {0} qtr.",
"other" : "in {0} qtrs."
},
"current" : "this qtr."
}
}
}

View File

@@ -0,0 +1,221 @@
{
"narrow" : {
"quarter" : {
"previous" : "el trimestre pasado",
"current" : "este trimestre",
"next" : "el próximo trimestre",
"past" : "hace {0} trim.",
"future" : "dentro de {0} trim."
},
"month" : {
"past" : "hace {0} m",
"next" : "el próximo mes",
"future" : "dentro de {0} m",
"previous" : "el mes pasado",
"current" : "este mes"
},
"now" : "ahora",
"hour" : {
"future" : "dentro de {0} h",
"past" : "hace {0} h",
"current" : "esta hora"
},
"minute" : {
"past" : "hace {0} min",
"current" : "este minuto",
"future" : "dentro de {0} min"
},
"day" : {
"previous" : "ayer",
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"past" : {
"one" : "hace {0} día",
"other" : "hace {0} días"
},
"current" : "hoy",
"next" : "mañana"
},
"year" : {
"next" : "el próximo año",
"past" : "hace {0} a",
"future" : "dentro de {0} a",
"previous" : "el año pasado",
"current" : "este año"
},
"week" : {
"next" : "la próxima semana",
"previous" : "la semana pasada",
"past" : "hace {0} sem.",
"future" : "dentro de {0} sem.",
"current" : "esta semana"
},
"second" : {
"future" : "dentro de {0} s",
"past" : "hace {0} s",
"current" : "ahora"
}
},
"short" : {
"minute" : {
"current" : "este minuto",
"past" : "hace {0} min",
"future" : "dentro de {0} min"
},
"month" : {
"current" : "este mes",
"past" : "hace {0} m",
"future" : "dentro de {0} m",
"next" : "el próximo mes",
"previous" : "el mes pasado"
},
"week" : {
"current" : "esta semana",
"past" : "hace {0} sem.",
"future" : "dentro de {0} sem.",
"next" : "la próxima semana",
"previous" : "la semana pasada"
},
"hour" : {
"past" : "hace {0} h",
"current" : "esta hora",
"future" : "dentro de {0} h"
},
"day" : {
"next" : "mañana",
"current" : "hoy",
"previous" : "ayer",
"past" : {
"other" : "hace {0} días",
"one" : "hace {0} día"
},
"future" : {
"one" : "dentro de {0} día",
"other" : "dentro de {0} días"
}
},
"second" : {
"future" : "dentro de {0} s",
"current" : "ahora",
"past" : "hace {0} s"
},
"now" : "ahora",
"year" : {
"future" : "dentro de {0} a",
"previous" : "el año pasado",
"next" : "el próximo año",
"current" : "este año",
"past" : "hace {0} a"
},
"quarter" : {
"current" : "este trimestre",
"future" : "dentro de {0} trim.",
"previous" : "el trimestre pasado",
"next" : "el próximo trimestre",
"past" : "hace {0} trim."
}
},
"long" : {
"week" : {
"current" : "esta semana",
"previous" : "la semana pasada",
"next" : "la próxima semana",
"future" : {
"one" : "dentro de {0} semana",
"other" : "dentro de {0} semanas"
},
"past" : {
"other" : "hace {0} semanas",
"one" : "hace {0} semana"
}
},
"month" : {
"future" : {
"one" : "dentro de {0} mes",
"other" : "dentro de {0} meses"
},
"past" : {
"one" : "hace {0} mes",
"other" : "hace {0} meses"
},
"next" : "el próximo mes",
"current" : "este mes",
"previous" : "el mes pasado"
},
"minute" : {
"past" : {
"one" : "hace {0} minuto",
"other" : "hace {0} minutos"
},
"future" : {
"one" : "dentro de {0} minuto",
"other" : "dentro de {0} minutos"
},
"current" : "este minuto"
},
"now" : "ahora",
"year" : {
"previous" : "el año pasado",
"current" : "este año",
"next" : "el próximo año",
"past" : {
"other" : "hace {0} años",
"one" : "hace {0} año"
},
"future" : {
"other" : "dentro de {0} años",
"one" : "dentro de {0} año"
}
},
"day" : {
"current" : "hoy",
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"past" : {
"other" : "hace {0} días",
"one" : "hace {0} día"
},
"next" : "mañana",
"previous" : "ayer"
},
"quarter" : {
"current" : "este trimestre",
"past" : {
"one" : "hace {0} trimestre",
"other" : "hace {0} trimestres"
},
"previous" : "el trimestre pasado",
"future" : {
"one" : "dentro de {0} trimestre",
"other" : "dentro de {0} trimestres"
},
"next" : "el próximo trimestre"
},
"hour" : {
"current" : "esta hora",
"future" : {
"other" : "dentro de {0} horas",
"one" : "dentro de {0} hora"
},
"past" : {
"other" : "hace {0} horas",
"one" : "hace {0} hora"
}
},
"second" : {
"future" : {
"other" : "dentro de {0} segundos",
"one" : "dentro de {0} segundo"
},
"current" : "ahora",
"past" : {
"one" : "hace {0} segundo",
"other" : "hace {0} segundos"
}
}
}
}

View File

@@ -0,0 +1,209 @@
{
"narrow" : {
"day" : {
"next" : "mañana",
"future" : "dentro de {0} días",
"previous" : "ayer",
"current" : "hoy",
"past" : "hace {0} días"
},
"quarter" : {
"next" : "el próximo trimestre",
"past" : "hace {0} trim.",
"future" : "dentro de {0} trim.",
"previous" : "el trimestre pasado",
"current" : "este trimestre"
},
"hour" : {
"future" : "dentro de {0} h",
"current" : "esta hora",
"past" : "hace {0} h"
},
"year" : {
"next" : "el próximo año",
"past" : "hace {0} a",
"current" : "este año",
"previous" : "el año pasado",
"future" : "dentro de {0} a"
},
"now" : "ahora",
"month" : {
"current" : "este mes",
"future" : "dentro de {0} m",
"past" : "hace {0} m",
"next" : "el próximo mes",
"previous" : "el mes pasado"
},
"week" : {
"previous" : "la semana pasada",
"current" : "esta semana",
"past" : "hace {0} sem.",
"future" : "dentro de {0} sem.",
"next" : "la próxima semana"
},
"minute" : {
"past" : "hace {0} min",
"current" : "este minuto",
"future" : "dentro de {0} min"
},
"second" : {
"current" : "ahora",
"past" : "hace {0} seg.",
"future" : "dentro de {0} seg."
}
},
"long" : {
"month" : {
"next" : "el próximo mes",
"previous" : "el mes pasado",
"future" : {
"one" : "dentro de {0} mes",
"other" : "dentro de {0} meses"
},
"current" : "este mes",
"past" : {
"other" : "hace {0} meses",
"one" : "hace {0} mes"
}
},
"week" : {
"future" : {
"one" : "dentro de {0} semana",
"other" : "dentro de {0} semanas"
},
"previous" : "la semana pasada",
"next" : "la próxima semana",
"current" : "esta semana",
"past" : {
"one" : "hace {0} semana",
"other" : "hace {0} semanas"
}
},
"second" : {
"current" : "ahora",
"past" : {
"other" : "hace {0} segundos",
"one" : "hace {0} segundo"
},
"future" : {
"one" : "dentro de {0} segundo",
"other" : "dentro de {0} segundos"
}
},
"year" : {
"future" : {
"one" : "dentro de {0} año",
"other" : "dentro de {0} años"
},
"previous" : "el año pasado",
"next" : "el próximo año",
"current" : "este año",
"past" : {
"one" : "hace {0} año",
"other" : "hace {0} años"
}
},
"day" : {
"next" : "mañana",
"current" : "hoy",
"previous" : "ayer",
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"past" : {
"other" : "hace {0} días",
"one" : "hace {0} día"
}
},
"now" : "ahora",
"minute" : {
"future" : {
"one" : "dentro de {0} minuto",
"other" : "dentro de {0} minutos"
},
"past" : {
"other" : "hace {0} minutos",
"one" : "hace {0} minuto"
},
"current" : "este minuto"
},
"quarter" : {
"next" : "el próximo trimestre",
"future" : {
"one" : "dentro de {0} trimestre",
"other" : "dentro de {0} trimestres"
},
"previous" : "el trimestre pasado",
"current" : "este trimestre",
"past" : {
"one" : "hace {0} trimestre",
"other" : "hace {0} trimestres"
}
},
"hour" : {
"future" : {
"other" : "dentro de {0} horas",
"one" : "dentro de {0} hora"
},
"past" : {
"other" : "hace {0} horas",
"one" : "hace {0} hora"
},
"current" : "esta hora"
}
},
"short" : {
"quarter" : {
"future" : "dentro de {0} trim.",
"next" : "el próximo trimestre",
"previous" : "el trimestre pasado",
"current" : "este trimestre",
"past" : "hace {0} trim."
},
"minute" : {
"current" : "este minuto",
"past" : "hace {0} min",
"future" : "dentro de {0} min"
},
"year" : {
"next" : "el próximo año",
"future" : "dentro de {0} a",
"current" : "este año",
"past" : "hace {0} a",
"previous" : "el año pasado"
},
"second" : {
"past" : "hace {0} seg.",
"current" : "ahora",
"future" : "dentro de {0} seg."
},
"hour" : {
"current" : "esta hora",
"past" : "hace {0} h",
"future" : "dentro de {0} h"
},
"now" : "ahora",
"month" : {
"previous" : "el mes pasado",
"next" : "el próximo mes",
"past" : "hace {0} m",
"current" : "este mes",
"future" : "dentro de {0} m"
},
"week" : {
"previous" : "la semana pasada",
"current" : "esta semana",
"next" : "la próxima semana",
"past" : "hace {0} sem.",
"future" : "dentro de {0} sem."
},
"day" : {
"next" : "mañana",
"past" : "hace {0} días",
"future" : "dentro de {0} días",
"previous" : "ayer",
"current" : "hoy"
}
}
}

View File

@@ -0,0 +1,221 @@
{
"narrow" : {
"minute" : {
"future" : "dentro de {0} min",
"past" : "hace {0} min",
"current" : "este minuto"
},
"year" : {
"past" : "hace {0} a",
"current" : "este año",
"next" : "el próximo año",
"previous" : "el año pasado",
"future" : "dentro de {0} a"
},
"now" : "ahora",
"second" : {
"past" : "hace {0} seg.",
"future" : "dentro de {0} seg.",
"current" : "ahora"
},
"day" : {
"previous" : "ayer",
"current" : "hoy",
"next" : "mañana",
"past" : {
"one" : "hace {0} día",
"other" : "hace {0} días"
},
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
}
},
"month" : {
"past" : "hace {0} m",
"current" : "este mes",
"next" : "el próximo mes",
"future" : "dentro de {0} m",
"previous" : "el mes pasado"
},
"week" : {
"next" : "la próxima semana",
"current" : "esta semana",
"past" : "hace {0} sem.",
"future" : "dentro de {0} sem.",
"previous" : "la semana pasada"
},
"quarter" : {
"current" : "este trimestre",
"future" : "dentro de {0} trim.",
"next" : "el próximo trimestre",
"past" : "hace {0} trim.",
"previous" : "el trimestre pasado"
},
"hour" : {
"future" : "dentro de {0} h",
"current" : "esta hora",
"past" : "hace {0} h"
}
},
"short" : {
"second" : {
"past" : "hace {0} seg.",
"future" : "dentro de {0} seg.",
"current" : "ahora"
},
"now" : "ahora",
"hour" : {
"current" : "esta hora",
"past" : "hace {0} h",
"future" : "dentro de {0} h"
},
"month" : {
"past" : "hace {0} m",
"current" : "este mes",
"next" : "el próximo mes",
"future" : "dentro de {0} m",
"previous" : "el mes pasado"
},
"day" : {
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"current" : "hoy",
"previous" : "ayer",
"next" : "mañana",
"past" : {
"one" : "hace {0} día",
"other" : "hace {0} días"
}
},
"minute" : {
"future" : "dentro de {0} min",
"current" : "este minuto",
"past" : "hace {0} min"
},
"week" : {
"next" : "la próxima semana",
"past" : "hace {0} sem.",
"previous" : "la semana pasada",
"current" : "esta semana",
"future" : "dentro de {0} sem."
},
"quarter" : {
"current" : "este trimestre",
"future" : "dentro de {0} trim.",
"next" : "el próximo trimestre",
"previous" : "el trimestre pasado",
"past" : "hace {0} trim."
},
"year" : {
"next" : "el próximo año",
"current" : "este año",
"future" : "dentro de {0} a",
"past" : "hace {0} a",
"previous" : "el año pasado"
}
},
"long" : {
"week" : {
"current" : "esta semana",
"previous" : "la semana pasada",
"next" : "la próxima semana",
"past" : {
"one" : "hace {0} semana",
"other" : "hace {0} semanas"
},
"future" : {
"one" : "dentro de {0} semana",
"other" : "dentro de {0} semanas"
}
},
"hour" : {
"current" : "esta hora",
"future" : {
"other" : "dentro de {0} horas",
"one" : "dentro de {0} hora"
},
"past" : {
"other" : "hace {0} horas",
"one" : "hace {0} hora"
}
},
"minute" : {
"future" : {
"one" : "dentro de {0} minuto",
"other" : "dentro de {0} minutos"
},
"current" : "este minuto",
"past" : {
"one" : "hace {0} minuto",
"other" : "hace {0} minutos"
}
},
"day" : {
"previous" : "ayer",
"current" : "hoy",
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"next" : "mañana",
"past" : {
"other" : "hace {0} días",
"one" : "hace {0} día"
}
},
"second" : {
"current" : "ahora",
"future" : {
"other" : "dentro de {0} segundos",
"one" : "dentro de {0} segundo"
},
"past" : {
"one" : "hace {0} segundo",
"other" : "hace {0} segundos"
}
},
"now" : "ahora",
"month" : {
"next" : "el próximo mes",
"future" : {
"other" : "dentro de {0} meses",
"one" : "dentro de {0} mes"
},
"previous" : "el mes pasado",
"current" : "este mes",
"past" : {
"other" : "hace {0} meses",
"one" : "hace {0} mes"
}
},
"quarter" : {
"previous" : "el trimestre pasado",
"future" : {
"one" : "dentro de {0} trimestre",
"other" : "dentro de {0} trimestres"
},
"current" : "este trimestre",
"past" : {
"one" : "hace {0} trimestre",
"other" : "hace {0} trimestres"
},
"next" : "el próximo trimestre"
},
"year" : {
"next" : "el próximo año",
"past" : {
"one" : "hace {0} año",
"other" : "hace {0} años"
},
"future" : {
"other" : "dentro de {0} años",
"one" : "dentro de {0} año"
},
"current" : "este año",
"previous" : "el año pasado"
}
}
}

View File

@@ -0,0 +1,227 @@
{
"narrow" : {
"minute" : {
"current" : "este minuto",
"past" : "-{0} min",
"future" : "+{0} min"
},
"year" : {
"previous" : "el año pasado",
"past" : "-{0} a",
"future" : "en {0} a",
"next" : "el próximo año",
"current" : "este año"
},
"day" : {
"next" : "mañana",
"previous" : "ayer",
"past" : {
"one" : "hace {0} día",
"other" : "hace {0} días"
},
"future" : {
"other" : "+{0} días",
"one" : "+{0} día"
},
"current" : "hoy"
},
"month" : {
"current" : "este mes",
"past" : "-{0} m",
"next" : "el próximo mes",
"previous" : "el mes pasado",
"future" : "+{0} m"
},
"hour" : {
"current" : "esta hora",
"past" : "hace {0} h",
"future" : "dentro de {0} h"
},
"now" : "ahora",
"quarter" : {
"past" : "-{0} T",
"current" : "este trimestre",
"future" : "+{0} T",
"previous" : "el trimestre pasado",
"next" : "el próximo trimestre"
},
"second" : {
"future" : "+{0} s",
"current" : "ahora",
"past" : "hace {0} s"
},
"week" : {
"past" : "hace {0} sem.",
"previous" : "la semana pasada",
"current" : "esta semana",
"next" : "la semana próxima",
"future" : "dentro de {0} sem."
}
},
"long" : {
"year" : {
"next" : "el año próximo",
"future" : {
"one" : "dentro de {0} año",
"other" : "dentro de {0} años"
},
"previous" : "el año pasado",
"current" : "este año",
"past" : {
"one" : "hace {0} año",
"other" : "hace {0} años"
}
},
"now" : "ahora",
"month" : {
"future" : {
"one" : "en {0} mes",
"other" : "en {0} meses"
},
"previous" : "el mes pasado",
"next" : "el mes próximo",
"current" : "este mes",
"past" : {
"other" : "hace {0} meses",
"one" : "hace {0} mes"
}
},
"quarter" : {
"next" : "el próximo trimestre",
"previous" : "el trimestre pasado",
"future" : {
"other" : "dentro de {0} trimetres",
"one" : "dentro de {0} trimetre"
},
"current" : "este trimestre",
"past" : {
"other" : "hace {0} trimestres",
"one" : "hace {0} trimestre"
}
},
"day" : {
"previous" : "ayer",
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"current" : "hoy",
"next" : "mañana",
"past" : {
"one" : "hace {0} día",
"other" : "hace {0} días"
}
},
"week" : {
"next" : "la semana próxima",
"current" : "esta semana",
"previous" : "la semana pasada",
"future" : {
"other" : "dentro de {0} semanas",
"one" : "dentro de {0} semana"
},
"past" : {
"one" : "hace {0} semana",
"other" : "hace {0} semanas"
}
},
"hour" : {
"current" : "esta hora",
"past" : {
"one" : "hace {0} hora",
"other" : "hace {0} horas"
},
"future" : {
"one" : "dentro de {0} hora",
"other" : "dentro de {0} horas"
}
},
"minute" : {
"future" : {
"other" : "dentro de {0} minutos",
"one" : "dentro de {0} minuto"
},
"current" : "este minuto",
"past" : {
"one" : "hace {0} minuto",
"other" : "hace {0} minutos"
}
},
"second" : {
"current" : "ahora",
"future" : {
"other" : "dentro de {0} segundos",
"one" : "dentro de {0} segundo"
},
"past" : {
"one" : "hace {0} segundo",
"other" : "hace {0} segundos"
}
}
},
"short" : {
"minute" : {
"current" : "este minuto",
"past" : "hace {0} min",
"future" : "en {0} min"
},
"second" : {
"current" : "ahora",
"past" : "hace {0} s",
"future" : "en {0} s"
},
"hour" : {
"future" : {
"one" : "en {0} h",
"other" : "en {0} n"
},
"current" : "esta hora",
"past" : "hace {0} h"
},
"year" : {
"next" : "el próximo año",
"future" : "en {0} a",
"current" : "este año",
"past" : "hace {0} a",
"previous" : "el año pasado"
},
"now" : "ahora",
"quarter" : {
"previous" : "el trimestre pasado",
"current" : "este trimestre",
"past" : "hace {0} trim.",
"next" : "el próximo trimestre",
"future" : {
"other" : "en {0} trim",
"one" : "en {0} trim."
}
},
"month" : {
"past" : "hace {0} m",
"future" : "en {0} m",
"next" : "el próximo mes",
"previous" : "el mes pasado",
"current" : "este mes"
},
"week" : {
"future" : "en {0} sem.",
"next" : "la semana próxima",
"current" : "esta semana",
"past" : "hace {0} sem.",
"previous" : "la semana pasada"
},
"day" : {
"previous" : "ayer",
"current" : "hoy",
"next" : "mañana",
"past" : {
"one" : "hace {0} día",
"other" : "hace {0} días"
},
"future" : {
"one" : "en {0} día",
"other" : "en {0} días"
}
}
}
}

View File

@@ -0,0 +1,221 @@
{
"narrow" : {
"second" : {
"future" : "dentro de {0} s",
"past" : "hace {0} s",
"current" : "ahora"
},
"month" : {
"past" : "hace {0} m",
"future" : "dentro de {0} m",
"current" : "este mes",
"previous" : "el mes pasado",
"next" : "el próximo mes"
},
"hour" : {
"future" : "dentro de {0} h",
"past" : "hace {0} h",
"current" : "esta hora"
},
"week" : {
"next" : "la semana próxima",
"current" : "esta semana",
"past" : "hace {0} sem.",
"future" : "dentro de {0} sem.",
"previous" : "la semana pasada"
},
"day" : {
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"previous" : "ayer",
"next" : "mañana",
"past" : {
"one" : "hace {0} día",
"other" : "hace {0} días"
},
"current" : "hoy"
},
"minute" : {
"past" : "hace {0} min",
"current" : "este minuto",
"future" : "dentro de {0} min"
},
"year" : {
"next" : "el próximo año",
"future" : "dentro de {0} a",
"previous" : "el año pasado",
"current" : "este año",
"past" : "hace {0} a"
},
"now" : "ahora",
"quarter" : {
"previous" : "el trimestre pasado",
"next" : "el próximo trimestre",
"future" : "dentro de {0} trim.",
"current" : "este trimestre",
"past" : "hace {0} trim."
}
},
"long" : {
"minute" : {
"past" : {
"one" : "hace {0} minuto",
"other" : "hace {0} minutos"
},
"future" : {
"one" : "dentro de {0} minuto",
"other" : "dentro de {0} minutos"
},
"current" : "este minuto"
},
"month" : {
"past" : {
"other" : "hace {0} meses",
"one" : "hace {0} mes"
},
"next" : "el mes próximo",
"previous" : "el mes pasado",
"current" : "este mes",
"future" : {
"one" : "dentro de {0} mes",
"other" : "dentro de {0} meses"
}
},
"hour" : {
"future" : {
"other" : "dentro de {0} horas",
"one" : "dentro de {0} hora"
},
"current" : "esta hora",
"past" : {
"one" : "hace {0} hora",
"other" : "hace {0} horas"
}
},
"second" : {
"past" : {
"other" : "hace {0} segundos",
"one" : "hace {0} segundo"
},
"future" : {
"one" : "dentro de {0} segundo",
"other" : "dentro de {0} segundos"
},
"current" : "ahora"
},
"now" : "ahora",
"year" : {
"future" : {
"one" : "dentro de {0} año",
"other" : "dentro de {0} años"
},
"previous" : "el año pasado",
"current" : "este año",
"next" : "el año próximo",
"past" : {
"one" : "hace {0} año",
"other" : "hace {0} años"
}
},
"week" : {
"future" : {
"other" : "dentro de {0} semanas",
"one" : "dentro de {0} semana"
},
"current" : "esta semana",
"previous" : "la semana pasada",
"next" : "la semana próxima",
"past" : {
"one" : "hace {0} semana",
"other" : "hace {0} semanas"
}
},
"quarter" : {
"past" : {
"one" : "hace {0} trimestre",
"other" : "hace {0} trimestres"
},
"future" : {
"other" : "dentro de {0} trimestres",
"one" : "dentro de {0} trimestre"
},
"next" : "el próximo trimestre",
"current" : "este trimestre",
"previous" : "el trimestre pasado"
},
"day" : {
"current" : "hoy",
"past" : {
"other" : "hace {0} días",
"one" : "hace {0} día"
},
"future" : {
"one" : "dentro de {0} día",
"other" : "dentro de {0} días"
},
"next" : "mañana",
"previous" : "ayer"
}
},
"short" : {
"hour" : {
"past" : "hace {0} h",
"current" : "esta hora",
"future" : "dentro de {0} h"
},
"now" : "ahora",
"quarter" : {
"current" : "este trimestre",
"future" : "dentro de {0} trim.",
"past" : "hace {0} trim.",
"next" : "el próximo trimestre",
"previous" : "el trimestre pasado"
},
"day" : {
"current" : "hoy",
"past" : {
"other" : "hace {0} días",
"one" : "hace {0} día"
},
"future" : {
"one" : "dentro de {0} día",
"other" : "dentro de {0} días"
},
"next" : "mañana",
"previous" : "ayer"
},
"week" : {
"current" : "esta semana",
"past" : "hace {0} sem.",
"future" : "dentro de {0} sem.",
"next" : "la semana próxima",
"previous" : "la semana pasada"
},
"minute" : {
"current" : "este minuto",
"past" : "hace {0} min",
"future" : "dentro de {0} min"
},
"second" : {
"future" : "dentro de {0} s",
"current" : "ahora",
"past" : "hace {0} s"
},
"month" : {
"current" : "este mes",
"future" : "dentro de {0} m",
"previous" : "el mes pasado",
"next" : "el próximo mes",
"past" : "hace {0} m"
},
"year" : {
"future" : "dentro de {0} a",
"previous" : "el año pasado",
"next" : "el próximo año",
"current" : "este año",
"past" : "hace {0} a"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"year" : {
"future" : "{0} a pärast",
"previous" : "eelmine aasta",
"next" : "järgmine aasta",
"current" : "käesolev aasta",
"past" : "{0} a eest"
},
"week" : {
"past" : "{0} näd eest",
"previous" : "eelmine nädal",
"future" : "{0} näd pärast",
"current" : "käesolev nädal",
"next" : "järgmine nädal"
},
"hour" : {
"past" : "{0} t eest",
"future" : "{0} t pärast",
"current" : "praegusel tunnil"
},
"quarter" : {
"current" : "käesolev kv",
"previous" : "eelmine kv",
"future" : "{0} kv pärast",
"past" : "{0} kv eest",
"next" : "järgmine kv"
},
"second" : {
"future" : "{0} s pärast",
"current" : "nüüd",
"past" : "{0} s eest"
},
"month" : {
"current" : "käesolev kuu",
"future" : "{0} k pärast",
"past" : "{0} k eest",
"next" : "järgmine kuu",
"previous" : "eelmine kuu"
},
"day" : {
"previous" : "eile",
"future" : "{0} p pärast",
"next" : "homme",
"current" : "täna",
"past" : "{0} p eest"
},
"minute" : {
"future" : "{0} min pärast",
"current" : "praegusel minutil",
"past" : "{0} min eest"
},
"now" : "nüüd"
},
"long" : {
"quarter" : {
"next" : "järgmine kvartal",
"current" : "käesolev kvartal",
"previous" : "eelmine kvartal",
"past" : "{0} kvartali eest",
"future" : "{0} kvartali pärast"
},
"now" : "nüüd",
"year" : {
"previous" : "eelmine aasta",
"past" : "{0} aasta eest",
"future" : "{0} aasta pärast",
"next" : "järgmine aasta",
"current" : "käesolev aasta"
},
"month" : {
"previous" : "eelmine kuu",
"current" : "käesolev kuu",
"future" : "{0} kuu pärast",
"past" : "{0} kuu eest",
"next" : "järgmine kuu"
},
"day" : {
"previous" : "eile",
"future" : "{0} päeva pärast",
"next" : "homme",
"past" : "{0} päeva eest",
"current" : "täna"
},
"second" : {
"past" : "{0} sekundi eest",
"future" : "{0} sekundi pärast",
"current" : "nüüd"
},
"week" : {
"past" : "{0} nädala eest",
"current" : "käesolev nädal",
"next" : "järgmine nädal",
"previous" : "eelmine nädal",
"future" : "{0} nädala pärast"
},
"hour" : {
"future" : "{0} tunni pärast",
"current" : "praegusel tunnil",
"past" : "{0} tunni eest"
},
"minute" : {
"current" : "praegusel minutil",
"past" : "{0} minuti eest",
"future" : "{0} minuti pärast"
}
},
"short" : {
"second" : {
"current" : "nüüd",
"past" : "{0} sek eest",
"future" : "{0} sek pärast"
},
"now" : "nüüd",
"month" : {
"future" : "{0} kuu pärast",
"current" : "käesolev kuu",
"past" : "{0} kuu eest",
"previous" : "eelmine kuu",
"next" : "järgmine kuu"
},
"day" : {
"previous" : "eile",
"current" : "täna",
"next" : "homme",
"future" : "{0} p pärast",
"past" : "{0} p eest"
},
"minute" : {
"current" : "praegusel minutil",
"future" : "{0} min pärast",
"past" : "{0} min eest"
},
"quarter" : {
"past" : "{0} kv eest",
"previous" : "eelmine kv",
"current" : "käesolev kv",
"future" : "{0} kv pärast",
"next" : "järgmine kv"
},
"hour" : {
"current" : "praegusel tunnil",
"future" : "{0} t pärast",
"past" : "{0} t eest"
},
"week" : {
"future" : "{0} näd pärast",
"previous" : "eelmine nädal",
"next" : "järgmine nädal",
"past" : "{0} näd eest",
"current" : "käesolev nädal"
},
"year" : {
"next" : "järgmine aasta",
"current" : "käesolev aasta",
"past" : "{0} a eest",
"future" : "{0} a pärast",
"previous" : "eelmine aasta"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"year" : {
"current" : "aurten",
"past" : "Duela {0} urte",
"future" : "{0} urte barru",
"next" : "hurrengo urtea",
"previous" : "aurreko urtea"
},
"minute" : {
"future" : "{0} minutu barru",
"current" : "minutu honetan",
"past" : "Duela {0} minutu"
},
"day" : {
"past" : "Duela {0} egun",
"future" : "{0} egun barru",
"current" : "gaur",
"previous" : "atzo",
"next" : "bihar"
},
"second" : {
"future" : "{0} segundo barru",
"current" : "orain",
"past" : "Duela {0} segundo"
},
"now" : "orain",
"month" : {
"next" : "hurrengo hilabetean",
"future" : "{0} hilabete barru",
"previous" : "aurreko hilabetean",
"current" : "hilabete honetan",
"past" : "Duela {0} hilabete"
},
"week" : {
"previous" : "aurreko astean",
"next" : "hurrengo astean",
"future" : "{0} aste barru",
"current" : "aste honetan",
"past" : "Duela {0} aste"
},
"quarter" : {
"current" : "hiruhileko hau",
"past" : "Duela {0} hiruhileko",
"future" : "{0} hiruhileko barru",
"next" : "hurrengo hiruhilekoa",
"previous" : "aurreko hiruhilekoa"
},
"hour" : {
"current" : "ordu honetan",
"past" : "Duela {0} ordu",
"future" : "{0} ordu barru"
}
},
"short" : {
"hour" : {
"future" : "{0} ordu barru",
"current" : "ordu honetan",
"past" : "Duela {0} ordu"
},
"now" : "orain",
"quarter" : {
"future" : "{0} hiruhileko barru",
"previous" : "aurreko hiruhilekoa",
"next" : "hurrengo hiruhilekoa",
"past" : "Duela {0} hiruhileko",
"current" : "hiruhileko hau"
},
"day" : {
"current" : "gaur",
"future" : "{0} egun barru",
"past" : "Duela {0} egun",
"next" : "bihar",
"previous" : "atzo"
},
"week" : {
"future" : "{0} aste barru",
"previous" : "aurreko astean",
"next" : "hurrengo astean",
"current" : "aste honetan",
"past" : "Duela {0} aste"
},
"minute" : {
"past" : "Duela {0} minutu",
"future" : "{0} minutu barru",
"current" : "minutu honetan"
},
"second" : {
"past" : "Duela {0} segundo",
"current" : "orain",
"future" : "{0} segundo barru"
},
"month" : {
"current" : "hilabete honetan",
"previous" : "aurreko hilabetean",
"next" : "hurrengo hilabetean",
"past" : "Duela {0} hilabete",
"future" : "{0} hilabete barru"
},
"year" : {
"current" : "aurten",
"future" : "{0} urte barru",
"previous" : "aurreko urtea",
"next" : "hurrengo urtea",
"past" : "Duela {0} urte"
}
},
"long" : {
"quarter" : {
"previous" : "aurreko hiruhilekoa",
"current" : "hiruhileko hau",
"future" : "{0} hiruhileko barru",
"next" : "hurrengo hiruhilekoa",
"past" : "Duela {0} hiruhileko"
},
"hour" : {
"future" : "{0} ordu barru",
"current" : "ordu honetan",
"past" : "Duela {0} ordu"
},
"now" : "orain",
"week" : {
"current" : "aste honetan",
"next" : "hurrengo astean",
"previous" : "aurreko astean",
"future" : "{0} aste barru",
"past" : "Duela {0} aste"
},
"second" : {
"past" : "Duela {0} segundo",
"current" : "orain",
"future" : "{0} segundo barru"
},
"year" : {
"current" : "aurten",
"previous" : "iaz",
"past" : "Duela {0} urte",
"future" : "{0} urte barru",
"next" : "hurrengo urtean"
},
"day" : {
"future" : "{0} egun barru",
"previous" : "atzo",
"past" : "Duela {0} egun",
"next" : "bihar",
"current" : "gaur"
},
"minute" : {
"future" : "{0} minutu barru",
"past" : "Duela {0} minutu",
"current" : "minutu honetan"
},
"month" : {
"future" : "{0} hilabete barru",
"next" : "hurrengo hilabetean",
"past" : "Duela {0} hilabete",
"previous" : "aurreko hilabetean",
"current" : "hilabete honetan"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "فردا",
"future" : "{0} روز بعد",
"previous" : "دیروز",
"current" : "امروز",
"past" : "{0} روز پیش"
},
"quarter" : {
"next" : "سه‌ماههٔ آینده",
"past" : "{0} سه‌ماههٔ پیش",
"future" : "{0} سه‌ماههٔ بعد",
"previous" : "سه‌ماههٔ گذشته",
"current" : "سه‌ماههٔ کنونی"
},
"hour" : {
"future" : "{0} ساعت بعد",
"current" : "همین ساعت",
"past" : "{0} ساعت پیش"
},
"year" : {
"next" : "سال آینده",
"past" : "{0} سال پیش",
"current" : "امسال",
"previous" : "سال گذشته",
"future" : "{0} سال بعد"
},
"now" : "اکنون",
"month" : {
"current" : "این ماه",
"future" : "{0} ماه بعد",
"past" : "{0} ماه پیش",
"next" : "ماه آینده",
"previous" : "ماه پیش"
},
"week" : {
"previous" : "هفتهٔ گذشته",
"current" : "این هفته",
"past" : "{0} هفته پیش",
"future" : "{0} هفته بعد",
"next" : "هفتهٔ آینده"
},
"minute" : {
"current" : "همین دقیقه",
"future" : "{0} دقیقه بعد",
"past" : "{0} دقیقه پیش"
},
"second" : {
"past" : "{0} ثانیه پیش",
"current" : "اکنون",
"future" : "{0} ثانیه بعد"
}
},
"long" : {
"day" : {
"previous" : "دیروز",
"current" : "امروز",
"next" : "فردا",
"past" : "{0} روز پیش",
"future" : "{0} روز بعد"
},
"week" : {
"current" : "این هفته",
"future" : "{0} هفته بعد",
"past" : "{0} هفته پیش",
"previous" : "هفتهٔ گذشته",
"next" : "هفتهٔ آینده"
},
"minute" : {
"past" : "{0} دقیقه پیش",
"current" : "همین دقیقه",
"future" : "{0} دقیقه بعد"
},
"month" : {
"future" : "{0} ماه بعد",
"next" : "ماه آینده",
"previous" : "ماه گذشته",
"current" : "این ماه",
"past" : "{0} ماه پیش"
},
"hour" : {
"past" : "{0} ساعت پیش",
"current" : "همین ساعت",
"future" : "{0} ساعت بعد"
},
"year" : {
"past" : "{0} سال پیش",
"future" : "{0} سال بعد",
"previous" : "سال گذشته",
"next" : "سال آینده",
"current" : "امسال"
},
"second" : {
"current" : "اکنون",
"past" : "{0} ثانیه پیش",
"future" : "{0} ثانیه بعد"
},
"now" : "اکنون",
"quarter" : {
"past" : "{0} سه‌ماههٔ پیش",
"current" : "سه‌ماههٔ کنونی",
"previous" : "سه‌ماههٔ گذشته",
"future" : "{0} سه‌ماههٔ بعد",
"next" : "سه‌ماههٔ آینده"
}
},
"short" : {
"quarter" : {
"future" : "{0} سه‌ماههٔ بعد",
"next" : "سه‌ماههٔ آینده",
"previous" : "سه‌ماههٔ گذشته",
"current" : "سه‌ماههٔ کنونی",
"past" : "{0} سه‌ماههٔ پیش"
},
"minute" : {
"current" : "همین دقیقه",
"past" : "{0} دقیقه پیش",
"future" : "{0} دقیقه بعد"
},
"year" : {
"next" : "سال آینده",
"future" : "{0} سال بعد",
"current" : "امسال",
"past" : "{0} سال پیش",
"previous" : "سال گذشته"
},
"second" : {
"future" : "{0} ثانیه بعد",
"current" : "اکنون",
"past" : "{0} ثانیه پیش"
},
"hour" : {
"past" : "{0} ساعت پیش",
"future" : "{0} ساعت بعد",
"current" : "همین ساعت"
},
"now" : "اکنون",
"month" : {
"previous" : "ماه پیش",
"next" : "ماه آینده",
"past" : "{0} ماه پیش",
"current" : "این ماه",
"future" : "{0} ماه بعد"
},
"week" : {
"previous" : "هفتهٔ گذشته",
"current" : "این هفته",
"next" : "هفتهٔ آینده",
"past" : "{0} هفته پیش",
"future" : "{0} هفته بعد"
},
"day" : {
"next" : "فردا",
"past" : "{0} روز پیش",
"future" : "{0} روز بعد",
"previous" : "دیروز",
"current" : "امروز"
}
}
}

View File

@@ -0,0 +1,188 @@
{
"long" : {
"minute" : {
"past" : {
"other" : "{0} minuuttia sitten",
"one" : "{0} minuutti sitten"
},
"future" : "{0} minuutin päästä",
"current" : "tämän minuutin aikana"
},
"year" : {
"future" : "{0} vuoden päästä",
"current" : "tänä vuonna",
"previous" : "viime vuonna",
"next" : "ensi vuonna",
"past" : {
"one" : "{0} vuosi sitten",
"other" : "{0} vuotta sitten"
}
},
"quarter" : {
"past" : {
"one" : "{0} neljännesvuosi sitten",
"other" : "{0} neljännesvuotta sitten"
},
"next" : "ensi neljännesvuonna",
"previous" : "viime neljännesvuonna",
"future" : "{0} neljännesvuoden päästä",
"current" : "tänä neljännesvuonna"
},
"week" : {
"future" : "{0} viikon päästä",
"past" : {
"other" : "{0} viikkoa sitten",
"one" : "{0} viikko sitten"
},
"previous" : "viime viikolla",
"current" : "tällä viikolla",
"next" : "ensi viikolla"
},
"hour" : {
"past" : {
"other" : "{0} tuntia sitten",
"one" : "{0} tunti sitten"
},
"future" : "{0} tunnin päästä",
"current" : "tämän tunnin aikana"
},
"month" : {
"previous" : "viime kuussa",
"next" : "ensi kuussa",
"future" : "{0} kuukauden päästä",
"past" : {
"one" : "{0} kuukausi sitten",
"other" : "{0} kuukautta sitten"
},
"current" : "tässä kuussa"
},
"second" : {
"current" : "nyt",
"past" : {
"one" : "{0} sekunti sitten",
"other" : "{0} sekuntia sitten"
},
"future" : "{0} sekunnin päästä"
},
"now" : "nyt",
"day" : {
"next" : "huomenna",
"future" : "{0} päivän päästä",
"previous" : "eilen",
"current" : "tänään",
"past" : {
"other" : "{0} päivää sitten",
"one" : "{0} päivä sitten"
}
}
},
"short" : {
"month" : {
"future" : "{0} kk päästä",
"previous" : "viime kk",
"current" : "tässä kk",
"next" : "ensi kk",
"past" : "{0} kk sitten"
},
"week" : {
"previous" : "viime vk",
"current" : "tällä vk",
"future" : "{0} vk päästä",
"past" : "{0} vk sitten",
"next" : "ensi vk"
},
"hour" : {
"future" : "{0} t päästä",
"current" : "tunnin sisällä",
"past" : "{0} t sitten"
},
"quarter" : {
"next" : "ensi neljänneksenä",
"previous" : "viime neljänneksenä",
"current" : "tänä neljänneksenä",
"past" : {
"other" : "{0} neljännestä sitten",
"one" : "{0} neljännes sitten"
},
"future" : "{0} neljänneksen päästä"
},
"minute" : {
"past" : "{0} min sitten",
"future" : "{0} min päästä",
"current" : "minuutin sisällä"
},
"now" : "nyt",
"day" : {
"past" : "{0} pv sitten",
"previous" : "eilen",
"current" : "tänään",
"next" : "huom.",
"future" : "{0} pv päästä"
},
"year" : {
"current" : "tänä v",
"previous" : "viime v",
"future" : "{0} v päästä",
"past" : "{0} v sitten",
"next" : "ensi v"
},
"second" : {
"current" : "nyt",
"past" : "{0} s sitten",
"future" : "{0} s päästä"
}
},
"narrow" : {
"day" : {
"next" : "huom.",
"current" : "tänään",
"future" : "{0} pv päästä",
"past" : "{0} pv sitten",
"previous" : "eilen"
},
"week" : {
"current" : "tällä vk",
"next" : "ensi vk",
"previous" : "viime vk",
"past" : "{0} vk sitten",
"future" : "{0} vk päästä"
},
"quarter" : {
"past" : "{0} nelj. sitten",
"future" : "{0} nelj. päästä",
"previous" : "viime nelj.",
"current" : "tänä nelj.",
"next" : "ensi nelj."
},
"month" : {
"previous" : "viime kk",
"current" : "tässä kk",
"next" : "ensi kk",
"past" : "{0} kk sitten",
"future" : "{0} kk päästä"
},
"hour" : {
"future" : "{0} t päästä",
"past" : "{0} t sitten",
"current" : "tunnin sisällä"
},
"year" : {
"current" : "tänä v",
"past" : "{0} v sitten",
"future" : "{0} v päästä",
"next" : "ensi v",
"previous" : "viime v"
},
"now" : "nyt",
"minute" : {
"past" : "{0} min sitten",
"current" : "minuutin sisällä",
"future" : "{0} min päästä"
},
"second" : {
"past" : "{0} s sitten",
"future" : "{0} s päästä",
"current" : "nyt"
}
}
}

View File

@@ -0,0 +1,296 @@
{
"narrow" : {
"hour" : {
"current" : "ngayong oras",
"past" : {
"one" : "{0} oras nakalipas",
"other" : "{0} (na) oras nakalipas"
},
"future" : {
"other" : "sa {0} (na) oras",
"one" : "sa {0} oras"
}
},
"week" : {
"previous" : "nakaraang linggo",
"past" : {
"one" : "{0} linggo ang nakalipas",
"other" : "{0} (na) linggo ang nakalipas"
},
"future" : {
"other" : "sa {0} (na) linggo",
"one" : "sa {0} linggo"
},
"next" : "susunod na linggo",
"current" : "ngayong linggo"
},
"minute" : {
"future" : {
"one" : "sa {0} min.",
"other" : "sa {0} (na) min."
},
"past" : {
"one" : "{0} min. ang nakalipas",
"other" : "{0} (na) min. ang nakalipas"
},
"current" : "sa minutong ito"
},
"quarter" : {
"future" : {
"other" : "sa {0} (na) quarter",
"one" : "sa {0} quarter"
},
"next" : "susunod na quarter",
"current" : "ngayong quarter",
"previous" : "nakaraang quarter",
"past" : {
"other" : "{0} (na) quarter ang nakalipas",
"one" : "{0} quarter ang nakalipas"
}
},
"year" : {
"current" : "ngayong taon",
"past" : {
"one" : "{0} taon ang nakalipas",
"other" : "{0} (na) taon ang nakalipas"
},
"future" : {
"one" : "sa {0} taon",
"other" : "sa {0} (na) taon"
},
"next" : "susunod na taon",
"previous" : "nakaraang taon"
},
"month" : {
"previous" : "nakaraang buwan",
"current" : "ngayong buwan",
"next" : "susunod na buwan",
"past" : {
"one" : "{0} buwan ang nakalipas",
"other" : "{0} (na) buwan ang nakalipas"
},
"future" : {
"other" : "sa {0} (na) buwan",
"one" : "sa {0} buwan"
}
},
"day" : {
"next" : "bukas",
"previous" : "kahapon",
"past" : {
"other" : "{0} (na) araw ang nakalipas",
"one" : "{0} araw ang nakalipas"
},
"current" : "ngayong araw",
"future" : {
"one" : "sa {0} araw",
"other" : "sa {0} (na) araw"
}
},
"now" : "ngayon",
"second" : {
"current" : "ngayon",
"past" : {
"one" : "{0} seg. nakalipas",
"other" : "{0} (na) seg. nakalipas"
},
"future" : {
"one" : "sa {0} seg.",
"other" : "sa {0} (na) seg."
}
}
},
"long" : {
"week" : {
"current" : "sa linggong ito",
"next" : "susunod na linggo",
"past" : {
"one" : "{0} linggo ang nakalipas",
"other" : "{0} (na) linggo ang nakalipas"
},
"previous" : "nakalipas na linggo",
"future" : {
"one" : "sa {0} linggo",
"other" : "sa {0} (na) linggo"
}
},
"quarter" : {
"current" : "ngayong quarter",
"past" : {
"one" : "{0} quarter ang nakalipas",
"other" : "{0} (na) quarter ang nakalipas"
},
"previous" : "nakaraang quarter",
"future" : {
"one" : "sa {0} quarter",
"other" : "sa {0} (na) quarter"
},
"next" : "susunod na quarter"
},
"second" : {
"future" : {
"one" : "sa {0} segundo",
"other" : "sa {0} (na) segundo"
},
"past" : {
"other" : "{0} (na) segundo ang nakalipas",
"one" : "{0} segundo ang nakalipas"
},
"current" : "ngayon"
},
"day" : {
"current" : "ngayong araw",
"future" : {
"one" : "sa {0} araw",
"other" : "sa {0} (na) araw"
},
"previous" : "kahapon",
"past" : {
"one" : "{0} araw ang nakalipas",
"other" : "{0} (na) araw ang nakalipas"
},
"next" : "bukas"
},
"minute" : {
"current" : "sa minutong ito",
"past" : {
"other" : "{0} (na) minuto ang nakalipas",
"one" : "{0} minuto ang nakalipas"
},
"future" : {
"other" : "sa {0} (na) minuto",
"one" : "sa {0} minuto"
}
},
"month" : {
"next" : "susunod na buwan",
"previous" : "nakaraang buwan",
"past" : {
"one" : "{0} buwan ang nakalipas",
"other" : "{0} (na) buwan ang nakalipas"
},
"future" : {
"other" : "sa {0} (na) buwan",
"one" : "sa {0} buwan"
},
"current" : "ngayong buwan"
},
"now" : "ngayon",
"year" : {
"previous" : "nakaraang taon",
"past" : {
"one" : "{0} taon ang nakalipas",
"other" : "{0} (na) taon ang nakalipas"
},
"current" : "ngayong taon",
"next" : "susunod na taon",
"future" : {
"one" : "sa {0} taon",
"other" : "sa {0} (na) taon"
}
},
"hour" : {
"past" : {
"other" : "{0} (na) oras ang nakalipas",
"one" : "{0} oras ang nakalipas"
},
"current" : "ngayong oras",
"future" : {
"other" : "sa {0} (na) oras",
"one" : "sa {0} oras"
}
}
},
"short" : {
"minute" : {
"current" : "sa minutong ito",
"future" : {
"other" : "sa {0} (na) min.",
"one" : "sa {0} min."
},
"past" : {
"other" : "{0} (na) min. ang nakalipas",
"one" : "{0} min. ang nakalipas"
}
},
"second" : {
"past" : {
"other" : "{0} (na) seg. nakalipas",
"one" : "{0} seg. ang nakalipas"
},
"current" : "ngayon",
"future" : {
"one" : "sa {0} seg.",
"other" : "sa {0} (na) seg."
}
},
"year" : {
"next" : "susunod na taon",
"current" : "ngayong taon",
"past" : {
"one" : "{0} taon ang nakalipas",
"other" : "{0} (na) taon ang nakalipas"
},
"previous" : "nakaraang taon",
"future" : {
"one" : "sa {0} taon",
"other" : "sa {0} (na) taon"
}
},
"month" : {
"past" : {
"other" : "{0} (na) buwan ang nakalipas",
"one" : "{0} buwan ang nakalipas"
},
"next" : "susunod na buwan",
"future" : {
"one" : "sa {0} buwan",
"other" : "sa {0} (na) buwan"
},
"previous" : "nakaraang buwan",
"current" : "ngayong buwan"
},
"day" : {
"previous" : "kahapon",
"past" : "{0} (na) araw ang nakalipas",
"current" : "ngayong araw",
"next" : "bukas",
"future" : "sa {0} (na) araw"
},
"now" : "ngayon",
"hour" : {
"current" : "ngayong oras",
"future" : {
"one" : "sa {0} oras",
"other" : "sa {0} (na) oras"
},
"past" : {
"other" : "{0} (na) oras ang nakalipas",
"one" : "{0} oras ang nakalipas"
}
},
"quarter" : {
"next" : "susunod na quarter",
"previous" : "nakaraang quarter",
"past" : {
"one" : "{0} quarter ang nakalipas",
"other" : "{0} (na) quarter ang nakalipas"
},
"future" : "sa {0} (na) quarter",
"current" : "ngayong quarter"
},
"week" : {
"next" : "susunod na linggo",
"previous" : "nakaraang linggo",
"past" : {
"one" : "{0} linggo ang nakalipas",
"other" : "{0} (na) linggo ang nakalipas"
},
"current" : "ngayong linggo",
"future" : {
"one" : "sa {0} linggo",
"other" : "sa {0} (na) linggo"
}
}
}
}

View File

@@ -0,0 +1,197 @@
{
"narrow" : {
"year" : {
"future" : "um {0} ár",
"previous" : "í fjør",
"next" : "næsta ár",
"current" : "í ár",
"past" : "{0} ár síðan"
},
"week" : {
"past" : "{0} v. síðan",
"previous" : "seinastu viku",
"future" : "um {0} v.",
"current" : "hesu viku",
"next" : "næstu viku"
},
"hour" : {
"current" : "hendan tíman",
"future" : "um {0} t.",
"past" : "{0} t. síðan"
},
"quarter" : {
"current" : "hendan ársfjórðingin",
"previous" : "seinasta ársfjórðing",
"future" : "um {0} ársfj.",
"past" : "{0} ársfj. síðan",
"next" : "næsta ársfjórðing"
},
"second" : {
"past" : "{0} s. síðan",
"future" : "um {0} s.",
"current" : "nú"
},
"month" : {
"current" : "henda mánaðin",
"future" : "um {0} mnð.",
"past" : "{0} mnð. síðan",
"next" : "næsta mánað",
"previous" : "seinasta mánað"
},
"day" : {
"previous" : "í gjár",
"future" : "um {0} d.",
"next" : "í morgin",
"current" : "í dag",
"past" : "{0} d. síðan"
},
"minute" : {
"past" : "{0} m. síðan",
"future" : "um {0} m.",
"current" : "hendan minuttin"
},
"now" : "nú"
},
"long" : {
"month" : {
"previous" : "seinasta mánað",
"past" : {
"one" : "{0} mánað síðan",
"other" : "{0} mánaðir síðan"
},
"next" : "næsta mánað",
"current" : "henda mánaðin",
"future" : {
"other" : "um {0} mánaðir",
"one" : "um {0} mánað"
}
},
"minute" : {
"current" : "hendan minuttin",
"future" : {
"one" : "um {0} minutt",
"other" : "um {0} minuttir"
},
"past" : {
"one" : "{0} minutt síðan",
"other" : "{0} minuttir síðan"
}
},
"quarter" : {
"next" : "næsta ársfjórðing",
"past" : {
"one" : "{0} ársfjórðing síðan",
"other" : "{0} ársfjórðingar síðan"
},
"future" : {
"one" : "um {0} ársfjórðing",
"other" : "um {0} ársfjórðingar"
},
"current" : "hendan ársfjórðingin",
"previous" : "seinasta ársfjórðing"
},
"week" : {
"next" : "næstu viku",
"previous" : "seinastu viku",
"future" : {
"other" : "um {0} vikur",
"one" : "um {0} viku"
},
"past" : {
"one" : "{0} vika síðan",
"other" : "{0} vikur síðan"
},
"current" : "hesu viku"
},
"day" : {
"previous" : "í gjár",
"past" : {
"one" : "{0} dagur síðan",
"other" : "{0} dagar síðan"
},
"future" : {
"other" : "um {0} dagar",
"one" : "um {0} dag"
},
"current" : "í dag",
"next" : "í morgin"
},
"hour" : {
"future" : {
"one" : "um {0} tíma",
"other" : "um {0} tímar"
},
"current" : "hendan tíman",
"past" : {
"one" : "{0} tími síðan",
"other" : "{0} tímar síðan"
}
},
"year" : {
"current" : "í ár",
"future" : "um {0} ár",
"next" : "næsta ár",
"past" : "{0} ár síðan",
"previous" : "í fjør"
},
"second" : {
"future" : "um {0} sekund",
"current" : "nú",
"past" : "{0} sekund síðan"
},
"now" : "nú"
},
"short" : {
"second" : {
"current" : "nú",
"past" : "{0} sek. síðan",
"future" : "um {0} sek."
},
"now" : "nú",
"month" : {
"future" : "um {0} mnð.",
"current" : "henda mánaðin",
"past" : "{0} mnð. síðan",
"previous" : "seinasta mánað",
"next" : "næsta mánað"
},
"day" : {
"previous" : "í gjár",
"current" : "í dag",
"next" : "í morgin",
"future" : "um {0} da.",
"past" : "{0} da. síðan"
},
"minute" : {
"past" : "{0} min. síðan",
"future" : "um {0} min.",
"current" : "hendan minuttin"
},
"quarter" : {
"past" : "{0} ársfj. síðan",
"previous" : "seinasta ársfjórðing",
"current" : "hendan ársfjórðingin",
"future" : "um {0} ársfj.",
"next" : "næsta ársfjórðing"
},
"hour" : {
"future" : "um {0} t.",
"current" : "hendan tíman",
"past" : "{0} t. síðan"
},
"week" : {
"future" : "um {0} vi.",
"previous" : "seinastu viku",
"next" : "næstu viku",
"past" : "{0} vi. síðan",
"current" : "hesu viku"
},
"year" : {
"next" : "næsta ár",
"current" : "í ár",
"past" : "{0} ár síðan",
"future" : "um {0} ár",
"previous" : "í fjør"
}
}
}

View File

@@ -0,0 +1,203 @@
{
"narrow" : {
"day" : {
"next" : "demain",
"future" : "+{0} j",
"previous" : "hier",
"current" : "aujourdhui",
"past" : "-{0} j"
},
"quarter" : {
"next" : "le trimestre prochain",
"past" : "-{0} trim.",
"future" : "+{0} trim.",
"previous" : "le trimestre dernier",
"current" : "ce trimestre"
},
"hour" : {
"past" : "-{0} h",
"future" : "+{0} h",
"current" : "cette heure-ci"
},
"year" : {
"next" : "lannée prochaine",
"past" : "-{0} a",
"current" : "cette année",
"previous" : "lannée dernière",
"future" : "+{0} a"
},
"now" : "maintenant",
"month" : {
"current" : "ce mois-ci",
"future" : "+{0} m.",
"past" : "-{0} m.",
"next" : "le mois prochain",
"previous" : "le mois dernier"
},
"week" : {
"previous" : "la semaine dernière",
"current" : "cette semaine",
"past" : "-{0} sem.",
"future" : "+{0} sem.",
"next" : "la semaine prochaine"
},
"minute" : {
"current" : "cette minute-ci",
"past" : "-{0} min",
"future" : "+{0} min"
},
"second" : {
"current" : "maintenant",
"past" : "-{0} s",
"future" : "+{0} s"
}
},
"long" : {
"quarter" : {
"next" : "le trimestre prochain",
"future" : {
"other" : "dans {0} trimestres",
"one" : "dans {0} trimestre"
},
"previous" : "le trimestre dernier",
"current" : "ce trimestre",
"past" : {
"other" : "il y a {0} trimestres",
"one" : "il y a {0} trimestre"
}
},
"hour" : {
"future" : {
"other" : "dans {0} heures",
"one" : "dans {0} heure"
},
"past" : {
"one" : "il y a {0} heure",
"other" : "il y a {0} heures"
},
"current" : "cette heure-ci"
},
"minute" : {
"past" : {
"one" : "il y a {0} minute",
"other" : "il y a {0} minutes"
},
"future" : {
"one" : "dans {0} minute",
"other" : "dans {0} minutes"
},
"current" : "cette minute-ci"
},
"now" : "maintenant",
"month" : {
"next" : "le mois prochain",
"previous" : "le mois dernier",
"future" : "dans {0} mois",
"current" : "ce mois-ci",
"past" : "il y a {0} mois"
},
"day" : {
"next" : "demain",
"future" : {
"one" : "dans {0} jour",
"other" : "dans {0} jours"
},
"past" : {
"one" : "il y a {0} jour",
"other" : "il y a {0} jours"
},
"current" : "aujourdhui",
"previous" : "hier"
},
"year" : {
"future" : {
"one" : "dans {0} an",
"other" : "dans {0} ans"
},
"previous" : "lannée dernière",
"next" : "lannée prochaine",
"current" : "cette année",
"past" : {
"other" : "il y a {0} ans",
"one" : "il y a {0} an"
}
},
"week" : {
"next" : "la semaine prochaine",
"past" : {
"one" : "il y a {0} semaine",
"other" : "il y a {0} semaines"
},
"previous" : "la semaine dernière",
"current" : "cette semaine",
"future" : {
"one" : "dans {0} semaine",
"other" : "dans {0} semaines"
}
},
"second" : {
"future" : {
"one" : "dans {0} seconde",
"other" : "dans {0} secondes"
},
"current" : "maintenant",
"past" : {
"other" : "il y a {0} secondes",
"one" : "il y a {0} seconde"
}
}
},
"short" : {
"quarter" : {
"future" : "dans {0} trim.",
"next" : "le trimestre prochain",
"previous" : "le trimestre dernier",
"current" : "ce trimestre",
"past" : "il y a {0} trim."
},
"minute" : {
"future" : "dans {0} min",
"current" : "cette minute-ci",
"past" : "il y a {0} min"
},
"year" : {
"next" : "lannée prochaine",
"future" : "dans {0} a",
"current" : "cette année",
"past" : "il y a {0} a",
"previous" : "lannée dernière"
},
"second" : {
"current" : "maintenant",
"past" : "il y a {0} s",
"future" : "dans {0} s"
},
"hour" : {
"current" : "cette heure-ci",
"past" : "il y a {0} h",
"future" : "dans {0} h"
},
"now" : "maintenant",
"month" : {
"previous" : "le mois dernier",
"next" : "le mois prochain",
"past" : "il y a {0} m.",
"current" : "ce mois-ci",
"future" : "dans {0} m."
},
"week" : {
"previous" : "la semaine dernière",
"current" : "cette semaine",
"next" : "la semaine prochaine",
"past" : "il y a {0} sem.",
"future" : "dans {0} sem."
},
"day" : {
"next" : "demain",
"past" : "il y a {0} j",
"future" : "dans {0} j",
"previous" : "hier",
"current" : "aujourdhui"
}
}
}

View File

@@ -0,0 +1,206 @@
{
"long" : {
"quarter" : {
"past" : {
"one" : "il y a {0} trimestre",
"other" : "il y a {0} trimestres"
},
"next" : "le trimestre prochain",
"previous" : "le trimestre dernier",
"current" : "ce trimestre-ci",
"future" : {
"one" : "dans {0} trimestre",
"other" : "dans {0} trimestres"
}
},
"day" : {
"future" : {
"other" : "dans {0} jours",
"one" : "dans {0} jour"
},
"previous" : "hier",
"past" : {
"other" : "il y a {0} jours",
"one" : "il y a {0} jour"
},
"next" : "demain",
"current" : "aujourdhui"
},
"year" : {
"previous" : "lannée dernière",
"current" : "cette année",
"future" : {
"one" : "Dans {0} an",
"other" : "Dans {0} ans"
},
"next" : "lannée prochaine",
"past" : {
"other" : "Il y a {0} ans",
"one" : "Il y a {0} an"
}
},
"hour" : {
"future" : {
"one" : "dans {0} heure",
"other" : "dans {0} heures"
},
"current" : "cette heure-ci",
"past" : {
"other" : "il y a {0} heures",
"one" : "il y a {0} heure"
}
},
"second" : {
"past" : {
"one" : "il y a {0} seconde",
"other" : "il y a {0} secondes"
},
"current" : "maintenant",
"future" : {
"other" : "dans {0} secondes",
"one" : "dans {0} seconde"
}
},
"minute" : {
"past" : {
"one" : "il y a {0} minute",
"other" : "il y a {0} minutes"
},
"current" : "cette minute-ci",
"future" : {
"one" : "dans {0} minute",
"other" : "dans {0} minutes"
}
},
"month" : {
"current" : "ce mois-ci",
"next" : "le mois prochain",
"previous" : "le mois dernier",
"past" : "il y a {0} mois",
"future" : "dans {0} mois"
},
"now" : "maintenant",
"week" : {
"past" : {
"one" : "il y a {0} semaine",
"other" : "il y a {0} semaines"
},
"current" : "cette semaine",
"next" : "la semaine prochaine",
"previous" : "la semaine dernière",
"future" : {
"one" : "dans {0} semaine",
"other" : "dans {0} semaines"
}
}
},
"narrow" : {
"week" : {
"current" : "cette semaine",
"next" : "la semaine prochaine",
"past" : "-{0} sem.",
"previous" : "la semaine dernière",
"future" : "+{0} sem."
},
"minute" : {
"current" : "cette minute-ci",
"past" : "-{0} min",
"future" : "+{0} min"
},
"month" : {
"current" : "ce mois-ci",
"previous" : "le mois dernier",
"past" : "-{0} m.",
"next" : "le mois prochain",
"future" : "+{0} m."
},
"now" : "maintenant",
"year" : {
"current" : "cette année",
"next" : "lannée prochaine",
"past" : "-{0} a",
"future" : "+{0} a",
"previous" : "lannée dernière"
},
"hour" : {
"current" : "cette heure-ci",
"future" : "+{0} h",
"past" : "-{0} h"
},
"quarter" : {
"previous" : "le trimestre dernier",
"current" : "ce trimestre-ci",
"past" : "-{0} trim.",
"future" : "+{0} trim.",
"next" : "le trimestre prochain"
},
"second" : {
"past" : "-{0} s",
"future" : {
"one" : "+ {0} s",
"other" : "+{0} s"
},
"current" : "maintenant"
},
"day" : {
"past" : "-{0} j",
"current" : "aujourdhui",
"future" : "+{0} j",
"previous" : "hier",
"next" : "demain"
}
},
"short" : {
"month" : {
"previous" : "le mois dernier",
"current" : "ce mois-ci",
"next" : "le mois prochain",
"past" : "il y a {0} m.",
"future" : "dans {0} m."
},
"now" : "maintenant",
"day" : {
"next" : "demain",
"current" : "aujourdhui",
"previous" : "hier",
"past" : "il y a {0} j",
"future" : "dans {0} j"
},
"year" : {
"current" : "cette année",
"future" : "dans {0} a",
"previous" : "lannée dernière",
"next" : "lannée prochaine",
"past" : "il y a {0} a"
},
"hour" : {
"future" : "dans {0} h",
"current" : "cette heure-ci",
"past" : "il y a {0} h"
},
"minute" : {
"past" : "il y a {0} min",
"future" : "dans {0} min",
"current" : "cette minute-ci"
},
"second" : {
"past" : "il y a {0} s",
"current" : "maintenant",
"future" : "dans {0} s"
},
"quarter" : {
"future" : "dans {0} trim.",
"previous" : "le trimestre dernier",
"next" : "le trimestre prochain",
"past" : "il y a {0} trim.",
"current" : "ce trimestre-ci"
},
"week" : {
"next" : "la semaine prochaine",
"past" : "il y a {0} sem.",
"current" : "cette semaine",
"previous" : "la semaine dernière",
"future" : "dans {0} sem."
}
}
}

View File

@@ -0,0 +1,269 @@
{
"short" : {
"day" : {
"next" : "doman",
"past" : {
"one" : "{0} zornade indaûr",
"other" : "{0} zornadis indaûr"
},
"current" : "vuê",
"previous" : "îr",
"future" : {
"one" : "ca di {0} zornade",
"other" : "ca di {0} zornadis"
}
},
"month" : {
"past" : "{0} mês indaûr",
"future" : "ca di {0} mês",
"next" : "next month",
"current" : "this month",
"previous" : "last month"
},
"quarter" : {
"current" : "this quarter",
"past" : "-{0} Q",
"next" : "next quarter",
"previous" : "last quarter",
"future" : "+{0} Q"
},
"hour" : {
"current" : "this hour",
"future" : {
"one" : "ca di {0} ore",
"other" : "ca di {0} oris"
},
"past" : {
"other" : "{0} oris indaûr",
"one" : "{0} ore indaûr"
}
},
"year" : {
"next" : "next year",
"previous" : "last year",
"past" : {
"other" : "{0} agns indaûr",
"one" : "{0} an indaûr"
},
"current" : "this year",
"future" : {
"one" : "ca di {0} an",
"other" : "ca di {0} agns"
}
},
"minute" : {
"current" : "this minute",
"future" : {
"one" : "ca di {0} minût",
"other" : "ca di {0} minûts"
},
"past" : {
"other" : "{0} minûts indaûr",
"one" : "{0} minût indaûr"
}
},
"now" : "now",
"week" : {
"next" : "next week",
"previous" : "last week",
"current" : "this week",
"past" : {
"one" : "{0} setemane indaûr",
"other" : "{0} setemanis indaûr"
},
"future" : {
"other" : "ca di {0} setemanis",
"one" : "ca di {0} setemane"
}
},
"second" : {
"current" : "now",
"future" : {
"one" : "ca di {0} secont",
"other" : "ca di {0} seconts"
},
"past" : {
"one" : "{0} secont indaûr",
"other" : "{0} seconts indaûr"
}
}
},
"long" : {
"hour" : {
"past" : {
"one" : "{0} ore indaûr",
"other" : "{0} oris indaûr"
},
"future" : {
"one" : "ca di {0} ore",
"other" : "ca di {0} oris"
},
"current" : "this hour"
},
"now" : "now",
"quarter" : {
"future" : "+{0} Q",
"previous" : "last quarter",
"next" : "next quarter",
"current" : "this quarter",
"past" : "-{0} Q"
},
"day" : {
"current" : "vuê",
"past" : {
"one" : "{0} zornade indaûr",
"other" : "{0} zornadis indaûr"
},
"future" : {
"one" : "ca di {0} zornade",
"other" : "ca di {0} zornadis"
},
"next" : "doman",
"previous" : "îr"
},
"week" : {
"current" : "this week",
"future" : {
"one" : "ca di {0} setemane",
"other" : "ca di {0} setemanis"
},
"previous" : "last week",
"next" : "next week",
"past" : {
"other" : "{0} setemanis indaûr",
"one" : "{0} setemane indaûr"
}
},
"minute" : {
"future" : {
"one" : "ca di {0} minût",
"other" : "ca di {0} minûts"
},
"past" : {
"other" : "{0} minûts indaûr",
"one" : "{0} minût indaûr"
},
"current" : "this minute"
},
"second" : {
"current" : "now",
"future" : {
"one" : "ca di {0} secont",
"other" : "ca di {0} seconts"
},
"past" : {
"one" : "{0} secont indaûr",
"other" : "{0} seconts indaûr"
}
},
"month" : {
"current" : "this month",
"future" : "ca di {0} mês",
"past" : "{0} mês indaûr",
"next" : "next month",
"previous" : "last month"
},
"year" : {
"current" : "this year",
"past" : {
"one" : "{0} an indaûr",
"other" : "{0} agns indaûr"
},
"next" : "next year",
"previous" : "last year",
"future" : {
"one" : "ca di {0} an",
"other" : "ca di {0} agns"
}
}
},
"narrow" : {
"week" : {
"previous" : "last week",
"past" : {
"other" : "{0} setemanis indaûr",
"one" : "{0} setemane indaûr"
},
"current" : "this week",
"future" : {
"other" : "ca di {0} setemanis",
"one" : "ca di {0} setemane"
},
"next" : "next week"
},
"hour" : {
"future" : {
"other" : "ca di {0} oris",
"one" : "ca di {0} ore"
},
"current" : "this hour",
"past" : {
"one" : "{0} ore indaûr",
"other" : "{0} oris indaûr"
}
},
"now" : "now",
"second" : {
"past" : {
"other" : "{0} seconts indaûr",
"one" : "{0} secont indaûr"
},
"future" : {
"other" : "ca di {0} seconts",
"one" : "ca di {0} secont"
},
"current" : "now"
},
"month" : {
"previous" : "last month",
"next" : "next month",
"current" : "this month",
"past" : "{0} mês indaûr",
"future" : "ca di {0} mês"
},
"day" : {
"previous" : "îr",
"current" : "vuê",
"next" : "doman",
"past" : {
"other" : "{0} zornadis indaûr",
"one" : "{0} zornade indaûr"
},
"future" : {
"other" : "ca di {0} zornadis",
"one" : "ca di {0} zornade"
}
},
"year" : {
"future" : {
"one" : "ca di {0} an",
"other" : "ca di {0} agns"
},
"current" : "this year",
"past" : {
"other" : "{0} agns indaûr",
"one" : "{0} an indaûr"
},
"previous" : "last year",
"next" : "next year"
},
"quarter" : {
"past" : "-{0} Q",
"next" : "next quarter",
"previous" : "last quarter",
"current" : "this quarter",
"future" : "+{0} Q"
},
"minute" : {
"current" : "this minute",
"past" : {
"other" : "{0} minûts indaûr",
"one" : "{0} minût indaûr"
},
"future" : {
"other" : "ca di {0} minûts",
"one" : "ca di {0} minût"
}
}
}
}

View File

@@ -0,0 +1,251 @@
{
"narrow" : {
"week" : {
"current" : "dizze wike",
"next" : "folgjende wike",
"future" : {
"other" : "Oer {0} wiken",
"one" : "Oer {0} wike"
},
"past" : {
"one" : "{0} wike lyn",
"other" : "{0} wiken lyn"
},
"previous" : "foarige wike"
},
"month" : {
"past" : {
"one" : "{0} moanne lyn",
"other" : "{0} moannen lyn"
},
"current" : "dizze moanne",
"future" : {
"one" : "Oer {0} moanne",
"other" : "Oer {0} moannen"
},
"next" : "folgjende moanne",
"previous" : "foarige moanne"
},
"quarter" : {
"next" : "next quarter",
"previous" : "last quarter",
"current" : "this quarter",
"past" : "-{0} Q",
"future" : "+{0} Q"
},
"year" : {
"current" : "dit jier",
"next" : "folgjend jier",
"previous" : "foarich jier",
"past" : "{0} jier lyn",
"future" : "Oer {0} jier"
},
"hour" : {
"past" : "{0} oere lyn",
"future" : "Oer {0} oere",
"current" : "this hour"
},
"now" : "nu",
"day" : {
"current" : "vandaag",
"past" : {
"other" : "{0} deien lyn",
"one" : "{0} dei lyn"
},
"previous" : "gisteren",
"next" : "morgen",
"future" : {
"one" : "Oer {0} dei",
"other" : "Oer {0} deien"
}
},
"minute" : {
"current" : "this minute",
"past" : {
"other" : "{0} minuten lyn",
"one" : "{0} minút lyn"
},
"future" : {
"other" : "Oer {0} minuten",
"one" : "Oer {0} minút"
}
},
"second" : {
"future" : {
"one" : "Oer {0} sekonde",
"other" : "Oer {0} sekonden"
},
"current" : "nu",
"past" : {
"one" : "{0} sekonde lyn",
"other" : "{0} sekonden lyn"
}
}
},
"long" : {
"quarter" : {
"next" : "next quarter",
"current" : "this quarter",
"past" : "-{0} Q",
"previous" : "last quarter",
"future" : "+{0} Q"
},
"now" : "nu",
"day" : {
"previous" : "gisteren",
"past" : {
"one" : "{0} dei lyn",
"other" : "{0} deien lyn"
},
"current" : "vandaag",
"next" : "morgen",
"future" : {
"one" : "Oer {0} dei",
"other" : "Oer {0} deien"
}
},
"month" : {
"next" : "folgjende moanne",
"previous" : "foarige moanne",
"past" : {
"other" : "{0} moannen lyn",
"one" : "{0} moanne lyn"
},
"future" : {
"other" : "Oer {0} moannen",
"one" : "Oer {0} moanne"
},
"current" : "dizze moanne"
},
"second" : {
"past" : {
"one" : "{0} sekonde lyn",
"other" : "{0} sekonden lyn"
},
"future" : {
"one" : "Oer {0} sekonde",
"other" : "Oer {0} sekonden"
},
"current" : "nu"
},
"year" : {
"previous" : "foarich jier",
"next" : "folgjend jier",
"future" : "Oer {0} jier",
"past" : "{0} jier lyn",
"current" : "dit jier"
},
"week" : {
"future" : {
"one" : "Oer {0} wike",
"other" : "Oer {0} wiken"
},
"current" : "dizze wike",
"past" : {
"other" : "{0} wiken lyn",
"one" : "{0} wike lyn"
},
"next" : "folgjende wike",
"previous" : "foarige wike"
},
"hour" : {
"past" : "{0} oere lyn",
"future" : "Oer {0} oere",
"current" : "this hour"
},
"minute" : {
"future" : {
"one" : "Oer {0} minút",
"other" : "Oer {0} minuten"
},
"past" : {
"one" : "{0} minút lyn",
"other" : "{0} minuten lyn"
},
"current" : "this minute"
}
},
"short" : {
"year" : {
"next" : "folgjend jier",
"future" : "Oer {0} jier",
"current" : "dit jier",
"past" : "{0} jier lyn",
"previous" : "foarich jier"
},
"minute" : {
"current" : "this minute",
"past" : {
"one" : "{0} minút lyn",
"other" : "{0} minuten lyn"
},
"future" : {
"one" : "Oer {0} minút",
"other" : "Oer {0} minuten"
}
},
"week" : {
"future" : {
"other" : "Oer {0} wiken",
"one" : "Oer {0} wike"
},
"next" : "folgjende wike",
"current" : "dizze wike",
"past" : {
"one" : "{0} wike lyn",
"other" : "{0} wiken lyn"
},
"previous" : "foarige wike"
},
"day" : {
"next" : "morgen",
"current" : "vandaag",
"previous" : "gisteren",
"future" : {
"one" : "Oer {0} dei",
"other" : "Oer {0} deien"
},
"past" : {
"one" : "{0} dei lyn",
"other" : "{0} deien lyn"
}
},
"quarter" : {
"future" : "+{0} Q",
"next" : "next quarter",
"previous" : "last quarter",
"current" : "this quarter",
"past" : "-{0} Q"
},
"month" : {
"current" : "dizze moanne",
"past" : {
"other" : "{0} moannen lyn",
"one" : "{0} moanne lyn"
},
"previous" : "foarige moanne",
"next" : "folgjende moanne",
"future" : {
"other" : "Oer {0} moannen",
"one" : "Oer {0} moanne"
}
},
"now" : "nu",
"second" : {
"current" : "nu",
"future" : {
"other" : "Oer {0} sekonden",
"one" : "Oer {0} sekonde"
},
"past" : {
"one" : "{0} sekonde lyn",
"other" : "{0} sekonden lyn"
}
},
"hour" : {
"past" : "{0} oere lyn",
"current" : "this hour",
"future" : "Oer {0} oere"
}
}
}

View File

@@ -0,0 +1,267 @@
{
"long" : {
"month" : {
"next" : "an mhí seo chugainn",
"current" : "an mhí seo",
"future" : {
"one" : "i gceann {0} mhí",
"two" : "i gceann {0} mhí",
"other" : "i gceann {0} mí",
"few" : "i gceann {0} mhí"
},
"previous" : "an mhí seo caite",
"past" : {
"one" : "{0} mhí ó shin",
"other" : "{0} mí ó shin",
"two" : "{0} mhí ó shin",
"few" : "{0} mhí ó shin"
}
},
"second" : {
"current" : "anois",
"past" : {
"few" : "{0} shoicind ó shin",
"other" : "{0} soicind ó shin",
"two" : "{0} shoicind ó shin"
},
"future" : {
"other" : "i gceann {0} soicind",
"two" : "i gceann {0} shoicind",
"few" : "i gceann {0} shoicind"
}
},
"day" : {
"past" : "{0} lá ó shin",
"future" : "i gceann {0} lá",
"next" : "amárach",
"previous" : "inné",
"current" : "inniu"
},
"minute" : {
"future" : "i gceann {0} nóiméad",
"current" : "an nóiméad seo",
"past" : "{0} nóiméad ó shin"
},
"hour" : {
"current" : "an uair seo",
"past" : {
"many" : "{0} n-uaire an chloig ó shin",
"few" : "{0} huaire an chloig ó shin",
"other" : "{0} uair an chloig ó shin"
},
"future" : {
"few" : "i gceann {0} huaire an chloig",
"many" : "i gceann {0} n-uaire an chloig",
"other" : "i gceann {0} uair an chloig"
}
},
"quarter" : {
"next" : "an ráithe seo chugainn",
"current" : "an ráithe seo",
"future" : "i gceann {0} ráithe",
"past" : "{0} ráithe ó shin",
"previous" : "an ráithe seo caite"
},
"now" : "anois",
"year" : {
"next" : "an bhliain seo chugainn",
"past" : {
"two" : "{0} bhliain ó shin",
"many" : "{0} mbliana ó shin",
"other" : "{0} bliain ó shin",
"one" : "{0} bhliain ó shin",
"few" : "{0} bliana ó shin"
},
"future" : {
"one" : "i gceann {0} bhliain",
"two" : "i gceann {0} bhliain",
"few" : "i gceann {0} bliana",
"many" : "i gceann {0} mbliana",
"other" : "i gceann {0} bliain"
},
"previous" : "anuraidh",
"current" : "an bhliain seo"
},
"week" : {
"previous" : "an tseachtain seo caite",
"next" : "an tseachtain seo chugainn",
"past" : {
"other" : "{0} seachtain ó shin",
"many" : "{0} seachtaine ó shin",
"few" : "{0} seachtaine ó shin",
"two" : "{0} sheachtain ó shin"
},
"current" : "an tseachtain seo",
"future" : {
"other" : "i gceann {0} seachtain",
"many" : "i gceann {0} seachtaine",
"few" : "i gceann {0} seachtaine",
"two" : "i gceann {0} sheachtain"
}
}
},
"short" : {
"minute" : {
"past" : "{0} nóim. ó shin",
"future" : "i gceann {0} nóim.",
"current" : "an nóiméad seo"
},
"hour" : {
"current" : "an uair seo",
"future" : {
"few" : "i gceann {0} huaire",
"many" : "i gceann {0} n-uaire",
"other" : "i gceann {0} uair"
},
"past" : {
"other" : "{0} uair ó shin",
"few" : "{0} huaire ó shin",
"many" : "{0} n-uaire ó shin"
}
},
"day" : {
"past" : "{0} lá ó shin",
"previous" : "inné",
"current" : "inniu",
"future" : "i gceann {0} lá",
"next" : "amárach"
},
"second" : {
"future" : {
"few" : "i gceann {0} shoic.",
"two" : "i gceann {0} shoic.",
"other" : "i gceann {0} soic."
},
"past" : {
"few" : "{0} shoic. ó shin",
"two" : "{0} shoic. ó shin",
"other" : "{0} soic. ó shin"
},
"current" : "anois"
},
"quarter" : {
"future" : "i gceann {0} ráithe",
"next" : "an ráithe seo chugainn",
"current" : "an ráithe seo",
"past" : "{0} ráithe ó shin",
"previous" : "an ráithe seo caite"
},
"year" : {
"current" : "an bhl. seo",
"past" : {
"other" : "{0} bl. ó shin",
"two" : "{0} bhl. ó shin",
"many" : "{0} mbl. ó shin",
"one" : "{0} bhl. ó shin"
},
"previous" : "anuraidh",
"next" : "an bhl. seo chugainn",
"future" : {
"two" : "i gceann {0} bhl.",
"many" : "i gceann {0} mbl.",
"other" : "i gceann {0} bl."
}
},
"week" : {
"future" : {
"two" : "i gceann {0} shcht.",
"other" : "i gceann {0} scht."
},
"past" : "{0} scht. ó shin",
"next" : "an tscht. seo chugainn",
"current" : "an tscht. seo",
"previous" : "an tscht. seo caite"
},
"month" : {
"future" : {
"few" : "i gceann {0} mhí",
"other" : "i gceann {0} mí",
"one" : "i gceann {0} mhí",
"two" : "i gceann {0} mhí"
},
"past" : {
"two" : "{0} mhí ó shin",
"one" : "{0} mhí ó shin",
"other" : "{0} mí ó shin",
"few" : "{0} mhí ó shin"
},
"current" : "an mhí seo",
"previous" : "an mhí seo caite",
"next" : "an mhí seo chugainn"
},
"now" : "anois"
},
"narrow" : {
"now" : "anois",
"day" : {
"future" : "+{0} lá",
"current" : "inniu",
"next" : "amárach",
"previous" : "inné",
"past" : "-{0} lá"
},
"year" : {
"next" : "an bhl. seo chugainn",
"future" : {
"two" : "+{0} bhl.",
"many" : "+{0} mbl.",
"one" : "+{0} bhl.",
"other" : "+{0} bl."
},
"past" : {
"other" : "-{0} bl.",
"two" : "-{0} bhl.",
"one" : "-{0} bhl.",
"many" : "-{0} mbl."
},
"current" : "an bhl. seo",
"previous" : "anuraidh"
},
"minute" : {
"current" : "an nóiméad seo",
"past" : "-{0} n",
"future" : "+{0} n"
},
"week" : {
"previous" : "an tscht. seo caite",
"current" : "an tscht. seo",
"past" : "-{0} scht.",
"future" : "+{0} scht.",
"next" : "an tscht. seo chugainn"
},
"hour" : {
"current" : "an uair seo",
"future" : "+{0} u",
"past" : "-{0} u"
},
"second" : {
"current" : "anois",
"future" : "+{0} s",
"past" : "-{0} s"
},
"month" : {
"next" : "an mhí seo chugainn",
"past" : {
"one" : "-{0} mhí",
"other" : "-{0} mí",
"few" : "-{0} mhí",
"two" : "-{0} mhí"
},
"previous" : "an mhí seo caite",
"future" : {
"two" : "+{0} mhí",
"one" : "+{0} mhí",
"few" : "+{0} mhí",
"other" : "+{0} mí"
},
"current" : "an mhí seo"
},
"quarter" : {
"next" : "an ráithe seo chugainn",
"future" : "+{0} R",
"past" : "-{0} R",
"previous" : "an ráithe seo caite",
"current" : "an ráithe seo"
}
}
}

View File

@@ -0,0 +1,305 @@
{
"narrow" : {
"week" : {
"next" : "ath-shn.",
"previous" : "sn. ch.",
"current" : "an t-sn. seo",
"future" : "+{0} sn.",
"past" : "-{0} sn."
},
"quarter" : {
"future" : "+{0} c.",
"previous" : "c. ch.",
"current" : "an c. seo",
"next" : "ath-ch.",
"past" : "-{0} c."
},
"minute" : {
"past" : "-{0} m",
"current" : "sa mhion.",
"future" : "+{0} m"
},
"year" : {
"previous" : "an-uir.",
"current" : "am bl.",
"past" : {
"two" : "-{0} bhl.",
"other" : "-{0} bl.",
"one" : "-{0} bhl."
},
"next" : "an ath-bhl.",
"future" : {
"two" : "+{0} bhl.",
"one" : "+{0} bhl.",
"other" : "+{0} bl."
}
},
"second" : {
"future" : "+{0} d",
"past" : "-{0} d",
"current" : "an-dràsta"
},
"month" : {
"future" : {
"two" : "+{0} mhì.",
"other" : "+{0} mì.",
"one" : "+{0} mhì."
},
"current" : "am mì. seo",
"past" : {
"two" : "-{0} mhì.",
"one" : "-{0} mhì.",
"other" : "-{0} mì."
},
"previous" : "mì. ch.",
"next" : "ath-mhì."
},
"now" : "an-dràsta",
"hour" : {
"future" : "+{0} u.",
"current" : "san uair",
"past" : "-{0} u."
},
"day" : {
"current" : "an-diugh",
"previous" : "an-dè",
"next" : "a-màireach",
"past" : "-{0} là",
"future" : "+{0} là"
}
},
"long" : {
"hour" : {
"future" : {
"few" : "an ceann {0} uairean a thìde",
"other" : "an ceann {0} uair a thìde"
},
"current" : "am broinn uair a thìde",
"past" : {
"other" : "{0} uair a thìde air ais",
"few" : "{0} uairean a thìde air ais"
}
},
"year" : {
"previous" : "an-uiridh",
"current" : "am bliadhna",
"next" : "an ath-bhliadhna",
"past" : {
"few" : "{0} bhliadhnaichean air ais",
"two" : "{0} bhliadhna air ais",
"other" : "{0} bliadhna air ais",
"one" : "{0} bhliadhna air ais"
},
"future" : {
"one" : "an ceann {0} bhliadhna",
"few" : "an ceann {0} bliadhnaichean",
"other" : "an ceann {0} bliadhna",
"two" : "an ceann {0} bhliadhna"
}
},
"day" : {
"previous" : "an-dè",
"current" : "an-diugh",
"next" : "a-màireach",
"future" : {
"other" : "an ceann {0} latha",
"few" : "an ceann {0} làithean"
},
"past" : {
"few" : "{0} làithean air ais",
"other" : "{0} latha air ais"
}
},
"minute" : {
"future" : {
"one" : "an ceann {0} mhionaid",
"two" : "an ceann {0} mhionaid",
"other" : "an ceann {0} mionaid",
"few" : "an ceann {0} mionaidean"
},
"current" : "am broinn mionaid",
"past" : {
"two" : "{0} mhionaid air ais",
"one" : "{0} mhionaid air ais",
"few" : "{0} mionaidean air ais",
"other" : "{0} mionaid air ais"
}
},
"second" : {
"future" : {
"few" : "an ceann {0} diogan",
"other" : "an ceann {0} diog",
"two" : "an ceann {0} dhiog"
},
"current" : "an-dràsta",
"past" : {
"two" : "{0} dhiog air ais",
"few" : "{0} diogan air ais",
"other" : "{0} diog air ais"
}
},
"now" : "an-dràsta",
"week" : {
"previous" : "an t-seachdain seo chaidh",
"next" : "an ath-sheachdain",
"future" : {
"two" : "an ceann {0} sheachdain",
"few" : "an ceann {0} seachdainean",
"other" : "an ceann {0} seachdain"
},
"current" : "an t-seachdain seo",
"past" : {
"few" : "{0} seachdainean air ais",
"two" : "{0} sheachdain air ais",
"other" : "{0} seachdain air ais"
}
},
"quarter" : {
"past" : {
"two" : "o chionn {0} chairteil",
"few" : "o chionn {0} cairtealan",
"other" : "o chionn {0} cairteil",
"one" : "o chionn {0} chairteil"
},
"future" : {
"other" : "an ceann {0} cairteil",
"two" : "an ceann {0} chairteil",
"few" : "an ceann {0} cairtealan",
"one" : "an ceann {0} chairteil"
},
"previous" : "an cairteal seo chaidh",
"current" : "an cairteal seo",
"next" : "an ath-chairteal"
},
"month" : {
"past" : {
"two" : "{0} mhìos air ais",
"few" : "{0} mìosan air ais",
"one" : "{0} mhìos air ais",
"other" : "{0} mìos air ais"
},
"previous" : "am mìos seo chaidh",
"future" : {
"one" : "an ceann {0} mhìosa",
"other" : "an ceann {0} mìosa",
"two" : "an ceann {0} mhìosa",
"few" : "an ceann {0} mìosan"
},
"current" : "am mìos seo",
"next" : "an ath-mhìos"
}
},
"short" : {
"hour" : {
"future" : {
"few" : "an {0} uair.",
"other" : "an {0} uair"
},
"past" : {
"other" : "o {0} uair",
"few" : "o {0} uair."
},
"current" : "am broinn uair"
},
"quarter" : {
"current" : "an cairt. seo",
"future" : {
"one" : "an {0} chairt.",
"other" : "an {0} cairt.",
"two" : "an {0} chairt."
},
"previous" : "an cairt. sa chaidh",
"next" : "an ath-chairt.",
"past" : {
"other" : "o {0} cairt.",
"one" : "o {0} chairt.",
"two" : "o {0} chairt."
}
},
"week" : {
"next" : "an ath-sheachd.",
"current" : "an t-seachd. seo",
"previous" : "seachd. sa chaidh",
"past" : {
"two" : "o {0} sheachd.",
"other" : "o {0} seachd.",
"one" : "o {0} sheachd."
},
"future" : {
"two" : "an {0} sheachd.",
"one" : "an {0} sheachd.",
"other" : "an {0} seachd."
}
},
"year" : {
"current" : "am bliadhna",
"future" : {
"one" : "an {0} bhlia.",
"two" : "an {0} bhlia.",
"other" : "an {0} blia."
},
"past" : {
"two" : "o {0} bhlia.",
"other" : "o {0} blia.",
"one" : "o {0} bhlia."
},
"next" : "an ath-bhliadhna",
"previous" : "an-uiridh"
},
"minute" : {
"current" : "am broinn mion.",
"future" : {
"two" : "an {0} mhion.",
"one" : "an {0} mhion.",
"other" : "an {0} mion."
},
"past" : {
"one" : "o {0} mhion.",
"two" : "o {0} mhion.",
"other" : "o {0} mion."
}
},
"now" : "an-dràsta",
"month" : {
"current" : "am mìos seo",
"past" : {
"two" : "o {0} mhìos.",
"one" : "o {0} mhìos.",
"other" : "o {0} mìos."
},
"future" : {
"two" : "an {0} mhìos.",
"one" : "an {0} mhìos.",
"other" : "an {0} mìos."
},
"next" : "an ath-mhìos",
"previous" : "am mìos sa chaidh"
},
"day" : {
"future" : {
"other" : "an {0} là",
"few" : "an {0} là."
},
"current" : "an-diugh",
"next" : "a-màireach",
"previous" : "an-dè",
"past" : {
"few" : "o {0} là.",
"other" : "o {0} là"
}
},
"second" : {
"past" : {
"other" : "o {0} diog",
"two" : "o {0} dhiog",
"few" : "o {0} diog."
},
"future" : {
"few" : "an {0} diog.",
"two" : "an {0} dhiog",
"other" : "an {0} diog"
},
"current" : "an-dràsta"
}
}
}

View File

@@ -0,0 +1,227 @@
{
"narrow" : {
"second" : {
"future" : "en {0} s",
"current" : "agora",
"past" : "hai {0} s"
},
"year" : {
"next" : "seguinte ano",
"past" : "hai {0} a.",
"future" : "en {0} a.",
"previous" : "ano pasado",
"current" : "este ano"
},
"month" : {
"past" : "hai {0} m.",
"next" : "m. seguinte",
"future" : "en {0} m.",
"previous" : "m. pasado",
"current" : "este m."
},
"minute" : {
"past" : "hai {0} min",
"current" : "este minuto",
"future" : "en {0} min"
},
"quarter" : {
"previous" : "trim. pasado",
"current" : "este trim.",
"next" : "trim. seguinte",
"past" : "hai {0} trim.",
"future" : "en {0} trim."
},
"hour" : {
"future" : "en {0} h",
"past" : "hai {0} h",
"current" : "esta hora"
},
"now" : "agora",
"week" : {
"next" : "sem. seguinte",
"previous" : "sem. pasada",
"past" : "hai {0} sem.",
"future" : "en {0} sem.",
"current" : "esta sem."
},
"day" : {
"previous" : "onte",
"future" : "en {0} d.",
"past" : "hai {0} d.",
"current" : "hoxe",
"next" : "mañá"
}
},
"short" : {
"minute" : {
"future" : "dentro de {0} min",
"past" : "hai {0} min",
"current" : "este minuto"
},
"month" : {
"current" : "este m.",
"past" : {
"one" : "hai {0} mes",
"other" : "hai {0} mes."
},
"future" : {
"one" : "dentro de {0} mes",
"other" : "dentro de {0} mes."
},
"next" : "m. seguinte",
"previous" : "m. pasado"
},
"week" : {
"future" : "dentro de {0} sem.",
"previous" : "sem. pasada",
"current" : "esta sem.",
"next" : "sem. seguinte",
"past" : "hai {0} sem."
},
"hour" : {
"future" : "dentro de {0} h",
"current" : "esta hora",
"past" : "hai {0} h"
},
"day" : {
"next" : "mañá",
"current" : "hoxe",
"previous" : "onte",
"past" : {
"one" : "hai {0} día",
"other" : "hai {0} días"
},
"future" : {
"one" : "dentro de {0} día",
"other" : "dentro de {0} días"
}
},
"second" : {
"past" : "hai {0} s",
"current" : "agora",
"future" : "dentro de {0} s"
},
"now" : "agora",
"year" : {
"future" : {
"one" : "dentro de {0} ano",
"other" : "dentro de {0} anos"
},
"previous" : "ano pasado",
"next" : "seguinte ano",
"current" : "este ano",
"past" : {
"other" : "hai {0} anos",
"one" : "hai {0} ano"
}
},
"quarter" : {
"current" : "este trim.",
"future" : "dentro de {0} trim.",
"previous" : "trim. pasado",
"next" : "trim. seguinte",
"past" : "hai {0} trim."
}
},
"long" : {
"day" : {
"previous" : "onte",
"past" : {
"other" : "hai {0} días",
"one" : "hai {0} día"
},
"future" : {
"other" : "dentro de {0} días",
"one" : "dentro de {0} día"
},
"next" : "mañá",
"current" : "hoxe"
},
"hour" : {
"current" : "esta hora",
"future" : {
"one" : "dentro de {0} hora",
"other" : "dentro de {0} horas"
},
"past" : {
"one" : "hai {0} hora",
"other" : "hai {0} horas"
}
},
"month" : {
"next" : "o próximo mes",
"current" : "este mes",
"past" : {
"other" : "hai {0} meses",
"one" : "hai {0} mes"
},
"previous" : "o mes pasado",
"future" : {
"one" : "dentro de {0} mes",
"other" : "dentro de {0} meses"
}
},
"quarter" : {
"next" : "o próximo trimestre",
"past" : {
"one" : "hai {0} trimestre",
"other" : "hai {0} trimestres"
},
"previous" : "o trimestre pasado",
"current" : "este trimestre",
"future" : {
"one" : "dentro de {0} trimestre",
"other" : "dentro de {0} trimestres"
}
},
"year" : {
"next" : "o próximo ano",
"current" : "este ano",
"future" : {
"one" : "dentro de {0} ano",
"other" : "dentro de {0} anos"
},
"previous" : "o ano pasado",
"past" : {
"one" : "hai {0} ano",
"other" : "hai {0} anos"
}
},
"minute" : {
"past" : {
"one" : "hai {0} minuto",
"other" : "hai {0} minutos"
},
"future" : {
"other" : "dentro de {0} minutos",
"one" : "dentro de {0} minuto"
},
"current" : "este minuto"
},
"second" : {
"future" : {
"other" : "dentro de {0} segundos",
"one" : "dentro de {0} segundo"
},
"current" : "agora",
"past" : {
"one" : "hai {0} segundo",
"other" : "hai {0} segundos"
}
},
"week" : {
"future" : {
"other" : "dentro de {0} semanas",
"one" : "dentro de {0} semana"
},
"previous" : "a semana pasada",
"current" : "esta semana",
"next" : "a próxima semana",
"past" : {
"other" : "hai {0} semanas",
"one" : "hai {0} semana"
}
},
"now" : "agora"
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "આવતીકાલે",
"future" : "{0} દિવસમાં",
"previous" : "ગઈકાલે",
"current" : "આજે",
"past" : "{0} દિવસ પહેલાં"
},
"quarter" : {
"next" : "પછીનું ત્રિમાસિક",
"past" : "{0} ત્રિમાસિક પહેલાં",
"future" : "{0} ત્રિમાસિકમાં",
"previous" : "છેલ્લું ત્રિમાસિક",
"current" : "આ ત્રિમાસિક"
},
"hour" : {
"current" : "આ કલાક",
"past" : "{0} કલાક પહેલાં",
"future" : "{0} કલાકમાં"
},
"year" : {
"next" : "આવતા વર્ષે",
"past" : "{0} વર્ષ પહેલાં",
"current" : "આ વર્ષે",
"previous" : "ગયા વર્ષે",
"future" : "{0} વર્ષમાં"
},
"now" : "હમણાં",
"month" : {
"current" : "આ મહિને",
"future" : "{0} મહિનામાં",
"past" : "{0} મહિના પહેલાં",
"next" : "આવતા મહિને",
"previous" : "ગયા મહિને"
},
"week" : {
"previous" : "ગયા અઠવાડિયે",
"current" : "આ અઠવાડિયે",
"past" : "{0} અઠ. પહેલાં",
"future" : "{0} અઠ. માં",
"next" : "આવતા અઠવાડિયે"
},
"minute" : {
"current" : "આ મિનિટ",
"past" : "{0} મિનિટ પહેલાં",
"future" : "{0} મિનિટમાં"
},
"second" : {
"current" : "હમણાં",
"past" : "{0} સેકંડ પહેલાં",
"future" : "{0} સેકંડમાં"
}
},
"long" : {
"day" : {
"previous" : "ગઈકાલે",
"current" : "આજે",
"next" : "આવતીકાલે",
"past" : "{0} દિવસ પહેલાં",
"future" : "{0} દિવસમાં"
},
"week" : {
"current" : "આ અઠવાડિયે",
"future" : "{0} અઠવાડિયામાં",
"past" : "{0} અઠવાડિયા પહેલાં",
"previous" : "ગયા અઠવાડિયે",
"next" : "આવતા અઠવાડિયે"
},
"minute" : {
"current" : "આ મિનિટ",
"past" : "{0} મિનિટ પહેલાં",
"future" : "{0} મિનિટમાં"
},
"month" : {
"future" : "{0} મહિનામાં",
"next" : "આવતા મહિને",
"previous" : "ગયા મહિને",
"current" : "આ મહિને",
"past" : "{0} મહિના પહેલાં"
},
"hour" : {
"current" : "આ કલાક",
"past" : "{0} કલાક પહેલાં",
"future" : "{0} કલાકમાં"
},
"year" : {
"past" : "{0} વર્ષ પહેલાં",
"future" : "{0} વર્ષમાં",
"previous" : "ગયા વર્ષે",
"next" : "આવતા વર્ષે",
"current" : "આ વર્ષે"
},
"second" : {
"past" : "{0} સેકંડ પહેલાં",
"future" : "{0} સેકંડમાં",
"current" : "હમણાં"
},
"now" : "હમણાં",
"quarter" : {
"past" : "{0} ત્રિમાસિક પહેલાં",
"current" : "આ ત્રિમાસિક",
"previous" : "છેલ્લું ત્રિમાસિક",
"future" : "{0} ત્રિમાસિકમાં",
"next" : "પછીનું ત્રિમાસિક"
}
},
"short" : {
"quarter" : {
"future" : "{0} ત્રિમાસિકમાં",
"next" : "પછીનું ત્રિમાસિક",
"previous" : "છેલ્લું ત્રિમાસિક",
"current" : "આ ત્રિમાસિક",
"past" : "{0} ત્રિમાસિક પહેલાં"
},
"minute" : {
"past" : "{0} મિનિટ પહેલાં",
"future" : "{0} મિનિટમાં",
"current" : "આ મિનિટ"
},
"year" : {
"next" : "આવતા વર્ષે",
"future" : "{0} વર્ષમાં",
"current" : "આ વર્ષે",
"past" : "{0} વર્ષ પહેલાં",
"previous" : "ગયા વર્ષે"
},
"second" : {
"past" : "{0} સેકંડ પહેલાં",
"current" : "હમણાં",
"future" : "{0} સેકંડમાં"
},
"hour" : {
"past" : "{0} કલાક પહેલાં",
"current" : "આ કલાક",
"future" : "{0} કલાકમાં"
},
"now" : "હમણાં",
"month" : {
"previous" : "ગયા મહિને",
"next" : "આવતા મહિને",
"past" : "{0} મહિના પહેલાં",
"current" : "આ મહિને",
"future" : "{0} મહિનામાં"
},
"week" : {
"previous" : "ગયા અઠવાડિયે",
"current" : "આ અઠવાડિયે",
"next" : "આવતા અઠવાડિયે",
"past" : "{0} અઠ. પહેલાં",
"future" : "{0} અઠ. માં"
},
"day" : {
"next" : "આવતીકાલે",
"past" : "{0} દિવસ પહેલાં",
"future" : "{0} દિવસમાં",
"previous" : "ગઈકાલે",
"current" : "આજે"
}
}
}

View File

@@ -0,0 +1,358 @@
{
"long" : {
"second" : {
"past" : {
"one" : "לפני שנייה",
"two" : "לפני שתי שניות",
"other" : "לפני {0} שניות"
},
"current" : "עכשיו",
"future" : {
"two" : "בעוד שתי שניות",
"other" : "בעוד {0} שניות",
"one" : "בעוד שנייה"
}
},
"hour" : {
"current" : "בשעה זו",
"past" : {
"one" : "לפני שעה",
"two" : "לפני שעתיים",
"other" : "לפני {0} שעות"
},
"future" : {
"one" : "בעוד שעה",
"two" : "בעוד שעתיים",
"other" : "בעוד {0} שעות"
}
},
"quarter" : {
"next" : "הרבעון הבא",
"current" : "רבעון זה",
"future" : {
"one" : "ברבעון הבא",
"two" : "בעוד שני רבעונים",
"other" : "בעוד {0} רבעונים"
},
"previous" : "הרבעון הקודם",
"past" : {
"one" : "ברבעון הקודם",
"two" : "לפני שני רבעונים",
"other" : "לפני {0} רבעונים"
}
},
"year" : {
"future" : {
"one" : "בעוד שנה",
"many" : "בעוד {0} שנה",
"other" : "בעוד {0} שנים",
"two" : "בעוד שנתיים"
},
"next" : "השנה הבאה",
"past" : {
"other" : "לפני {0} שנים",
"two" : "לפני שנתיים",
"many" : "לפני {0} שנה",
"one" : "לפני שנה"
},
"previous" : "השנה שעברה",
"current" : "השנה"
},
"day" : {
"future" : {
"other" : "בעוד {0} ימים",
"two" : "בעוד יומיים",
"one" : "בעוד יום {0}"
},
"previous" : "אתמול",
"current" : "היום",
"next" : "מחר",
"past" : {
"other" : "לפני {0} ימים",
"one" : "לפני יום {0}",
"two" : "לפני יומיים"
}
},
"minute" : {
"future" : {
"other" : "בעוד {0} דקות",
"two" : "בעוד שתי דקות",
"one" : "בעוד דקה"
},
"past" : {
"two" : "לפני שתי דקות",
"one" : "לפני דקה",
"other" : "לפני {0} דקות"
},
"current" : "בדקה זו"
},
"month" : {
"next" : "החודש הבא",
"past" : {
"two" : "לפני חודשיים",
"other" : "לפני {0} חודשים",
"one" : "לפני חודש"
},
"previous" : "החודש שעבר",
"current" : "החודש",
"future" : {
"two" : "בעוד חודשיים",
"one" : "בעוד חודש",
"other" : "בעוד {0} חודשים"
}
},
"week" : {
"next" : "השבוע הבא",
"current" : "השבוע",
"past" : {
"two" : "לפני שבועיים",
"one" : "לפני שבוע",
"other" : "לפני {0} שבועות"
},
"previous" : "השבוע שעבר",
"future" : {
"two" : "בעוד שבועיים",
"other" : "בעוד {0} שבועות",
"one" : "בעוד שבוע"
}
},
"now" : "עכשיו"
},
"short" : {
"week" : {
"previous" : "השבוע שעבר",
"next" : "השבוע הבא",
"current" : "השבוע",
"past" : {
"other" : "לפני {0} שב׳",
"two" : "לפני שבועיים",
"one" : "לפני שב׳"
},
"future" : {
"other" : "בעוד {0} שב׳",
"one" : "בעוד שב׳",
"two" : "בעוד שבועיים"
}
},
"month" : {
"next" : "החודש הבא",
"current" : "החודש",
"previous" : "החודש שעבר",
"future" : {
"two" : "בעוד חודשיים",
"one" : "בעוד חודש",
"other" : "בעוד {0} חודשים"
},
"past" : {
"two" : "לפני חודשיים",
"one" : "לפני חודש",
"other" : "לפני {0} חודשים"
}
},
"minute" : {
"current" : "בדקה זו",
"past" : {
"other" : "לפני {0} דק׳",
"one" : "לפני דקה"
},
"future" : {
"two" : "בעוד שתי דק׳",
"other" : "בעוד {0} דק׳",
"one" : "בעוד דקה"
}
},
"second" : {
"past" : {
"two" : "לפני שתי שנ׳",
"one" : "לפני שנ׳",
"other" : "לפני {0} שנ׳"
},
"future" : {
"one" : "בעוד שנ׳",
"two" : "בעוד שתי שנ׳",
"other" : "בעוד {0} שנ׳"
},
"current" : "עכשיו"
},
"now" : "עכשיו",
"day" : {
"next" : "מחר",
"previous" : "אתמול",
"current" : "היום",
"past" : {
"other" : "לפני {0} ימים",
"one" : "אתמול",
"two" : "לפני יומיים"
},
"future" : {
"one" : "מחר",
"two" : "בעוד יומיים",
"other" : "בעוד {0} ימים"
}
},
"year" : {
"current" : "השנה",
"past" : {
"two" : "לפני שנתיים",
"other" : "לפני {0} שנים",
"one" : "לפני שנה",
"many" : "לפני {0} שנה"
},
"previous" : "השנה שעברה",
"next" : "השנה הבאה",
"future" : {
"many" : "בעוד {0} שנה",
"one" : "בעוד שנה",
"two" : "בעוד שנתיים",
"other" : "בעוד {0} שנים"
}
},
"quarter" : {
"future" : {
"one" : "ברבע׳ הבא",
"two" : "בעוד שני רבע׳",
"other" : "בעוד {0} רבע׳"
},
"next" : "הרבעון הבא",
"current" : "רבעון זה",
"past" : {
"one" : "ברבע׳ הקודם",
"two" : "לפני שני רבע׳",
"other" : "לפני {0} רבע׳"
},
"previous" : "הרבעון הקודם"
},
"hour" : {
"current" : "בשעה זו",
"past" : {
"other" : "לפני {0} שע׳",
"two" : "לפני שעתיים",
"one" : "לפני שעה"
},
"future" : {
"other" : "בעוד {0} שע׳",
"one" : "בעוד שעה",
"two" : "בעוד שעתיים"
}
}
},
"narrow" : {
"year" : {
"current" : "השנה",
"past" : {
"one" : "לפני שנה",
"two" : "לפני שנתיים",
"other" : "לפני {0} שנים",
"many" : "לפני {0} שנה"
},
"future" : {
"one" : "בעוד שנה",
"two" : "בעוד שנתיים",
"many" : "בעוד {0} שנה",
"other" : "בעוד {0} שנים"
},
"next" : "השנה הבאה",
"previous" : "השנה שעברה"
},
"minute" : {
"current" : "בדקה זו",
"future" : {
"other" : "בעוד {0} דק׳",
"two" : "בעוד שתי דק׳",
"one" : "בעוד דקה"
},
"past" : {
"two" : "לפני שתי דק׳",
"other" : "לפני {0} דק׳",
"one" : "לפני דקה"
}
},
"day" : {
"previous" : "אתמול",
"current" : "היום",
"next" : "מחר",
"past" : {
"two" : "לפני יומיים",
"other" : "לפני {0} ימים",
"one" : "אתמול"
},
"future" : {
"two" : "בעוד יומיים",
"one" : "מחר",
"other" : "בעוד {0} ימים"
}
},
"second" : {
"future" : {
"two" : "בעוד שתי שנ׳",
"one" : "בעוד שנ׳",
"other" : "בעוד {0} שנ׳"
},
"past" : {
"one" : "לפני שנ׳",
"two" : "לפני שתי שנ׳",
"other" : "לפני {0} שנ׳"
},
"current" : "עכשיו"
},
"now" : "עכשיו",
"month" : {
"future" : {
"one" : "בעוד חו׳",
"other" : "בעוד {0} חו׳",
"two" : "בעוד חודשיים"
},
"current" : "החודש",
"next" : "החודש הבא",
"previous" : "החודש שעבר",
"past" : {
"other" : "לפני {0} חו׳",
"one" : "לפני חו׳",
"two" : "לפני חודשיים"
}
},
"week" : {
"past" : {
"two" : "לפני שבועיים",
"one" : "לפני שבוע",
"other" : "לפני {0} שב׳"
},
"previous" : "השבוע שעבר",
"future" : {
"two" : "בעוד שבועיים",
"one" : "בעוד שב׳",
"other" : "בעוד {0} שב׳"
},
"next" : "השבוע הבא",
"current" : "השבוע"
},
"quarter" : {
"next" : "הרבעון הבא",
"current" : "רבעון זה",
"previous" : "הרבעון הקודם",
"past" : {
"two" : "לפני שני רבע׳",
"other" : "לפני {0} רבע׳",
"one" : "ברבע׳ הקודם"
},
"future" : {
"one" : "ברבע׳ הבא",
"two" : "בעוד שני רבע׳",
"other" : "בעוד {0} רבע׳"
}
},
"hour" : {
"past" : {
"one" : "לפני שעה",
"two" : "לפני שעתיים",
"other" : "לפני {0} שע׳"
},
"future" : {
"one" : "בעוד שעה",
"other" : "בעוד {0} שע׳",
"two" : "בעוד שעתיים"
},
"current" : "בשעה זו"
}
}
}

View File

@@ -0,0 +1,170 @@
{
"long" : {
"year" : {
"future" : "{0} वर्ष में",
"past" : "{0} वर्ष पहले",
"next" : "अगला वर्ष",
"previous" : "पिछला वर्ष",
"current" : "इस वर्ष"
},
"week" : {
"current" : "इस सप्ताह",
"next" : "अगला सप्ताह",
"future" : "{0} सप्ताह में",
"previous" : "पिछला सप्ताह",
"past" : "{0} सप्ताह पहले"
},
"quarter" : {
"next" : "अगली तिमाही",
"past" : "{0} तिमाही पहले",
"current" : "इस तिमाही",
"future" : {
"other" : "{0} तिमाहियों में",
"one" : "{0} तिमाही में"
},
"previous" : "अंतिम तिमाही"
},
"minute" : {
"future" : "{0} मिनट में",
"past" : "{0} मिनट पहले",
"current" : "यह मिनट"
},
"month" : {
"current" : "इस माह",
"next" : "अगला माह",
"previous" : "पिछला माह",
"future" : "{0} माह में",
"past" : "{0} माह पहले"
},
"second" : {
"future" : "{0} सेकंड में",
"current" : "अब",
"past" : "{0} सेकंड पहले"
},
"day" : {
"next" : "कल",
"past" : "{0} दिन पहले",
"previous" : "कल",
"current" : "आज",
"future" : "{0} दिन में"
},
"now" : "अब",
"hour" : {
"future" : "{0} घंटे में",
"current" : "यह घंटा",
"past" : "{0} घंटे पहले"
}
},
"narrow" : {
"now" : "अब",
"minute" : {
"future" : "{0} मि॰ में",
"current" : "यह मिनट",
"past" : "{0} मि॰ पहले"
},
"year" : {
"previous" : "पिछला वर्ष",
"current" : "इस वर्ष",
"next" : "अगला वर्ष",
"past" : "{0} वर्ष पहले",
"future" : "{0} वर्ष में"
},
"second" : {
"current" : "अब",
"future" : "{0} से॰ में",
"past" : "{0} से॰ पहले"
},
"hour" : {
"past" : "{0} घं॰ पहले",
"future" : "{0} घं॰ में",
"current" : "यह घंटा"
},
"month" : {
"current" : "इस माह",
"previous" : "पिछला माह",
"past" : "{0} माह पहले",
"next" : "अगला माह",
"future" : "{0} माह में"
},
"quarter" : {
"previous" : "अंतिम तिमाही",
"current" : "इस तिमाही",
"past" : "{0} ति॰ पहले",
"future" : "{0} ति॰ में",
"next" : "अगली तिमाही"
},
"week" : {
"future" : "{0} सप्ताह में",
"current" : "इस सप्ताह",
"past" : "{0} सप्ताह पहले",
"previous" : "पिछला सप्ताह",
"next" : "अगला सप्ताह"
},
"day" : {
"current" : "आज",
"future" : "{0} दिन में",
"next" : "कल",
"past" : "{0} दिन पहले",
"previous" : "कल"
}
},
"short" : {
"month" : {
"future" : "{0} माह में",
"previous" : "पिछला माह",
"next" : "अगला माह",
"past" : "{0} माह पहले",
"current" : "इस माह"
},
"now" : "अब",
"day" : {
"next" : "कल",
"current" : "आज",
"previous" : "कल",
"past" : "{0} दिन पहले",
"future" : "{0} दिन में"
},
"year" : {
"current" : "इस वर्ष",
"future" : "{0} वर्ष में",
"previous" : "पिछला वर्ष",
"next" : "अगला वर्ष",
"past" : "{0} वर्ष पहले"
},
"hour" : {
"future" : "{0} घं॰ में",
"past" : "{0} घं॰ पहले",
"current" : "यह घंटा"
},
"minute" : {
"current" : "यह मिनट",
"past" : "{0} मि॰ पहले",
"future" : "{0} मि॰ में"
},
"second" : {
"past" : "{0} से॰ पहले",
"future" : "{0} से॰ में",
"current" : "अब"
},
"quarter" : {
"current" : "इस तिमाही",
"next" : "अगली तिमाही",
"past" : {
"other" : "{0} तिमाहियों पहले",
"one" : "{0} तिमाही पहले"
},
"future" : {
"other" : "{0} तिमाहियों में",
"one" : "{0} तिमाही में"
},
"previous" : "अंतिम तिमाही"
},
"week" : {
"next" : "अगला सप्ताह",
"past" : "{0} सप्ताह पहले",
"current" : "इस सप्ताह",
"previous" : "पिछला सप्ताह",
"future" : "{0} सप्ताह में"
}
}
}

View File

@@ -0,0 +1,227 @@
{
"narrow" : {
"year" : {
"future" : "za {0} g.",
"previous" : "prošle g.",
"current" : "ove g.",
"next" : "sljedeće g.",
"past" : "prije {0} g."
},
"day" : {
"current" : "danas",
"past" : "prije {0} d",
"next" : "sutra",
"previous" : "jučer",
"future" : "za {0} d"
},
"quarter" : {
"future" : "za {0} kv.",
"previous" : "prošli kv.",
"current" : "ovaj kv.",
"next" : "sljedeći kv.",
"past" : "prije {0} kv."
},
"week" : {
"next" : "sljedeći tj.",
"past" : "prije {0} tj.",
"current" : "ovaj tj.",
"future" : "za {0} tj.",
"previous" : "prošli tj."
},
"hour" : {
"current" : "ovaj sat",
"past" : "prije {0} h",
"future" : "za {0} h"
},
"month" : {
"past" : "prije {0} mj.",
"previous" : "prošli mj.",
"current" : "ovaj mj.",
"future" : "za {0} mj.",
"next" : "sljedeći mj."
},
"minute" : {
"current" : "ova minuta",
"past" : "prije {0} min",
"future" : "za {0} min"
},
"second" : {
"past" : "prije {0} s",
"future" : "za {0} s",
"current" : "sad"
},
"now" : "sad"
},
"short" : {
"hour" : {
"current" : "ovaj sat",
"past" : "prije {0} h",
"future" : "za {0} h"
},
"now" : "sad",
"quarter" : {
"current" : "ovaj kv.",
"future" : "za {0} kv.",
"past" : "prije {0} kv.",
"next" : "sljedeći kv.",
"previous" : "prošli kv."
},
"day" : {
"current" : "danas",
"past" : {
"other" : "prije {0} dana",
"one" : "prije {0} dan"
},
"future" : {
"other" : "za {0} dana",
"one" : "za {0} dan"
},
"next" : "sutra",
"previous" : "jučer"
},
"week" : {
"current" : "ovaj tj.",
"future" : "za {0} tj.",
"previous" : "prošli tj.",
"next" : "sljedeći tj.",
"past" : "prije {0} tj."
},
"minute" : {
"future" : "za {0} min",
"past" : "prije {0} min",
"current" : "ova minuta"
},
"second" : {
"future" : "za {0} s",
"current" : "sad",
"past" : "prije {0} s"
},
"month" : {
"future" : "za {0} mj.",
"previous" : "prošli mj.",
"next" : "sljedeći mj.",
"current" : "ovaj mj.",
"past" : "prije {0} mj."
},
"year" : {
"next" : "sljedeće god.",
"previous" : "prošle god.",
"current" : "ove god.",
"future" : "za {0} g.",
"past" : "prije {0} g."
}
},
"long" : {
"second" : {
"future" : {
"few" : "za {0} sekunde",
"one" : "za {0} sekundu",
"other" : "za {0} sekundi"
},
"current" : "sad",
"past" : {
"one" : "prije {0} sekundu",
"other" : "prije {0} sekundi",
"few" : "prije {0} sekunde"
}
},
"year" : {
"previous" : "prošle godine",
"next" : "sljedeće godine",
"past" : {
"few" : "prije {0} godine",
"one" : "prije {0} godinu",
"other" : "prije {0} godina"
},
"current" : "ove godine",
"future" : {
"other" : "za {0} godina",
"few" : "za {0} godine",
"one" : "za {0} godinu"
}
},
"day" : {
"previous" : "jučer",
"future" : {
"one" : "za {0} dan",
"other" : "za {0} dana"
},
"past" : {
"other" : "prije {0} dana",
"one" : "prije {0} dan"
},
"current" : "danas",
"next" : "sutra"
},
"now" : "sad",
"month" : {
"past" : {
"few" : "prije {0} mjeseca",
"one" : "prije {0} mjesec",
"other" : "prije {0} mjeseci"
},
"next" : "sljedeći mjesec",
"previous" : "prošli mjesec",
"future" : {
"other" : "za {0} mjeseci",
"one" : "za {0} mjesec",
"few" : "za {0} mjeseca"
},
"current" : "ovaj mjesec"
},
"week" : {
"past" : {
"one" : "prije {0} tjedan",
"few" : "prije {0} tjedna",
"other" : "prije {0} tjedana"
},
"future" : {
"one" : "za {0} tjedan",
"few" : "za {0} tjedna",
"other" : "za {0} tjedana"
},
"current" : "ovaj tjedan",
"previous" : "prošli tjedan",
"next" : "sljedeći tjedan"
},
"quarter" : {
"past" : {
"one" : "prije {0} kvartal",
"other" : "prije {0} kvartala"
},
"current" : "ovaj kvartal",
"future" : {
"one" : "za {0} kvartal",
"other" : "za {0} kvartala"
},
"previous" : "prošli kvartal",
"next" : "sljedeći kvartal"
},
"hour" : {
"past" : {
"one" : "prije {0} sat",
"few" : "prije {0} sata",
"other" : "prije {0} sati"
},
"future" : {
"other" : "za {0} sati",
"few" : "za {0} sata",
"one" : "za {0} sat"
},
"current" : "ovaj sat"
},
"minute" : {
"current" : "ova minuta",
"future" : {
"few" : "za {0} minute",
"other" : "za {0} minuta",
"one" : "za {0} minutu"
},
"past" : {
"few" : "prije {0} minute",
"other" : "prije {0} minuta",
"one" : "prije {0} minutu"
}
}
}
}

View File

@@ -0,0 +1,237 @@
{
"narrow" : {
"week" : {
"next" : "přichodny tydźeń",
"past" : "před {0} tydź.",
"future" : "za {0} tydź.",
"previous" : "zašły tydźeń",
"current" : "tutón tydźeń"
},
"quarter" : {
"next" : "next quarter",
"past" : "před {0} kw.",
"previous" : "last quarter",
"current" : "this quarter",
"future" : "za {0} kw."
},
"minute" : {
"past" : "před {0} m",
"future" : "za {0} m",
"current" : "this minute"
},
"day" : {
"previous" : "wčera",
"next" : "jutře",
"current" : "dźensa",
"future" : "za {0} d",
"past" : "před {0} d"
},
"year" : {
"current" : "lětsa",
"previous" : "loni",
"next" : "klětu",
"past" : "před {0} l.",
"future" : "za {0} l."
},
"second" : {
"future" : "za {0} s",
"current" : "now",
"past" : "před {0} s"
},
"month" : {
"past" : "před {0} měs.",
"future" : "za {0} měs.",
"next" : "přichodny měsac",
"current" : "tutón měsac",
"previous" : "zašły měsac"
},
"now" : "now",
"hour" : {
"future" : "za {0} h",
"current" : "this hour",
"past" : "před {0} h"
}
},
"short" : {
"year" : {
"next" : "klětu",
"future" : "za {0} l.",
"current" : "lětsa",
"past" : "před {0} l.",
"previous" : "loni"
},
"quarter" : {
"future" : "za {0} kwart.",
"next" : "next quarter",
"previous" : "last quarter",
"current" : "this quarter",
"past" : "před {0} kwart."
},
"second" : {
"current" : "now",
"past" : "před {0} sek.",
"future" : "za {0} sek."
},
"minute" : {
"past" : "před {0} min.",
"future" : "za {0} min.",
"current" : "this minute"
},
"day" : {
"past" : "před {0} dnj.",
"next" : "jutře",
"future" : {
"one" : "za {0} dźeń",
"few" : "za {0} dny",
"other" : "za {0} dnj."
},
"previous" : "wčera",
"current" : "dźensa"
},
"month" : {
"previous" : "zašły měsac",
"next" : "přichodny měsac",
"past" : "před {0} měs.",
"current" : "tutón měsac",
"future" : "za {0} měs."
},
"hour" : {
"current" : "this hour",
"past" : "před {0} hodź.",
"future" : "za {0} hodź."
},
"now" : "now",
"week" : {
"previous" : "zašły tydźeń",
"current" : "tutón tydźeń",
"next" : "přichodny tydźeń",
"past" : "před {0} tydź.",
"future" : "za {0} tydź."
}
},
"long" : {
"quarter" : {
"previous" : "last quarter",
"current" : "this quarter",
"next" : "next quarter",
"past" : {
"two" : "před {0} kwartalomaj",
"one" : "před {0} kwartalom",
"other" : "před {0} kwartalemi"
},
"future" : {
"one" : "za {0} kwartal",
"few" : "za {0} kwartale",
"other" : "za {0} kwartalow",
"two" : "za {0} kwartalej"
}
},
"hour" : {
"future" : {
"two" : "za {0} hodźinje",
"few" : "za {0} hodźiny",
"one" : "za {0} hodźinu",
"other" : "za {0} hodźin"
},
"current" : "this hour",
"past" : {
"two" : "před {0} hodźinomaj",
"other" : "před {0} hodźinami",
"one" : "před {0} hodźinu"
}
},
"day" : {
"previous" : "wčera",
"current" : "dźensa",
"next" : "jutře",
"past" : {
"one" : "před {0} dnjom",
"two" : "před {0} dnjomaj",
"other" : "před {0} dnjemi"
},
"future" : {
"one" : "za {0} dźeń",
"two" : "za {0} dnjej",
"other" : "za {0} dnjow",
"few" : "za {0} dny"
}
},
"month" : {
"next" : "přichodny měsac",
"previous" : "zašły měsac",
"current" : "tutón měsac",
"future" : {
"one" : "za {0} měsac",
"other" : "za {0} měsacow",
"two" : "za {0} měsacaj",
"few" : "za {0} měsacy"
},
"past" : {
"one" : "před {0} měsacom",
"two" : "před {0} měsacomaj",
"other" : "před {0} měsacami"
}
},
"second" : {
"future" : {
"other" : "za {0} sekundow",
"two" : "za {0} sekundźe",
"one" : "za {0} sekundu",
"few" : "za {0} sekundy"
},
"current" : "now",
"past" : {
"other" : "před {0} sekundami",
"one" : "před {0} sekundu",
"two" : "před {0} sekundomaj"
}
},
"now" : "now",
"week" : {
"current" : "tutón tydźeń",
"previous" : "zašły tydźeń",
"next" : "přichodny tydźeń",
"past" : {
"two" : "před {0} tydźenjomaj",
"one" : "před {0} tydźenjom",
"other" : "před {0} tydźenjemi"
},
"future" : {
"two" : "za {0} tydźenjej",
"one" : "za {0} tydźeń",
"few" : "za {0} tydźenje",
"other" : "za {0} tydźenjow"
}
},
"minute" : {
"past" : {
"other" : "před {0} minutami",
"one" : "před {0} minutu",
"two" : "před {0} minutomaj"
},
"future" : {
"one" : "za {0} minutu",
"few" : "za {0} minuty",
"two" : "za {0} minuće",
"other" : "za {0} minutow"
},
"current" : "this minute"
},
"year" : {
"next" : "klětu",
"previous" : "loni",
"past" : {
"one" : "před {0} lětom",
"two" : "před {0} lětomaj",
"other" : "před {0} lětami"
},
"current" : "lětsa",
"future" : {
"other" : "za {0} lět",
"two" : "za {0} lěće",
"few" : "za {0} lěta",
"one" : "za {0} lěto"
}
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "holnap",
"future" : "{0} nap múlva",
"previous" : "tegnap",
"current" : "ma",
"past" : "{0} napja"
},
"quarter" : {
"next" : "következő negyedév",
"past" : "{0} negyedévvel ezelőtt",
"future" : "{0} n.év múlva",
"previous" : "előző negyedév",
"current" : "ez a negyedév"
},
"hour" : {
"future" : "{0} óra múlva",
"current" : "ebben az órában",
"past" : "{0} órával ezelőtt"
},
"year" : {
"next" : "következő év",
"past" : "{0} évvel ezelőtt",
"current" : "ez az év",
"previous" : "előző év",
"future" : "{0} év múlva"
},
"now" : "most",
"month" : {
"current" : "ez a hónap",
"future" : "{0} hónap múlva",
"past" : "{0} hónappal ezelőtt",
"next" : "következő hónap",
"previous" : "előző hónap"
},
"week" : {
"previous" : "előző hét",
"current" : "ez a hét",
"past" : "{0} héttel ezelőtt",
"future" : "{0} hét múlva",
"next" : "következő hét"
},
"minute" : {
"future" : "{0} perc múlva",
"current" : "ebben a percben",
"past" : "{0} perccel ezelőtt"
},
"second" : {
"current" : "most",
"past" : "{0} másodperccel ezelőtt",
"future" : "{0} másodperc múlva"
}
},
"long" : {
"day" : {
"previous" : "tegnap",
"current" : "ma",
"next" : "holnap",
"past" : "{0} nappal ezelőtt",
"future" : "{0} nap múlva"
},
"week" : {
"current" : "ez a hét",
"future" : "{0} hét múlva",
"past" : "{0} héttel ezelőtt",
"previous" : "előző hét",
"next" : "következő hét"
},
"minute" : {
"current" : "ebben a percben",
"past" : "{0} perccel ezelőtt",
"future" : "{0} perc múlva"
},
"month" : {
"future" : "{0} hónap múlva",
"next" : "következő hónap",
"previous" : "előző hónap",
"current" : "ez a hónap",
"past" : "{0} hónappal ezelőtt"
},
"hour" : {
"current" : "ebben az órában",
"past" : "{0} órával ezelőtt",
"future" : "{0} óra múlva"
},
"year" : {
"past" : "{0} évvel ezelőtt",
"future" : "{0} év múlva",
"previous" : "előző év",
"next" : "következő év",
"current" : "ez az év"
},
"second" : {
"past" : "{0} másodperccel ezelőtt",
"future" : "{0} másodperc múlva",
"current" : "most"
},
"now" : "most",
"quarter" : {
"past" : "{0} negyedévvel ezelőtt",
"current" : "ez a negyedév",
"previous" : "előző negyedév",
"future" : "{0} negyedév múlva",
"next" : "következő negyedév"
}
},
"short" : {
"quarter" : {
"future" : "{0} negyedév múlva",
"next" : "következő negyedév",
"previous" : "előző negyedév",
"current" : "ez a negyedév",
"past" : "{0} negyedévvel ezelőtt"
},
"minute" : {
"future" : "{0} perc múlva",
"current" : "ebben a percben",
"past" : "{0} perccel ezelőtt"
},
"year" : {
"next" : "következő év",
"future" : "{0} év múlva",
"current" : "ez az év",
"past" : "{0} évvel ezelőtt",
"previous" : "előző év"
},
"second" : {
"future" : "{0} másodperc múlva",
"current" : "most",
"past" : "{0} másodperccel ezelőtt"
},
"hour" : {
"past" : "{0} órával ezelőtt",
"current" : "ebben az órában",
"future" : "{0} óra múlva"
},
"now" : "most",
"month" : {
"previous" : "előző hónap",
"next" : "következő hónap",
"past" : "{0} hónappal ezelőtt",
"current" : "ez a hónap",
"future" : "{0} hónap múlva"
},
"week" : {
"previous" : "előző hét",
"current" : "ez a hét",
"next" : "következő hét",
"past" : "{0} héttel ezelőtt",
"future" : "{0} hét múlva"
},
"day" : {
"next" : "holnap",
"past" : "{0} napja",
"future" : "{0} nap múlva",
"previous" : "tegnap",
"current" : "ma"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "վաղը",
"future" : "{0} օրից",
"previous" : "երեկ",
"current" : "այսօր",
"past" : "{0} օր առաջ"
},
"quarter" : {
"next" : "հաջորդ եռամսյակ",
"past" : "{0} եռմս առաջ",
"future" : "{0} եռմս-ից",
"previous" : "նախորդ եռամսյակ",
"current" : "այս եռամսյակ"
},
"hour" : {
"past" : "{0} ժ առաջ",
"current" : "այս ժամին",
"future" : "{0} ժ-ից"
},
"year" : {
"next" : "հաջորդ տարի",
"past" : "{0} տ առաջ",
"current" : "այս տարի",
"previous" : "նախորդ տարի",
"future" : "{0} տարուց"
},
"now" : "հիմա",
"month" : {
"current" : "այս ամիս",
"future" : "{0} ամսից",
"past" : "{0} ամիս առաջ",
"next" : "հաջորդ ամիս",
"previous" : "անցյալ ամիս"
},
"week" : {
"previous" : "նախորդ շաբաթ",
"current" : "այս շաբաթ",
"past" : "{0} շաբ առաջ",
"future" : "{0} շաբ անց",
"next" : "հաջորդ շաբաթ"
},
"minute" : {
"current" : "այս րոպեին",
"future" : "{0} ր-ից",
"past" : "{0} ր առաջ"
},
"second" : {
"current" : "հիմա",
"past" : "{0} վ առաջ",
"future" : "{0} վ-ից"
}
},
"long" : {
"day" : {
"previous" : "երեկ",
"current" : "այսօր",
"next" : "վաղը",
"past" : "{0} օր առաջ",
"future" : "{0} օրից"
},
"week" : {
"current" : "այս շաբաթ",
"future" : "{0} շաբաթից",
"past" : "{0} շաբաթ առաջ",
"previous" : "նախորդ շաբաթ",
"next" : "հաջորդ շաբաթ"
},
"minute" : {
"current" : "այս րոպեին",
"past" : "{0} րոպե առաջ",
"future" : "{0} րոպեից"
},
"month" : {
"future" : "{0} ամսից",
"next" : "հաջորդ ամիս",
"previous" : "նախորդ ամիս",
"current" : "այս ամիս",
"past" : "{0} ամիս առաջ"
},
"hour" : {
"past" : "{0} ժամ առաջ",
"current" : "այս ժամին",
"future" : "{0} ժամից"
},
"year" : {
"past" : "{0} տարի առաջ",
"future" : "{0} տարուց",
"previous" : "նախորդ տարի",
"next" : "հաջորդ տարի",
"current" : "այս տարի"
},
"second" : {
"future" : "{0} վայրկյանից",
"current" : "հիմա",
"past" : "{0} վայրկյան առաջ"
},
"now" : "հիմա",
"quarter" : {
"past" : "{0} եռամսյակ առաջ",
"current" : "այս եռամսյակ",
"previous" : "նախորդ եռամսյակ",
"future" : "{0} եռամսյակից",
"next" : "հաջորդ եռամսյակ"
}
},
"short" : {
"quarter" : {
"future" : "{0} եռմս-ից",
"next" : "հաջորդ եռամսյակ",
"previous" : "նախորդ եռամսյակ",
"current" : "այս եռամսյակ",
"past" : "{0} եռմս առաջ"
},
"minute" : {
"past" : "{0} ր առաջ",
"current" : "այս րոպեին",
"future" : "{0} ր-ից"
},
"year" : {
"next" : "հաջորդ տարի",
"future" : "{0} տարուց",
"current" : "այս տարի",
"past" : "{0} տ առաջ",
"previous" : "նախորդ տարի"
},
"second" : {
"current" : "հիմա",
"past" : "{0} վրկ առաջ",
"future" : "{0} վրկ-ից"
},
"hour" : {
"current" : "այս ժամին",
"past" : "{0} ժ առաջ",
"future" : "{0} ժ-ից"
},
"now" : "հիմա",
"month" : {
"previous" : "անցյալ ամիս",
"next" : "հաջորդ ամիս",
"past" : "{0} ամիս առաջ",
"current" : "այս ամիս",
"future" : "{0} ամսից"
},
"week" : {
"previous" : "նախորդ շաբաթ",
"current" : "այս շաբաթ",
"next" : "հաջորդ շաբաթ",
"past" : "{0} շաբ առաջ",
"future" : "{0} շաբ-ից"
},
"day" : {
"next" : "վաղը",
"past" : "{0} օր առաջ",
"future" : "{0} օրից",
"previous" : "երեկ",
"current" : "այսօր"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "besok",
"future" : "dalam {0} h",
"previous" : "kemarin",
"current" : "hari ini",
"past" : "{0} h lalu"
},
"quarter" : {
"next" : "kuartal berikutnya",
"past" : "{0} krtl. lalu",
"future" : "dlm {0} krtl.",
"previous" : "Kuartal lalu",
"current" : "kuartal ini"
},
"hour" : {
"future" : "dalam {0} jam",
"current" : "jam ini",
"past" : "{0} jam lalu"
},
"year" : {
"next" : "tahun depan",
"past" : "{0} thn lalu",
"current" : "tahun ini",
"previous" : "tahun lalu",
"future" : "dlm {0} thn"
},
"now" : "sekarang",
"month" : {
"current" : "bulan ini",
"future" : "dlm {0} bln",
"past" : "{0} bln lalu",
"next" : "bulan berikutnya",
"previous" : "bulan lalu"
},
"week" : {
"previous" : "minggu lalu",
"current" : "minggu ini",
"past" : "{0} mgg lalu",
"future" : "dlm {0} mgg",
"next" : "minggu depan"
},
"minute" : {
"future" : "dlm {0} mnt",
"current" : "menit ini",
"past" : "{0} mnt lalu"
},
"second" : {
"current" : "sekarang",
"future" : "dlm {0} dtk",
"past" : "{0} dtk lalu"
}
},
"long" : {
"day" : {
"previous" : "kemarin",
"current" : "hari ini",
"next" : "besok",
"past" : "{0} hari yang lalu",
"future" : "dalam {0} hari"
},
"week" : {
"current" : "minggu ini",
"future" : "dalam {0} minggu",
"past" : "{0} minggu yang lalu",
"previous" : "minggu lalu",
"next" : "minggu depan"
},
"minute" : {
"past" : "{0} menit yang lalu",
"current" : "menit ini",
"future" : "dalam {0} menit"
},
"month" : {
"future" : "dalam {0} bulan",
"next" : "bulan berikutnya",
"previous" : "bulan lalu",
"current" : "bulan ini",
"past" : "{0} bulan yang lalu"
},
"hour" : {
"past" : "{0} jam yang lalu",
"future" : "dalam {0} jam",
"current" : "jam ini"
},
"year" : {
"past" : "{0} tahun yang lalu",
"future" : "dalam {0} tahun",
"previous" : "tahun lalu",
"next" : "tahun depan",
"current" : "tahun ini"
},
"second" : {
"past" : "{0} detik yang lalu",
"current" : "sekarang",
"future" : "dalam {0} detik"
},
"now" : "sekarang",
"quarter" : {
"past" : "{0} kuartal yang lalu",
"current" : "kuartal ini",
"previous" : "Kuartal lalu",
"future" : "dalam {0} kuartal",
"next" : "kuartal berikutnya"
}
},
"short" : {
"quarter" : {
"future" : "dlm {0} krtl.",
"next" : "kuartal berikutnya",
"previous" : "Kuartal lalu",
"current" : "kuartal ini",
"past" : "{0} krtl. lalu"
},
"minute" : {
"past" : "{0} mnt lalu",
"current" : "menit ini",
"future" : "dlm {0} mnt"
},
"year" : {
"next" : "tahun depan",
"future" : "dlm {0} thn",
"current" : "tahun ini",
"past" : "{0} thn lalu",
"previous" : "tahun lalu"
},
"second" : {
"current" : "sekarang",
"past" : "{0} dtk lalu",
"future" : "dlm {0} dtk"
},
"hour" : {
"current" : "jam ini",
"past" : "{0} jam lalu",
"future" : "dalam {0} jam"
},
"now" : "sekarang",
"month" : {
"previous" : "bulan lalu",
"next" : "bulan berikutnya",
"past" : "{0} bln lalu",
"current" : "bulan ini",
"future" : "dlm {0} bln"
},
"week" : {
"previous" : "minggu lalu",
"current" : "minggu ini",
"next" : "minggu depan",
"past" : "{0} mgg lalu",
"future" : "dlm {0} mgg"
},
"day" : {
"next" : "besok",
"past" : "{0} h lalu",
"future" : "dalam {0} h",
"previous" : "kemarin",
"current" : "hari ini"
}
}
}

View File

@@ -0,0 +1,230 @@
{
"short" : {
"now" : "núna",
"month" : {
"future" : "eftir {0} mán.",
"next" : "í næsta mán.",
"current" : "í þessum mán.",
"past" : "fyrir {0} mán.",
"previous" : "í síðasta mán."
},
"second" : {
"past" : "fyrir {0} sek.",
"future" : "eftir {0} sek.",
"current" : "núna"
},
"year" : {
"next" : "á næsta ári",
"current" : "á þessu ári",
"past" : {
"other" : "fyrir {0} árum",
"one" : "fyrir {0} ári"
},
"previous" : "á síðasta ári",
"future" : "eftir {0} ár"
},
"week" : {
"previous" : "í síðustu viku",
"current" : "í þessari viku",
"past" : {
"other" : "fyrir {0} vikum",
"one" : "fyrir {0} viku"
},
"future" : "eftir {0} vikur",
"next" : "í næstu viku"
},
"day" : {
"previous" : "í gær",
"current" : "í dag",
"past" : {
"one" : "fyrir {0} degi",
"other" : "fyrir {0} dögum"
},
"next" : "á morgun",
"future" : {
"one" : "eftir {0} dag",
"other" : "eftir {0} daga"
}
},
"hour" : {
"past" : "fyrir {0} klst.",
"future" : "eftir {0} klst.",
"current" : "þessa stundina"
},
"quarter" : {
"next" : "næsti ársfj.",
"previous" : "síðasti ársfj.",
"past" : "fyrir {0} ársfj.",
"future" : "eftir {0} ársfj.",
"current" : "þessi ársfj."
},
"minute" : {
"future" : "eftir {0} mín.",
"current" : "á þessari mínútu",
"past" : "fyrir {0} mín."
}
},
"long" : {
"minute" : {
"past" : {
"one" : "fyrir {0} mínútu",
"other" : "fyrir {0} mínútum"
},
"future" : {
"one" : "eftir {0} mínútu",
"other" : "eftir {0} mínútur"
},
"current" : "á þessari mínútu"
},
"year" : {
"future" : "eftir {0} ár",
"current" : "á þessu ári",
"previous" : "á síðasta ári",
"next" : "á næsta ári",
"past" : {
"one" : "fyrir {0} ári",
"other" : "fyrir {0} árum"
}
},
"quarter" : {
"past" : {
"one" : "fyrir {0} ársfjórðungi",
"other" : "fyrir {0} ársfjórðungum"
},
"next" : "næsti ársfjórðungur",
"previous" : "síðasti ársfjórðungur",
"future" : {
"one" : "eftir {0} ársfjórðung",
"other" : "eftir {0} ársfjórðunga"
},
"current" : "þessi ársfjórðungur"
},
"week" : {
"future" : {
"one" : "eftir {0} viku",
"other" : "eftir {0} vikur"
},
"past" : {
"other" : "fyrir {0} vikum",
"one" : "fyrir {0} viku"
},
"previous" : "í síðustu viku",
"current" : "í þessari viku",
"next" : "í næstu viku"
},
"hour" : {
"past" : {
"one" : "fyrir {0} klukkustund",
"other" : "fyrir {0} klukkustundum"
},
"future" : {
"other" : "eftir {0} klukkustundir",
"one" : "eftir {0} klukkustund"
},
"current" : "þessa stundina"
},
"month" : {
"previous" : "í síðasta mánuði",
"next" : "í næsta mánuði",
"future" : {
"one" : "eftir {0} mánuð",
"other" : "eftir {0} mánuði"
},
"past" : {
"one" : "fyrir {0} mánuði",
"other" : "fyrir {0} mánuðum"
},
"current" : "í þessum mánuði"
},
"second" : {
"current" : "núna",
"past" : {
"one" : "fyrir {0} sekúndu",
"other" : "fyrir {0} sekúndum"
},
"future" : {
"other" : "eftir {0} sekúndur",
"one" : "eftir {0} sekúndu"
}
},
"now" : "núna",
"day" : {
"next" : "á morgun",
"future" : {
"other" : "eftir {0} daga",
"one" : "eftir {0} dag"
},
"previous" : "í gær",
"current" : "í dag",
"past" : {
"one" : "fyrir {0} degi",
"other" : "fyrir {0} dögum"
}
}
},
"narrow" : {
"day" : {
"previous" : "í gær",
"future" : {
"other" : "+{0} daga",
"one" : "+{0} dag"
},
"past" : {
"one" : "-{0} degi",
"other" : "-{0} dögum"
},
"current" : "í dag",
"next" : "á morgun"
},
"week" : {
"past" : {
"other" : "-{0} vikur",
"one" : "-{0} viku"
},
"future" : {
"one" : "+{0} viku",
"other" : "+{0} vikur"
},
"current" : "í þessari viku",
"previous" : "í síðustu viku",
"next" : "í næstu viku"
},
"quarter" : {
"previous" : "síðasti ársfj.",
"future" : "eftir {0} ársfj.",
"next" : "næsti ársfj.",
"past" : "fyrir {0} ársfj.",
"current" : "þessi ársfj."
},
"month" : {
"future" : "eftir {0} mán.",
"current" : "í þessum mán.",
"previous" : "í síðasta mán.",
"past" : "fyrir {0} mán.",
"next" : "í næsta mán."
},
"hour" : {
"past" : "-{0} klst.",
"future" : "+{0} klst.",
"current" : "þessa stundina"
},
"year" : {
"past" : "fyrir {0} árum",
"previous" : "á síðasta ári",
"next" : "á næsta ári",
"future" : "eftir {0} ár",
"current" : "á þessu ári"
},
"now" : "núna",
"minute" : {
"past" : "-{0} mín.",
"future" : "+{0} mín.",
"current" : "á þessari mínútu"
},
"second" : {
"current" : "núna",
"past" : "-{0} sek.",
"future" : "+{0} sek."
}
}
}

View File

@@ -0,0 +1,251 @@
{
"long" : {
"day" : {
"current" : "oggi",
"next" : "domani",
"past" : {
"one" : "{0} giorno fa",
"other" : "{0} giorni fa"
},
"future" : {
"one" : "tra {0} giorno",
"other" : "tra {0} giorni"
},
"previous" : "ieri"
},
"minute" : {
"future" : {
"one" : "tra {0} minuto",
"other" : "tra {0} minuti"
},
"current" : "questo minuto",
"past" : {
"other" : "{0} minuti fa",
"one" : "{0} minuto fa"
}
},
"second" : {
"future" : {
"one" : "tra {0} secondo",
"other" : "tra {0} secondi"
},
"current" : "ora",
"past" : {
"one" : "{0} secondo fa",
"other" : "{0} secondi fa"
}
},
"week" : {
"future" : {
"other" : "tra {0} settimane",
"one" : "tra {0} settimana"
},
"previous" : "settimana scorsa",
"current" : "questa settimana",
"next" : "settimana prossima",
"past" : {
"one" : "{0} settimana fa",
"other" : "{0} settimane fa"
}
},
"now" : "ora",
"month" : {
"past" : {
"other" : "{0} mesi fa",
"one" : "{0} mese fa"
},
"current" : "questo mese",
"future" : {
"other" : "tra {0} mesi",
"one" : "tra {0} mese"
},
"previous" : "mese scorso",
"next" : "mese prossimo"
},
"quarter" : {
"future" : {
"other" : "tra {0} trimestri",
"one" : "tra {0} trimestre"
},
"previous" : "trimestre scorso",
"next" : "trimestre prossimo",
"current" : "questo trimestre",
"past" : {
"other" : "{0} trimestri fa",
"one" : "{0} trimestre fa"
}
},
"hour" : {
"past" : {
"other" : "{0} ore fa",
"one" : "{0} ora fa"
},
"current" : "questora",
"future" : {
"one" : "tra {0} ora",
"other" : "tra {0} ore"
}
},
"year" : {
"current" : "questanno",
"next" : "anno prossimo",
"previous" : "anno scorso",
"future" : {
"one" : "tra {0} anno",
"other" : "tra {0} anni"
},
"past" : {
"one" : "{0} anno fa",
"other" : "{0} anni fa"
}
}
},
"narrow" : {
"second" : {
"future" : "tra {0} s",
"current" : "ora",
"past" : "{0}s fa"
},
"month" : {
"past" : {
"other" : "{0} mesi fa",
"one" : "{0} mese fa"
},
"future" : {
"one" : "tra {0} mese",
"other" : "tra {0} mesi"
},
"next" : "mese prossimo",
"current" : "questo mese",
"previous" : "mese scorso"
},
"quarter" : {
"current" : "questo trimestre",
"next" : "trimestre prossimo",
"past" : "{0} trim. fa",
"future" : "tra {0} trim.",
"previous" : "trimestre scorso"
},
"now" : "ora",
"week" : {
"past" : "{0} sett. fa",
"current" : "questa settimana",
"next" : "settimana prossima",
"future" : "tra {0} sett.",
"previous" : "settimana scorsa"
},
"year" : {
"previous" : "anno scorso",
"current" : "questanno",
"past" : {
"one" : "{0} anno fa",
"other" : "{0} anni fa"
},
"future" : {
"one" : "tra {0} anno",
"other" : "tra {0} anni"
},
"next" : "anno prossimo"
},
"day" : {
"current" : "oggi",
"future" : {
"one" : "tra {0}g",
"other" : "tra {0} gg"
},
"past" : {
"other" : "{0} gg fa",
"one" : "{0}g fa"
},
"next" : "domani",
"previous" : "ieri"
},
"hour" : {
"future" : "tra {0} h",
"current" : "questora",
"past" : "{0}h fa"
},
"minute" : {
"future" : "tra {0} min",
"current" : "questo minuto",
"past" : "{0} min fa"
}
},
"short" : {
"month" : {
"next" : "mese prossimo",
"past" : {
"one" : "{0} mese fa",
"other" : "{0} mesi fa"
},
"current" : "questo mese",
"previous" : "mese scorso",
"future" : {
"one" : "tra {0} mese",
"other" : "tra {0} mesi"
}
},
"now" : "ora",
"day" : {
"next" : "domani",
"current" : "oggi",
"previous" : "ieri",
"past" : {
"other" : "{0}gg fa",
"one" : "{0}g fa"
},
"future" : {
"one" : "tra {0} g",
"other" : "tra {0} gg"
}
},
"year" : {
"previous" : "anno scorso",
"current" : "questanno",
"next" : "anno prossimo",
"past" : {
"other" : "{0} anni fa",
"one" : "{0} anno fa"
},
"future" : {
"one" : "tra {0} anno",
"other" : "tra {0} anni"
}
},
"hour" : {
"past" : "{0}h fa",
"future" : "tra {0}h",
"current" : "questora"
},
"minute" : {
"future" : "tra {0} min",
"current" : "questo minuto",
"past" : "{0} min fa"
},
"second" : {
"past" : {
"one" : "{0}s fa",
"other" : "{0} sec. fa"
},
"future" : {
"one" : "tra {0}s",
"other" : "tra {0} sec."
},
"current" : "ora"
},
"quarter" : {
"current" : "questo trimestre",
"future" : "tra {0} trim.",
"previous" : "trimestre scorso",
"next" : "trimestre prossimo",
"past" : "{0} trim. fa"
},
"week" : {
"future" : "tra {0} sett.",
"previous" : "settimana scorsa",
"next" : "settimana prossima",
"past" : "{0} sett. fa",
"current" : "questa settimana"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"long" : {
"hour" : {
"future" : "{0} 時間後",
"past" : "{0} 時間前",
"current" : "1 時間以内"
},
"second" : {
"future" : "{0} 秒後",
"past" : "{0} 秒前",
"current" : "今"
},
"week" : {
"next" : "翌週",
"current" : "今週",
"previous" : "先週",
"future" : "{0} 週間後",
"past" : "{0} 週間前"
},
"minute" : {
"current" : "1 分以内",
"past" : "{0} 分前",
"future" : "{0} 分後"
},
"year" : {
"current" : "今年",
"past" : "{0} 年前",
"future" : "{0} 年後",
"previous" : "昨年",
"next" : "翌年"
},
"quarter" : {
"next" : "翌四半期",
"current" : "今四半期",
"future" : "{0} 四半期後",
"previous" : "前四半期",
"past" : "{0} 四半期前"
},
"month" : {
"previous" : "先月",
"future" : "{0} か月後",
"current" : "今月",
"next" : "翌月",
"past" : "{0} か月前"
},
"day" : {
"next" : "明日",
"past" : "{0} 日前",
"current" : "今日",
"future" : "{0} 日後",
"previous" : "昨日"
},
"now" : "今"
},
"narrow" : {
"week" : {
"current" : "今週",
"next" : "翌週",
"past" : "{0}週間前",
"previous" : "先週",
"future" : "{0}週間後"
},
"minute" : {
"current" : "1 分以内",
"past" : "{0}分前",
"future" : "{0}分後"
},
"month" : {
"current" : "今月",
"previous" : "先月",
"past" : "{0}か月前",
"next" : "翌月",
"future" : "{0}か月後"
},
"now" : "今",
"year" : {
"current" : "今年",
"next" : "翌年",
"past" : "{0}年前",
"future" : "{0}年後",
"previous" : "昨年"
},
"hour" : {
"future" : "{0}時間後",
"current" : "1 時間以内",
"past" : "{0}時間前"
},
"quarter" : {
"previous" : "前四半期",
"current" : "今四半期",
"past" : "{0}四半期前",
"future" : "{0}四半期後",
"next" : "翌四半期"
},
"second" : {
"past" : "{0}秒前",
"current" : "今",
"future" : "{0}秒後"
},
"day" : {
"past" : "{0}日前",
"current" : "今日",
"future" : "{0}日後",
"previous" : "昨日",
"next" : "明日"
}
},
"short" : {
"month" : {
"previous" : "先月",
"current" : "今月",
"next" : "翌月",
"past" : "{0} か月前",
"future" : "{0} か月後"
},
"now" : "今",
"day" : {
"next" : "明日",
"current" : "今日",
"previous" : "昨日",
"past" : "{0} 日前",
"future" : "{0} 日後"
},
"year" : {
"current" : "今年",
"future" : "{0} 年後",
"previous" : "昨年",
"next" : "翌年",
"past" : "{0} 年前"
},
"hour" : {
"current" : "1 時間以内",
"past" : "{0} 時間前",
"future" : "{0} 時間後"
},
"minute" : {
"past" : "{0} 分前",
"future" : "{0} 分後",
"current" : "1 分以内"
},
"second" : {
"current" : "今",
"past" : "{0} 秒前",
"future" : "{0} 秒後"
},
"quarter" : {
"future" : "{0} 四半期後",
"previous" : "前四半期",
"next" : "翌四半期",
"past" : "{0} 四半期前",
"current" : "今四半期"
},
"week" : {
"next" : "翌週",
"past" : "{0} 週間前",
"current" : "今週",
"previous" : "先週",
"future" : "{0} 週間後"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"now" : "now",
"week" : {
"next" : "next week",
"current" : "this week",
"past" : "Ɛ́ gɛ́ mɔ {0} ŋgap-mbi",
"future" : "Nǔu ŋgap-mbi {0}",
"previous" : "last week"
},
"quarter" : {
"previous" : "last quarter",
"next" : "next quarter",
"future" : "+{0} Q",
"current" : "this quarter",
"past" : "-{0} Q"
},
"day" : {
"future" : "Nǔu lɛ́Ꞌ {0}",
"previous" : "yesterday",
"next" : "tomorrow",
"past" : "Ɛ́ gɛ́ mɔ́ lɛ́Ꞌ {0}",
"current" : "lɔꞋɔ"
},
"hour" : {
"current" : "this hour",
"past" : "ɛ́ gɛ mɔ́ {0} háwa",
"future" : "nǔu háwa {0}"
},
"second" : {
"future" : "+{0} s",
"current" : "now",
"past" : "-{0} s"
},
"month" : {
"past" : "ɛ́ gɛ́ mɔ́ pɛsaŋ {0}",
"future" : "Nǔu {0} saŋ",
"current" : "this month",
"previous" : "last month",
"next" : "next month"
},
"minute" : {
"future" : "nǔu {0} minút",
"current" : "this minute",
"past" : "ɛ́ gɛ́ mɔ́ minút {0}"
},
"year" : {
"next" : "next year",
"future" : "Nǔu ŋguꞋ {0}",
"previous" : "last year",
"current" : "this year",
"past" : "Ɛ́gɛ́ mɔ́ ŋguꞋ {0}"
}
},
"long" : {
"day" : {
"future" : "Nǔu lɛ́Ꞌ {0}",
"past" : "Ɛ́ gɛ́ mɔ́ lɛ́Ꞌ {0}",
"current" : "lɔꞋɔ",
"next" : "tomorrow",
"previous" : "yesterday"
},
"second" : {
"past" : "-{0} s",
"current" : "now",
"future" : "+{0} s"
},
"quarter" : {
"current" : "this quarter",
"next" : "next quarter",
"previous" : "last quarter",
"future" : "+{0} Q",
"past" : "-{0} Q"
},
"month" : {
"future" : "Nǔu {0} saŋ",
"previous" : "last month",
"past" : "ɛ́ gɛ́ mɔ́ pɛsaŋ {0}",
"next" : "next month",
"current" : "this month"
},
"week" : {
"future" : "Nǔu ŋgap-mbi {0}",
"past" : "Ɛ́ gɛ́ mɔ {0} ŋgap-mbi",
"current" : "this week",
"previous" : "last week",
"next" : "next week"
},
"hour" : {
"future" : "nǔu háwa {0}",
"current" : "this hour",
"past" : "ɛ́ gɛ mɔ́ {0} háwa"
},
"minute" : {
"future" : "nǔu {0} minút",
"past" : "ɛ́ gɛ́ mɔ́ minút {0}",
"current" : "this minute"
},
"now" : "now",
"year" : {
"future" : "Nǔu ŋguꞋ {0}",
"next" : "next year",
"past" : "Ɛ́gɛ́ mɔ́ ŋguꞋ {0}",
"previous" : "last year",
"current" : "this year"
}
},
"short" : {
"hour" : {
"future" : "nǔu háwa {0}",
"current" : "this hour",
"past" : "ɛ́ gɛ mɔ́ {0} háwa"
},
"now" : "now",
"quarter" : {
"current" : "this quarter",
"future" : "+{0} Q",
"past" : "-{0} Q",
"next" : "next quarter",
"previous" : "last quarter"
},
"day" : {
"current" : "lɔꞋɔ",
"past" : "Ɛ́ gɛ́ mɔ́ lɛ́Ꞌ {0}",
"future" : "Nǔu lɛ́Ꞌ {0}",
"next" : "tomorrow",
"previous" : "yesterday"
},
"week" : {
"current" : "this week",
"past" : "Ɛ́ gɛ́ mɔ {0} ŋgap-mbi",
"future" : "Nǔu ŋgap-mbi {0}",
"next" : "next week",
"previous" : "last week"
},
"minute" : {
"past" : "ɛ́ gɛ́ mɔ́ minút {0}",
"future" : "nǔu {0} minút",
"current" : "this minute"
},
"second" : {
"past" : "-{0} s",
"current" : "now",
"future" : "+{0} s"
},
"month" : {
"current" : "this month",
"future" : "Nǔu {0} saŋ",
"previous" : "last month",
"next" : "next month",
"past" : "ɛ́ gɛ́ mɔ́ pɛsaŋ {0}"
},
"year" : {
"future" : "Nǔu ŋguꞋ {0}",
"previous" : "last year",
"next" : "next year",
"current" : "this year",
"past" : "Ɛ́gɛ́ mɔ́ ŋguꞋ {0}"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"quarter" : {
"current" : "ამ კვარტალში",
"past" : "{0} კვარტ. წინ",
"next" : "შემდეგ კვარტალში",
"future" : "{0} კვარტალში",
"previous" : "გასულ კვარტალში"
},
"day" : {
"next" : "ხვალ",
"previous" : "გუშინ",
"future" : "{0} დღეში",
"past" : "{0} დღის წინ",
"current" : "დღეს"
},
"year" : {
"past" : "{0} წლის წინ",
"previous" : "გასულ წელს",
"future" : "{0} წელში",
"next" : "მომავალ წელს",
"current" : "ამ წელს"
},
"minute" : {
"current" : "ამ წუთში",
"past" : "{0} წთ წინ",
"future" : "{0} წუთში"
},
"now" : "ახლა",
"week" : {
"current" : "ამ კვირაში",
"previous" : "გასულ კვირაში",
"past" : "{0} კვირის წინ",
"next" : "მომავალ კვირაში",
"future" : "{0} კვირაში"
},
"second" : {
"current" : "ახლა",
"future" : "{0} წამში",
"past" : "{0} წმ წინ"
},
"month" : {
"future" : "{0} თვეში",
"current" : "ამ თვეში",
"past" : "{0} თვის წინ",
"previous" : "გასულ თვეს",
"next" : "მომავალ თვეს"
},
"hour" : {
"past" : "{0} სთ წინ",
"future" : "{0} საათში",
"current" : "ამ საათში"
}
},
"long" : {
"year" : {
"next" : "მომავალ წელს",
"previous" : "გასულ წელს",
"past" : "{0} წლის წინ",
"future" : "{0} წელიწადში",
"current" : "ამ წელს"
},
"now" : "ახლა",
"quarter" : {
"next" : "შემდეგ კვარტალში",
"past" : "{0} კვარტალის წინ",
"future" : "{0} კვარტალში",
"current" : "ამ კვარტალში",
"previous" : "გასულ კვარტალში"
},
"month" : {
"past" : "{0} თვის წინ",
"next" : "მომავალ თვეს",
"previous" : "გასულ თვეს",
"future" : "{0} თვეში",
"current" : "ამ თვეში"
},
"second" : {
"current" : "ახლა",
"future" : "{0} წამში",
"past" : "{0} წამის წინ"
},
"week" : {
"past" : "{0} კვირის წინ",
"previous" : "გასულ კვირაში",
"future" : "{0} კვირაში",
"next" : "მომავალ კვირაში",
"current" : "ამ კვირაში"
},
"day" : {
"next" : "ხვალ",
"future" : "{0} დღეში",
"previous" : "გუშინ",
"current" : "დღეს",
"past" : "{0} დღის წინ"
},
"minute" : {
"current" : "ამ წუთში",
"future" : "{0} წუთში",
"past" : "{0} წუთის წინ"
},
"hour" : {
"past" : "{0} საათის წინ",
"future" : "{0} საათში",
"current" : "ამ საათში"
}
},
"short" : {
"minute" : {
"past" : "{0} წთ წინ",
"future" : "{0} წუთში",
"current" : "ამ წუთში"
},
"week" : {
"future" : "{0} კვირაში",
"previous" : "გასულ კვირაში",
"next" : "მომავალ კვირაში",
"current" : "ამ კვირაში",
"past" : "{0} კვ. წინ"
},
"year" : {
"current" : "ამ წელს",
"previous" : "გასულ წელს",
"future" : "{0} წელში",
"past" : "{0} წლის წინ",
"next" : "მომავალ წელს"
},
"month" : {
"next" : "მომავალ თვეს",
"past" : "{0} თვის წინ",
"future" : "{0} თვეში",
"previous" : "გასულ თვეს",
"current" : "ამ თვეში"
},
"quarter" : {
"next" : "შემდეგ კვარტალში",
"past" : "{0} კვარტ. წინ",
"previous" : "გასულ კვარტალში",
"current" : "ამ კვარტალში",
"future" : "{0} კვარტალში"
},
"day" : {
"current" : "დღეს",
"previous" : "გუშინ",
"past" : "{0} დღის წინ",
"next" : "ხვალ",
"future" : "{0} დღეში"
},
"hour" : {
"past" : "{0} სთ წინ",
"future" : "{0} საათში",
"current" : "ამ საათში"
},
"second" : {
"past" : "{0} წმ წინ",
"future" : "{0} წამში",
"current" : "ახლა"
},
"now" : "ახლა"
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "manha",
"future" : "di li {0} dia",
"previous" : "onti",
"current" : "oji",
"past" : "a ten {0} dia"
},
"quarter" : {
"next" : "next quarter",
"past" : "a ten {0} trim.",
"future" : "di li {0} trim.",
"previous" : "last quarter",
"current" : "this quarter"
},
"hour" : {
"current" : "this hour",
"past" : "a ten {0} ora",
"future" : "di li {0} ora"
},
"year" : {
"next" : "prósimu anu",
"past" : "a ten {0} anu",
"current" : "es anu li",
"previous" : "anu pasadu",
"future" : "di li {0} anu"
},
"now" : "now",
"month" : {
"current" : "es mes li",
"future" : "di li {0} mes",
"past" : "a ten {0} mes",
"next" : "prósimu mes",
"previous" : "mes pasadu"
},
"week" : {
"previous" : "simana pasadu",
"current" : "es simana li",
"past" : "a ten {0} sim.",
"future" : "di li {0} sim.",
"next" : "prósimu simana"
},
"minute" : {
"past" : "a ten {0} m",
"future" : "di li {0} m",
"current" : "this minute"
},
"second" : {
"current" : "now",
"past" : "a ten {0} s",
"future" : "di li {0} s"
}
},
"long" : {
"day" : {
"previous" : "onti",
"current" : "oji",
"next" : "manha",
"past" : "a ten {0} dia",
"future" : "di li {0} dia"
},
"week" : {
"current" : "es simana li",
"future" : "di li {0} simana",
"past" : "a ten {0} simana",
"previous" : "simana pasadu",
"next" : "prósimu simana"
},
"minute" : {
"current" : "this minute",
"past" : "a ten {0} minutu",
"future" : "di li {0} minutu"
},
"month" : {
"future" : "di li {0} mes",
"next" : "prósimu mes",
"previous" : "mes pasadu",
"current" : "es mes li",
"past" : "a ten {0} mes"
},
"hour" : {
"current" : "this hour",
"past" : "a ten {0} ora",
"future" : "di li {0} ora"
},
"year" : {
"past" : "a ten {0} anu",
"future" : "di li {0} anu",
"previous" : "anu pasadu",
"next" : "prósimu anu",
"current" : "es anu li"
},
"second" : {
"future" : "di li {0} sigundu",
"current" : "now",
"past" : "a ten {0} sigundu"
},
"now" : "now",
"quarter" : {
"past" : "a ten {0} trimestri",
"current" : "this quarter",
"previous" : "last quarter",
"future" : "di li {0} trimestri",
"next" : "next quarter"
}
},
"short" : {
"quarter" : {
"future" : "di li {0} trim.",
"next" : "next quarter",
"previous" : "last quarter",
"current" : "this quarter",
"past" : "a ten {0} trim."
},
"minute" : {
"past" : "a ten {0} min",
"current" : "this minute",
"future" : "di li {0} min"
},
"year" : {
"next" : "prósimu anu",
"future" : "di li {0} anu",
"current" : "es anu li",
"past" : "a ten {0} anu",
"previous" : "anu pasadu"
},
"second" : {
"future" : "di li {0} sig",
"current" : "now",
"past" : "a ten {0} sig"
},
"hour" : {
"future" : "di li {0} ora",
"current" : "this hour",
"past" : "a ten {0} ora"
},
"now" : "now",
"month" : {
"previous" : "mes pasadu",
"next" : "prósimu mes",
"past" : "a ten {0} mes",
"current" : "es mes li",
"future" : "di li {0} mes"
},
"week" : {
"previous" : "simana pasadu",
"current" : "es simana li",
"next" : "prósimu simana",
"past" : "a ten {0} sim.",
"future" : "di li {0} sim."
},
"day" : {
"next" : "manha",
"past" : "a ten {0} dia",
"future" : "di li {0} dia",
"previous" : "onti",
"current" : "oji"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "ертең",
"future" : "{0} күннен кейін",
"previous" : "кеше",
"current" : "бүгін",
"past" : "{0} күн бұрын"
},
"quarter" : {
"next" : "келесі тоқсан",
"past" : "{0} тқс. бұрын",
"future" : "{0} тқс. кейін",
"previous" : "өткен тоқсан",
"current" : "осы тоқсан"
},
"hour" : {
"current" : "осы сағат",
"past" : "{0} сағ. бұрын",
"future" : "{0} сағ. кейін"
},
"year" : {
"next" : "келесі жыл",
"past" : "{0} ж. бұрын",
"current" : "биылғы жыл",
"previous" : "былтырғы жыл",
"future" : "{0} ж. кейін"
},
"now" : "қазір",
"month" : {
"current" : "осы ай",
"future" : "{0} айдан кейін",
"past" : "{0} ай бұрын",
"next" : "келесі ай",
"previous" : "өткен ай"
},
"week" : {
"previous" : "өткен апта",
"current" : "осы апта",
"past" : "{0} ап. бұрын",
"future" : "{0} ап. кейін",
"next" : "келесі апта"
},
"minute" : {
"past" : "{0} мин. бұрын",
"current" : "осы минут",
"future" : "{0} мин. кейін"
},
"second" : {
"future" : "{0} сек. кейін",
"current" : "қазір",
"past" : "{0} сек. бұрын"
}
},
"long" : {
"day" : {
"previous" : "кеше",
"current" : "бүгін",
"next" : "ертең",
"past" : "{0} күн бұрын",
"future" : "{0} күннен кейін"
},
"week" : {
"current" : "осы апта",
"future" : "{0} аптадан кейін",
"past" : "{0} апта бұрын",
"previous" : "өткен апта",
"next" : "келесі апта"
},
"minute" : {
"current" : "осы минут",
"past" : "{0} минут бұрын",
"future" : "{0} минуттан кейін"
},
"month" : {
"future" : "{0} айдан кейін",
"next" : "келесі ай",
"previous" : "өткен ай",
"current" : "осы ай",
"past" : "{0} ай бұрын"
},
"hour" : {
"current" : "осы сағат",
"past" : "{0} сағат бұрын",
"future" : "{0} сағаттан кейін"
},
"year" : {
"past" : "{0} жыл бұрын",
"future" : "{0} жылдан кейін",
"previous" : "былтырғы жыл",
"next" : "келесі жыл",
"current" : "биылғы жыл"
},
"second" : {
"current" : "қазір",
"past" : "{0} секунд бұрын",
"future" : "{0} секундтан кейін"
},
"now" : "қазір",
"quarter" : {
"past" : "{0} тоқсан бұрын",
"current" : "осы тоқсан",
"previous" : "өткен тоқсан",
"future" : "{0} тоқсаннан кейін",
"next" : "келесі тоқсан"
}
},
"short" : {
"quarter" : {
"future" : "{0} тқс. кейін",
"next" : "келесі тоқсан",
"previous" : "өткен тоқсан",
"current" : "осы тоқсан",
"past" : "{0} тқс. бұрын"
},
"minute" : {
"past" : "{0} мин. бұрын",
"future" : "{0} мин. кейін",
"current" : "осы минут"
},
"year" : {
"next" : "келесі жыл",
"future" : "{0} ж. кейін",
"current" : "биылғы жыл",
"past" : "{0} ж. бұрын",
"previous" : "былтырғы жыл"
},
"second" : {
"current" : "қазір",
"past" : "{0} сек. бұрын",
"future" : "{0} сек. кейін"
},
"hour" : {
"future" : "{0} сағ. кейін",
"current" : "осы сағат",
"past" : "{0} сағ. бұрын"
},
"now" : "қазір",
"month" : {
"previous" : "өткен ай",
"next" : "келесі ай",
"past" : "{0} ай бұрын",
"current" : "осы ай",
"future" : "{0} айдан кейін"
},
"week" : {
"previous" : "өткен апта",
"current" : "осы апта",
"next" : "келесі апта",
"past" : "{0} ап. бұрын",
"future" : "{0} ап. кейін"
},
"day" : {
"next" : "ертең",
"past" : "{0} күн бұрын",
"future" : "{0} күннен кейін",
"previous" : "кеше",
"current" : "бүгін"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"quarter" : {
"past" : "-{0} Q",
"future" : "+{0} Q",
"current" : "this quarter",
"previous" : "last quarter",
"next" : "next quarter"
},
"year" : {
"previous" : "last year",
"next" : "next year",
"future" : "om {0} ukioq",
"current" : "this year",
"past" : "for {0} ukioq siden"
},
"week" : {
"future" : "om {0} sapaatip-akunnera",
"previous" : "last week",
"next" : "next week",
"past" : "for {0} sapaatip-akunnera siden",
"current" : "this week"
},
"day" : {
"current" : "today",
"past" : "for {0} ulloq unnuarlu siden",
"next" : "tomorrow",
"future" : "om {0} ulloq unnuarlu",
"previous" : "yesterday"
},
"hour" : {
"current" : "this hour",
"past" : "for {0} nalunaaquttap-akunnera siden",
"future" : "om {0} nalunaaquttap-akunnera"
},
"minute" : {
"future" : "om {0} minutsi",
"current" : "this minute",
"past" : "for {0} minutsi siden"
},
"month" : {
"next" : "next month",
"current" : "this month",
"past" : "for {0} qaammat siden",
"future" : "om {0} qaammat",
"previous" : "last month"
},
"now" : "now",
"second" : {
"future" : "om {0} sekundi",
"current" : "now",
"past" : "for {0} sekundi siden"
}
},
"short" : {
"minute" : {
"past" : "for {0} minutsi siden",
"future" : "om {0} minutsi",
"current" : "this minute"
},
"week" : {
"current" : "this week",
"past" : "for {0} sapaatip-akunnera siden",
"future" : "om {0} sapaatip-akunnera",
"next" : "next week",
"previous" : "last week"
},
"year" : {
"current" : "this year",
"future" : "om {0} ukioq",
"past" : "for {0} ukioq siden",
"next" : "next year",
"previous" : "last year"
},
"day" : {
"next" : "tomorrow",
"current" : "today",
"previous" : "yesterday",
"past" : "for {0} ulloq unnuarlu siden",
"future" : "om {0} ulloq unnuarlu"
},
"hour" : {
"future" : "om {0} nalunaaquttap-akunnera",
"current" : "this hour",
"past" : "for {0} nalunaaquttap-akunnera siden"
},
"quarter" : {
"current" : "this quarter",
"future" : "+{0} Q",
"previous" : "last quarter",
"next" : "next quarter",
"past" : "-{0} Q"
},
"second" : {
"past" : "for {0} sekundi siden",
"current" : "now",
"future" : "om {0} sekundi"
},
"month" : {
"current" : "this month",
"past" : "for {0} qaammat siden",
"future" : "om {0} qaammat",
"next" : "next month",
"previous" : "last month"
},
"now" : "now"
},
"long" : {
"hour" : {
"future" : "om {0} nalunaaquttap-akunnera",
"current" : "this hour",
"past" : "for {0} nalunaaquttap-akunnera siden"
},
"day" : {
"next" : "tomorrow",
"past" : "for {0} ulloq unnuarlu siden",
"previous" : "yesterday",
"future" : "om {0} ulloq unnuarlu",
"current" : "today"
},
"second" : {
"past" : "for {0} sekundi siden",
"current" : "now",
"future" : "om {0} sekundi"
},
"week" : {
"future" : "om {0} sapaatip-akunnera",
"past" : "for {0} sapaatip-akunnera siden",
"current" : "this week",
"next" : "next week",
"previous" : "last week"
},
"minute" : {
"future" : "om {0} minutsi",
"past" : "for {0} minutsi siden",
"current" : "this minute"
},
"month" : {
"future" : "om {0} qaammat",
"past" : "for {0} qaammat siden",
"current" : "this month",
"previous" : "last month",
"next" : "next month"
},
"now" : "now",
"year" : {
"current" : "this year",
"next" : "next year",
"previous" : "last year",
"future" : "om {0} ukioq",
"past" : "for {0} ukioq siden"
},
"quarter" : {
"future" : "+{0} Q",
"previous" : "last quarter",
"past" : "-{0} Q",
"next" : "next quarter",
"current" : "this quarter"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "ថ្ងៃស្អែក",
"future" : "{0} ថ្ងៃទៀត",
"previous" : "ម្សិលមិញ",
"current" : "ថ្ងៃ​នេះ",
"past" : "{0} ថ្ងៃ​​មុន"
},
"quarter" : {
"next" : "ត្រីមាស​ក្រោយ",
"past" : "{0} ត្រីមាស​មុន",
"future" : "{0} ត្រីមាសទៀត",
"previous" : "ត្រីមាស​មុន",
"current" : "ត្រីមាស​នេះ"
},
"hour" : {
"current" : "ម៉ោងនេះ",
"future" : "{0} ម៉ោងទៀត",
"past" : "{0} ម៉ោង​មុន"
},
"year" : {
"next" : "ឆ្នាំ​ក្រោយ",
"past" : "{0} ឆ្នាំ​មុន",
"current" : "ឆ្នាំ​នេះ",
"previous" : "ឆ្នាំ​មុន",
"future" : "{0} ឆ្នាំទៀត"
},
"now" : "ឥឡូវ",
"month" : {
"current" : "ខែ​នេះ",
"future" : "{0} ខែទៀត",
"past" : "{0} ខែមុន",
"next" : "ខែ​ក្រោយ",
"previous" : "ខែ​មុន"
},
"week" : {
"previous" : "សប្ដាហ៍​មុន",
"current" : "សប្ដាហ៍​នេះ",
"past" : "{0} សប្ដាហ៍​មុន",
"future" : "{0} សប្ដាហ៍ទៀត",
"next" : "សប្ដាហ៍​ក្រោយ"
},
"minute" : {
"past" : "{0} នាទី​​មុន",
"future" : "{0} នាទីទៀត",
"current" : "នាទីនេះ"
},
"second" : {
"current" : "ឥឡូវ",
"past" : "{0} វិនាទី​មុន",
"future" : "{0} វិនាទីទៀត"
}
},
"long" : {
"day" : {
"previous" : "ម្សិលមិញ",
"current" : "ថ្ងៃ​នេះ",
"next" : "ថ្ងៃ​ស្អែក",
"past" : "{0} ថ្ងៃ​មុន",
"future" : "{0} ថ្ងៃទៀត"
},
"week" : {
"current" : "សប្ដាហ៍​នេះ",
"future" : "{0} សប្ដាហ៍ទៀត",
"past" : "{0} សប្ដាហ៍​មុន",
"previous" : "សប្ដាហ៍​មុន",
"next" : "សប្ដាហ៍​ក្រោយ"
},
"minute" : {
"past" : "{0} នាទី​មុន",
"future" : "{0} នាទីទៀត",
"current" : "នាទីនេះ"
},
"month" : {
"future" : "{0} ខែទៀត",
"next" : "ខែ​ក្រោយ",
"previous" : "ខែ​មុន",
"current" : "ខែ​នេះ",
"past" : "{0} ខែមុន"
},
"hour" : {
"future" : "ក្នុង​រយៈ​ពេល {0} ម៉ោង",
"current" : "ម៉ោងនេះ",
"past" : "{0} ម៉ោង​មុន"
},
"year" : {
"past" : "{0} ឆ្នាំ​មុន",
"future" : "{0} ឆ្នាំទៀត",
"previous" : "ឆ្នាំ​មុន",
"next" : "ឆ្នាំ​ក្រោយ",
"current" : "ឆ្នាំ​នេះ"
},
"second" : {
"future" : "{0} វិនាទីទៀត",
"current" : "ឥឡូវ",
"past" : "{0} វិនាទី​មុន"
},
"now" : "ឥឡូវ",
"quarter" : {
"past" : "{0} ត្រីមាស​មុន",
"current" : "ត្រីមាស​នេះ",
"previous" : "ត្រីមាស​មុន",
"future" : "{0} ត្រីមាសទៀត",
"next" : "ត្រីមាស​ក្រោយ"
}
},
"short" : {
"quarter" : {
"future" : "{0} ត្រីមាសទៀត",
"next" : "ត្រីមាស​ក្រោយ",
"previous" : "ត្រីមាស​មុន",
"current" : "ត្រីមាស​នេះ",
"past" : "{0} ត្រីមាស​មុន"
},
"minute" : {
"current" : "នាទីនេះ",
"past" : "{0} នាទី​​មុន",
"future" : "{0} នាទីទៀត"
},
"year" : {
"next" : "ឆ្នាំ​ក្រោយ",
"future" : "{0} ឆ្នាំទៀត",
"current" : "ឆ្នាំ​នេះ",
"past" : "{0} ឆ្នាំ​មុន",
"previous" : "ឆ្នាំ​មុន"
},
"second" : {
"current" : "ឥឡូវ",
"past" : "{0} វិនាទី​មុន",
"future" : "{0} វិនាទីទៀត"
},
"hour" : {
"past" : "{0} ម៉ោង​មុន",
"current" : "ម៉ោងនេះ",
"future" : "{0} ម៉ោងទៀត"
},
"now" : "ឥឡូវ",
"month" : {
"previous" : "ខែ​មុន",
"next" : "ខែ​ក្រោយ",
"past" : "{0} ខែមុន",
"current" : "ខែ​នេះ",
"future" : "{0} ខែទៀត"
},
"week" : {
"previous" : "សប្ដាហ៍​មុន",
"current" : "សប្ដាហ៍​នេះ",
"next" : "សប្ដាហ៍​ក្រោយ",
"past" : "{0} សប្ដាហ៍​មុន",
"future" : "{0} សប្ដាហ៍ទៀត"
},
"day" : {
"next" : "ថ្ងៃស្អែក",
"past" : "{0} ថ្ងៃ​​មុន",
"future" : "{0} ថ្ងៃទៀត",
"previous" : "ម្សិលមិញ",
"current" : "ថ្ងៃ​នេះ"
}
}
}

View File

@@ -0,0 +1,302 @@
{
"narrow" : {
"now" : "ಈಗ",
"minute" : {
"current" : "ಈ ನಿಮಿಷ",
"future" : {
"one" : "{0} ನಿಮಿಷದಲ್ಲಿ",
"other" : "{0} ನಿಮಿಷಗಳಲ್ಲಿ"
},
"past" : {
"other" : "{0} ನಿಮಿಷಗಳ ಹಿಂದೆ",
"one" : "{0} ನಿಮಿಷದ ಹಿಂದೆ"
}
},
"week" : {
"future" : {
"one" : "{0} ವಾರದಲ್ಲಿ",
"other" : "{0} ವಾರಗಳಲ್ಲಿ"
},
"current" : "ಈ ವಾರ",
"previous" : "ಕಳೆದ ವಾರ",
"next" : "ಮುಂದಿನ ವಾರ",
"past" : {
"one" : "{0} ವಾರದ ಹಿಂದೆ",
"other" : "{0} ವಾರಗಳ ಹಿಂದೆ"
}
},
"hour" : {
"current" : "ಈ ಗಂಟೆ",
"future" : {
"one" : "{0} ಗಂಟೆಯಲ್ಲಿ",
"other" : "{0} ಗಂಟೆಗಳಲ್ಲಿ"
},
"past" : {
"other" : "{0} ಗಂಟೆಗಳ ಹಿಂದೆ",
"one" : "{0} ಗಂಟೆ ಹಿಂದೆ"
}
},
"month" : {
"current" : "ಈ ತಿಂಗಳು",
"future" : {
"other" : "{0} ತಿಂಗಳುಗಳಲ್ಲಿ",
"one" : "{0} ತಿಂಗಳಲ್ಲಿ"
},
"previous" : "ಕಳೆದ ತಿಂಗಳು",
"next" : "ಮುಂದಿನ ತಿಂಗಳು",
"past" : {
"one" : "{0} ತಿಂಗಳ ಹಿಂದೆ",
"other" : "{0} ತಿಂಗಳುಗಳ ಹಿಂದೆ"
}
},
"second" : {
"future" : {
"one" : "{0} ಸೆಕೆಂಡ್‌ನಲ್ಲಿ",
"other" : "{0} ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ"
},
"past" : {
"other" : "{0} ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ",
"one" : "{0} ಸೆಕೆಂಡ್ ಹಿಂದೆ"
},
"current" : "ಈಗ"
},
"year" : {
"past" : {
"one" : "{0} ವರ್ಷದ ಹಿಂದೆ",
"other" : "{0} ವರ್ಷಗಳ ಹಿಂದೆ"
},
"future" : {
"other" : "{0} ವರ್ಷಗಳಲ್ಲಿ",
"one" : "{0} ವರ್ಷದಲ್ಲಿ"
},
"current" : "ಈ ವರ್ಷ",
"next" : "ಮುಂದಿನ ವರ್ಷ",
"previous" : "ಕಳೆದ ವರ್ಷ"
},
"day" : {
"next" : "ನಾಳೆ",
"future" : {
"one" : "{0} ದಿನದಲ್ಲಿ",
"other" : "{0} ದಿನಗಳಲ್ಲಿ"
},
"past" : {
"one" : "{0} ದಿನದ ಹಿಂದೆ",
"other" : "{0} ದಿನಗಳ ಹಿಂದೆ"
},
"current" : "ಇಂದು",
"previous" : "ನಿನ್ನೆ"
},
"quarter" : {
"future" : "{0} ತ್ರೈಮಾಸಿಕಗಳಲ್ಲಿ",
"current" : "ಈ ತ್ರೈಮಾಸಿಕ",
"next" : "ಮುಂದಿನ ತ್ರೈಮಾಸಿಕ",
"past" : {
"one" : "{0} ತ್ರೈ.ಮಾ. ಹಿಂದೆ",
"other" : "{0} ತ್ರೈಮಾಸಿಕಗಳ ಹಿಂದೆ"
},
"previous" : "ಕಳೆದ ತ್ರೈಮಾಸಿಕ"
}
},
"long" : {
"second" : {
"past" : {
"one" : "{0} ಸೆಕೆಂಡ್ ಹಿಂದೆ",
"other" : "{0} ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ"
},
"future" : {
"one" : "{0} ಸೆಕೆಂಡ್‌ನಲ್ಲಿ",
"other" : "{0} ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ"
},
"current" : "ಈಗ"
},
"year" : {
"future" : {
"other" : "{0} ವರ್ಷಗಳಲ್ಲಿ",
"one" : "{0} ವರ್ಷದಲ್ಲಿ"
},
"past" : {
"one" : "{0} ವರ್ಷದ ಹಿಂದೆ",
"other" : "{0} ವರ್ಷಗಳ ಹಿಂದೆ"
},
"next" : "ಮುಂದಿನ ವರ್ಷ",
"current" : "ಈ ವರ್ಷ",
"previous" : "ಹಿಂದಿನ ವರ್ಷ"
},
"day" : {
"current" : "ಇಂದು",
"next" : "ನಾಳೆ",
"previous" : "ನಿನ್ನೆ",
"past" : {
"one" : "{0} ದಿನದ ಹಿಂದೆ",
"other" : "{0} ದಿನಗಳ ಹಿಂದೆ"
},
"future" : {
"one" : "{0} ದಿನದಲ್ಲಿ",
"other" : "{0} ದಿನಗಳಲ್ಲಿ"
}
},
"minute" : {
"past" : {
"one" : "{0} ನಿಮಿಷದ ಹಿಂದೆ",
"other" : "{0} ನಿಮಿಷಗಳ ಹಿಂದೆ"
},
"future" : {
"one" : "{0} ನಿಮಿಷದಲ್ಲಿ",
"other" : "{0} ನಿಮಿಷಗಳಲ್ಲಿ"
},
"current" : "ಈ ನಿಮಿಷ"
},
"quarter" : {
"next" : "ಮುಂದಿನ ತ್ರೈಮಾಸಿಕ",
"previous" : "ಹಿಂದಿನ ತ್ರೈಮಾಸಿಕ",
"future" : {
"one" : "{0} ತ್ರೈಮಾಸಿಕದಲ್ಲಿ",
"other" : "{0} ತ್ರೈಮಾಸಿಕಗಳಲ್ಲಿ"
},
"past" : {
"other" : "{0} ತ್ರೈಮಾಸಿಕಗಳ ಹಿಂದೆ",
"one" : "{0} ತ್ರೈಮಾಸಿಕದ ಹಿಂದೆ"
},
"current" : "ಈ ತ್ರೈಮಾಸಿಕ"
},
"month" : {
"current" : "ಈ ತಿಂಗಳು",
"next" : "ಮುಂದಿನ ತಿಂಗಳು",
"previous" : "ಕಳೆದ ತಿಂಗಳು",
"past" : {
"other" : "{0} ತಿಂಗಳುಗಳ ಹಿಂದೆ",
"one" : "{0} ತಿಂಗಳ ಹಿಂದೆ"
},
"future" : {
"other" : "{0} ತಿಂಗಳುಗಳಲ್ಲಿ",
"one" : "{0} ತಿಂಗಳಲ್ಲಿ"
}
},
"hour" : {
"current" : "ಈ ಗಂಟೆ",
"past" : {
"other" : "{0} ಗಂಟೆಗಳ ಹಿಂದೆ",
"one" : "{0} ಗಂಟೆ ಹಿಂದೆ"
},
"future" : {
"one" : "{0} ಗಂಟೆಯಲ್ಲಿ",
"other" : "{0} ಗಂಟೆಗಳಲ್ಲಿ"
}
},
"week" : {
"next" : "ಮುಂದಿನ ವಾರ",
"future" : {
"one" : "{0} ವಾರದಲ್ಲಿ",
"other" : "{0} ವಾರಗಳಲ್ಲಿ"
},
"current" : "ಈ ವಾರ",
"previous" : "ಕಳೆದ ವಾರ",
"past" : {
"other" : "{0} ವಾರಗಳ ಹಿಂದೆ",
"one" : "{0} ವಾರದ ಹಿಂದೆ"
}
},
"now" : "ಈಗ"
},
"short" : {
"month" : {
"previous" : "ಕಳೆದ ತಿಂಗಳು",
"current" : "ಈ ತಿಂಗಳು",
"next" : "ಮುಂದಿನ ತಿಂಗಳು",
"past" : {
"one" : "{0} ತಿಂಗಳು ಹಿಂದೆ",
"other" : "{0} ತಿಂಗಳುಗಳ ಹಿಂದೆ"
},
"future" : {
"other" : "{0} ತಿಂಗಳುಗಳಲ್ಲಿ",
"one" : "{0} ತಿಂಗಳಲ್ಲಿ"
}
},
"hour" : {
"current" : "ಈ ಗಂಟೆ",
"past" : {
"other" : "{0} ಗಂಟೆಗಳ ಹಿಂದೆ",
"one" : "{0} ಗಂಟೆ ಹಿಂದೆ"
},
"future" : {
"one" : "{0} ಗಂಟೆಯಲ್ಲಿ",
"other" : "{0} ಗಂಟೆಗಳಲ್ಲಿ"
}
},
"now" : "ಈಗ",
"quarter" : {
"future" : {
"one" : "{0} ತ್ರೈ.ಮಾ.ದಲ್ಲಿ",
"other" : "{0} ತ್ರೈಮಾಸಿಕಗಳಲ್ಲಿ"
},
"previous" : "ಕಳೆದ ತ್ರೈಮಾಸಿಕ",
"current" : "ಈ ತ್ರೈಮಾಸಿಕ",
"next" : "ಮುಂದಿನ ತ್ರೈಮಾಸಿಕ",
"past" : {
"one" : "{0} ತ್ರೈ.ಮಾ. ಹಿಂದೆ",
"other" : "{0} ತ್ರೈಮಾಸಿಕಗಳ ಹಿಂದೆ"
}
},
"week" : {
"previous" : "ಕಳೆದ ವಾರ",
"next" : "ಮುಂದಿನ ವಾರ",
"future" : {
"one" : "{0} ವಾರದಲ್ಲಿ",
"other" : "{0} ವಾರಗಳಲ್ಲಿ"
},
"current" : "ಈ ವಾರ",
"past" : {
"one" : "{0} ವಾರದ ಹಿಂದೆ",
"other" : "{0} ವಾರಗಳ ಹಿಂದೆ"
}
},
"day" : {
"current" : "ಇಂದು",
"previous" : "ನಿನ್ನೆ",
"next" : "ನಾಳೆ",
"past" : {
"other" : "{0} ದಿನಗಳ ಹಿಂದೆ",
"one" : "{0} ದಿನದ ಹಿಂದೆ"
},
"future" : {
"other" : "{0} ದಿನಗಳಲ್ಲಿ",
"one" : "{0} ದಿನದಲ್ಲಿ"
}
},
"minute" : {
"future" : {
"other" : "{0} ನಿಮಿಷಗಳಲ್ಲಿ",
"one" : "{0} ನಿಮಿಷದಲ್ಲಿ"
},
"past" : {
"other" : "{0} ನಿಮಿಷಗಳ ಹಿಂದೆ",
"one" : "{0} ನಿಮಿಷದ ಹಿಂದೆ"
},
"current" : "ಈ ನಿಮಿಷ"
},
"second" : {
"current" : "ಈಗ",
"past" : {
"one" : "{0} ಸೆಕೆಂಡ್ ಹಿಂದೆ",
"other" : "{0} ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ"
},
"future" : {
"one" : "{0} ಸೆಕೆಂಡ್‌ನಲ್ಲಿ",
"other" : "{0} ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ"
}
},
"year" : {
"previous" : "ಕಳೆದ ವರ್ಷ",
"next" : "ಮುಂದಿನ ವರ್ಷ",
"current" : "ಈ ವರ್ಷ",
"future" : {
"other" : "{0} ವರ್ಷಗಳಲ್ಲಿ",
"one" : "{0} ವರ್ಷದಲ್ಲಿ"
},
"past" : {
"one" : "{0} ವರ್ಷದ ಹಿಂದೆ",
"other" : "{0} ವರ್ಷಗಳ ಹಿಂದೆ"
}
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"now" : "지금",
"week" : {
"next" : "다음 주",
"current" : "이번 주",
"past" : "{0}주 전",
"future" : "{0}주 후",
"previous" : "지난주"
},
"quarter" : {
"previous" : "지난 분기",
"next" : "다음 분기",
"future" : "{0}분기 후",
"current" : "이번 분기",
"past" : "{0}분기 전"
},
"day" : {
"future" : "{0}일 후",
"previous" : "어제",
"next" : "내일",
"past" : "{0}일 전",
"current" : "오늘"
},
"hour" : {
"current" : "현재 시간",
"past" : "{0}시간 전",
"future" : "{0}시간 후"
},
"second" : {
"future" : "{0}초 후",
"current" : "지금",
"past" : "{0}초 전"
},
"month" : {
"past" : "{0}개월 전",
"future" : "{0}개월 후",
"current" : "이번 달",
"previous" : "지난달",
"next" : "다음 달"
},
"minute" : {
"future" : "{0}분 후",
"current" : "현재 분",
"past" : "{0}분 전"
},
"year" : {
"next" : "내년",
"future" : "{0}년 후",
"previous" : "작년",
"current" : "올해",
"past" : "{0}년 전"
}
},
"long" : {
"day" : {
"future" : "{0}일 후",
"past" : "{0}일 전",
"current" : "오늘",
"next" : "내일",
"previous" : "어제"
},
"second" : {
"past" : "{0}초 전",
"current" : "지금",
"future" : "{0}초 후"
},
"quarter" : {
"current" : "이번 분기",
"next" : "다음 분기",
"previous" : "지난 분기",
"future" : "{0}분기 후",
"past" : "{0}분기 전"
},
"month" : {
"future" : "{0}개월 후",
"previous" : "지난달",
"past" : "{0}개월 전",
"next" : "다음 달",
"current" : "이번 달"
},
"week" : {
"future" : "{0}주 후",
"past" : "{0}주 전",
"current" : "이번 주",
"previous" : "지난주",
"next" : "다음 주"
},
"hour" : {
"future" : "{0}시간 후",
"current" : "현재 시간",
"past" : "{0}시간 전"
},
"minute" : {
"future" : "{0}분 후",
"past" : "{0}분 전",
"current" : "현재 분"
},
"now" : "지금",
"year" : {
"future" : "{0}년 후",
"next" : "내년",
"past" : "{0}년 전",
"previous" : "작년",
"current" : "올해"
}
},
"short" : {
"hour" : {
"future" : "{0}시간 후",
"current" : "현재 시간",
"past" : "{0}시간 전"
},
"now" : "지금",
"quarter" : {
"current" : "이번 분기",
"future" : "{0}분기 후",
"past" : "{0}분기 전",
"next" : "다음 분기",
"previous" : "지난 분기"
},
"day" : {
"current" : "오늘",
"past" : "{0}일 전",
"future" : "{0}일 후",
"next" : "내일",
"previous" : "어제"
},
"week" : {
"current" : "이번 주",
"past" : "{0}주 전",
"future" : "{0}주 후",
"next" : "다음 주",
"previous" : "지난주"
},
"minute" : {
"past" : "{0}분 전",
"future" : "{0}분 후",
"current" : "현재 분"
},
"second" : {
"past" : "{0}초 전",
"current" : "지금",
"future" : "{0}초 후"
},
"month" : {
"current" : "이번 달",
"future" : "{0}개월 후",
"previous" : "지난달",
"next" : "다음 달",
"past" : "{0}개월 전"
},
"year" : {
"future" : "{0}년 후",
"previous" : "작년",
"next" : "내년",
"current" : "올해",
"past" : "{0}년 전"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"quarter" : {
"past" : "{0} त्रैमासीकां आदीं",
"future" : "{0} त्रैमासीकांत",
"current" : "हो त्रैमासीक",
"previous" : "फाटलो त्रैमासीक",
"next" : "फुडलो त्रैमासीक"
},
"year" : {
"previous" : "फाटलें वर्स",
"next" : "फुडलें वर्स",
"future" : "{0} वर्सांनीं",
"current" : "हें वर्स",
"past" : "{0} वर्स आदीं"
},
"week" : {
"future" : "{0} सप्तकांनीं",
"previous" : "निमाणो सप्तक",
"next" : "फुडलो सप्तक",
"past" : "{0} सप्त. आदीं",
"current" : "हो सप्तक"
},
"day" : {
"current" : "आयज",
"past" : "{0} दीस आदीं",
"next" : "फाल्यां",
"future" : "{0} दिसानीं",
"previous" : "काल"
},
"hour" : {
"current" : "हें वर",
"past" : "{0} वरा आदीं",
"future" : "{0} वरांनीं"
},
"minute" : {
"future" : "{0} मिन्टां",
"current" : "हें मिनीट",
"past" : "{0} मिन्टां आदीं"
},
"month" : {
"next" : "फुडलो म्हयनो",
"current" : "हो म्हयनो",
"past" : "{0} म्हयन्यां आदीं",
"future" : "{0} म्हयन्यानीं",
"previous" : "फाटलो म्हयनो"
},
"now" : "आतां",
"second" : {
"future" : "{0} सेकंदानीं",
"current" : "आतां",
"past" : "{0} से. आदीं"
}
},
"short" : {
"minute" : {
"past" : "{0} मिन्टां आदीं",
"future" : "{0} मिन्टां",
"current" : "हें मिनीट"
},
"week" : {
"current" : "हो सप्तक",
"past" : "{0} सप्तकां आदीं",
"future" : "{0} सप्त.",
"next" : "फुडलो सप्तक",
"previous" : "निमाणो सप्तक"
},
"year" : {
"future" : "{0} वर्सांनीं",
"previous" : "फाटलें वर्स",
"next" : "फुडलें वर्स",
"current" : "हें वर्स",
"past" : "{0} वर्स आदीं"
},
"day" : {
"next" : "फाल्यां",
"current" : "आयज",
"previous" : "काल",
"past" : "{0} दीस आदीं",
"future" : "{0} दिसानीं"
},
"hour" : {
"future" : "{0} वरांनीं",
"current" : "हें वर",
"past" : "{0} वरा आदीं"
},
"quarter" : {
"current" : "हो त्रैमासीक",
"future" : "{0} त्रैमासीकांत",
"previous" : "फाटलो त्रैमासीक",
"next" : "फुडलो त्रैमासीक",
"past" : "{0} त्रैमासीकां आदीं"
},
"second" : {
"past" : "{0} से. आदीं",
"current" : "आतां",
"future" : "{0} सेकंदानीं"
},
"month" : {
"current" : "हो म्हयनो",
"past" : "{0} म्हयन्यां आदीं",
"future" : "{0} म्हयन्यानीं",
"next" : "फुडलो म्हयनो",
"previous" : "फाटलो म्हयनो"
},
"now" : "आतां"
},
"long" : {
"hour" : {
"future" : "{0} वरांनीं",
"current" : "हें वर",
"past" : "{0} वरा आदीं"
},
"day" : {
"next" : "फाल्यां",
"past" : "{0} दीस आदीं",
"previous" : "काल",
"future" : "{0} दिसानीं",
"current" : "आयज"
},
"second" : {
"past" : "{0} सेकंद आदीं",
"current" : "आतां",
"future" : "{0} सेकंदानीं"
},
"week" : {
"future" : "{0} सप्तकांनीं",
"past" : "{0} सप्तकां आदीं",
"current" : "हो सप्तक",
"next" : "फुडलो सप्तक",
"previous" : "निमाणो सप्तक"
},
"minute" : {
"future" : "{0} मिन्टां",
"past" : "{0} मिन्टां आदीं",
"current" : "हें मिनीट"
},
"month" : {
"future" : "{0} म्हयन्यानीं",
"past" : "{0} म्हयन्यां आदीं",
"current" : "हो म्हयनो",
"previous" : "फाटलो म्हयनो",
"next" : "फुडलो म्हयनो"
},
"now" : "आतां",
"year" : {
"current" : "हें वर्स",
"next" : "फुडलें वर्स",
"previous" : "फाटलें वर्स",
"future" : "{0} वर्सांनीं",
"past" : "{0} वर्सां आदीं"
},
"quarter" : {
"future" : "{0} त्रैमासीकांत",
"previous" : "फाटलो त्रैमासीक",
"past" : "{0} त्रैमासीकां आदीं",
"next" : "फुडलो त्रैमासीक",
"current" : "हो त्रैमासीक"
}
}
}

View File

@@ -0,0 +1,185 @@
{
"narrow" : {
"second" : {
"future" : "+{0} s",
"past" : "-{0} s",
"current" : "now"
},
"year" : {
"previous" : "läz Johr",
"next" : "näx Johr",
"future" : {
"zero" : "en keinem Johr",
"other" : "en {0} Johre",
"one" : "en {0} Johr"
},
"current" : "diß Johr",
"past" : {
"other" : "vör {0} Johre",
"zero" : "vör keijnem Johr",
"one" : "vör {0} Johr"
}
},
"month" : {
"past" : "-{0} m",
"next" : "nächste Mohnd",
"future" : "+{0} m",
"previous" : "lätzde Mohnd",
"current" : "diese Mohnd"
},
"minute" : {
"past" : "-{0} min",
"current" : "this minute",
"future" : "+{0} min"
},
"quarter" : {
"previous" : "last quarter",
"current" : "this quarter",
"next" : "next quarter",
"past" : "-{0} Q",
"future" : "+{0} Q"
},
"hour" : {
"future" : "+{0} h",
"past" : "-{0} h",
"current" : "this hour"
},
"now" : "now",
"week" : {
"next" : "nächste Woche",
"previous" : "läz Woch",
"past" : "-{0} w",
"future" : "+{0} w",
"current" : "di Woch"
},
"day" : {
"previous" : "jestere",
"future" : "+{0} d",
"past" : "-{0} d",
"current" : "hück",
"next" : "morje"
}
},
"short" : {
"minute" : {
"current" : "this minute",
"past" : "-{0} min",
"future" : "+{0} min"
},
"week" : {
"current" : "di Woch",
"past" : "-{0} w",
"future" : "+{0} w",
"next" : "nächste Woche",
"previous" : "läz Woch"
},
"year" : {
"future" : {
"one" : "en {0} Johr",
"zero" : "en keinem Johr",
"other" : "en {0} Johre"
},
"previous" : "läz Johr",
"next" : "näx Johr",
"current" : "diß Johr",
"past" : {
"zero" : "vör keijnem Johr",
"other" : "vör {0} Johre",
"one" : "vör {0} Johr"
}
},
"day" : {
"next" : "morje",
"current" : "hück",
"previous" : "jestere",
"past" : "-{0} d",
"future" : "+{0} d"
},
"hour" : {
"past" : "-{0} h",
"current" : "this hour",
"future" : "+{0} h"
},
"quarter" : {
"current" : "this quarter",
"future" : "+{0} Q",
"previous" : "last quarter",
"next" : "next quarter",
"past" : "-{0} Q"
},
"second" : {
"future" : "+{0} s",
"current" : "now",
"past" : "-{0} s"
},
"month" : {
"current" : "diese Mohnd",
"past" : "-{0} m",
"future" : "+{0} m",
"next" : "nächste Mohnd",
"previous" : "lätzde Mohnd"
},
"now" : "now"
},
"long" : {
"minute" : {
"past" : "-{0} min",
"future" : "+{0} min",
"current" : "this minute"
},
"now" : "now",
"week" : {
"previous" : "läz Woch",
"past" : "-{0} w",
"future" : "+{0} w",
"current" : "di Woch",
"next" : "nächste Woche"
},
"quarter" : {
"next" : "next quarter",
"past" : "-{0} Q",
"previous" : "last quarter",
"current" : "this quarter",
"future" : "+{0} Q"
},
"hour" : {
"future" : "+{0} h",
"current" : "this hour",
"past" : "-{0} h"
},
"day" : {
"current" : "hück",
"future" : "+{0} d",
"next" : "morje",
"previous" : "jestere",
"past" : "-{0} d"
},
"month" : {
"next" : "nächste Mohnd",
"past" : "-{0} m",
"future" : "+{0} m",
"previous" : "lätzde Mohnd",
"current" : "diese Mohnd"
},
"second" : {
"current" : "now",
"future" : "+{0} s",
"past" : "-{0} s"
},
"year" : {
"next" : "näx Johr",
"current" : "diß Johr",
"future" : {
"other" : "en {0} Johre",
"zero" : "en keinem Johr",
"one" : "en {0} Johr"
},
"previous" : "läz Johr",
"past" : {
"zero" : "vör keijnem Johr",
"other" : "vör {0} Johre",
"one" : "vör {0} Johr"
}
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"quarter" : {
"next" : "кийинки чейр.",
"past" : "{0} чейр. мурун",
"future" : "{0} чейр. кийин",
"previous" : "акыркы чейр.",
"current" : "бул чейр."
},
"day" : {
"next" : "эртеӊ",
"future" : "{0} күн. кийин",
"previous" : "кечээ",
"current" : "бүгүн",
"past" : "{0} күн мурун"
},
"year" : {
"next" : "эмдиги жылы",
"past" : "{0} жыл мурун",
"current" : "быйыл",
"previous" : "былтыр",
"future" : "{0} жыл. кийин"
},
"week" : {
"previous" : "өткөн апт.",
"current" : "ушул апт.",
"past" : "{0} апт. мурун",
"future" : "{0} апт. кийин",
"next" : "келерки апт."
},
"second" : {
"future" : "{0} сек. кийн",
"current" : "азыр",
"past" : "{0} сек. мурн"
},
"minute" : {
"current" : "ушул мүнөттө",
"past" : "{0} мүн. мурн",
"future" : "{0} мүн. кийн"
},
"hour" : {
"past" : "{0} с. мурн",
"future" : "{0} с. кийн",
"current" : "ушул саатта"
},
"now" : "азыр",
"month" : {
"current" : "бул айда",
"future" : "{0} айд. кийн",
"past" : "{0} ай мурн",
"next" : "эмдиги айда",
"previous" : "өткөн айда"
}
},
"long" : {
"now" : "азыр",
"minute" : {
"current" : "ушул мүнөттө",
"past" : "{0} мүнөт мурун",
"future" : "{0} мүнөттөн кийин"
},
"quarter" : {
"future" : "{0} чейректен кийин",
"current" : "бул чейрек",
"next" : "кийинки чейрек",
"past" : "{0} чейрек мурун",
"previous" : "акыркы чейрек"
},
"week" : {
"past" : "{0} апта мурун",
"future" : "{0} аптадан кийин",
"previous" : "өткөн аптада",
"next" : "келерки аптада",
"current" : "ушул аптада"
},
"day" : {
"next" : "эртеӊ",
"previous" : "кечээ",
"future" : "{0} күндөн кийин",
"current" : "бүгүн",
"past" : "{0} күн мурун"
},
"hour" : {
"future" : "{0} сааттан кийин",
"current" : "ушул саатта",
"past" : "{0} саат мурун"
},
"month" : {
"current" : "бул айда",
"past" : "{0} ай мурун",
"previous" : "өткөн айда",
"future" : "{0} айдан кийин",
"next" : "эмдиги айда"
},
"second" : {
"future" : "{0} секунддан кийин",
"current" : "азыр",
"past" : "{0} секунд мурун"
},
"year" : {
"previous" : "былтыр",
"next" : "эмдиги жылы",
"past" : "{0} жыл мурун",
"current" : "быйыл",
"future" : "{0} жылдан кийин"
}
},
"short" : {
"quarter" : {
"future" : "{0} чейректен кийин",
"next" : "кийинки чейр.",
"previous" : "акыркы чейр.",
"current" : "бул чейр.",
"past" : "{0} чейр. мурун"
},
"minute" : {
"current" : "ушул мүнөттө",
"past" : "{0} мүн. мурун",
"future" : "{0} мүн. кийин"
},
"year" : {
"next" : "эмдиги жылы",
"future" : "{0} жыл. кийин",
"current" : "быйыл",
"past" : "{0} жыл мурун",
"previous" : "былтыр"
},
"second" : {
"future" : "{0} сек. кийин",
"current" : "азыр",
"past" : "{0} сек. мурун"
},
"hour" : {
"current" : "ушул саатта",
"past" : "{0} саат. мурун",
"future" : "{0} саат. кийин"
},
"now" : "азыр",
"month" : {
"previous" : "өткөн айда",
"next" : "эмдиги айда",
"past" : "{0} ай мурун",
"current" : "бул айда",
"future" : "{0} айд. кийин"
},
"week" : {
"previous" : "өткөн апт.",
"current" : "ушул апт.",
"next" : "келерки апт.",
"past" : "{0} апт. мурун",
"future" : "{0} апт. кийин"
},
"day" : {
"next" : "эртеӊ",
"past" : "{0} күн мурун",
"future" : "{0} күн. кийин",
"previous" : "кечээ",
"current" : "бүгүн"
}
}
}

View File

@@ -0,0 +1,257 @@
{
"narrow" : {
"month" : {
"past" : "-{0} M.",
"next" : "nächste Mount",
"previous" : "leschte Mount",
"current" : "dëse Mount",
"future" : "+{0} M."
},
"second" : {
"current" : "now",
"past" : "-{0} Sek.",
"future" : "+{0} Sek."
},
"day" : {
"current" : "haut",
"past" : "-{0} D.",
"previous" : "gëschter",
"next" : "muer",
"future" : "+{0} D."
},
"now" : "now",
"quarter" : {
"previous" : "last quarter",
"next" : "next quarter",
"current" : "this quarter",
"future" : "+{0} Q.",
"past" : "-{0} Q."
},
"week" : {
"current" : "dës Woch",
"future" : "+{0} W.",
"next" : "nächst Woch",
"past" : "-{0} W.",
"previous" : "lescht Woch"
},
"minute" : {
"future" : "+{0} Min.",
"past" : "-{0} Min.",
"current" : "this minute"
},
"hour" : {
"current" : "this hour",
"past" : "-{0} St.",
"future" : "+{0} St."
},
"year" : {
"previous" : "lescht Joer",
"next" : "nächst Joer",
"current" : "dëst Joer",
"future" : "+{0} J.",
"past" : "-{0} J."
}
},
"long" : {
"quarter" : {
"next" : "next quarter",
"current" : "this quarter",
"past" : {
"one" : "virun {0} Quartal",
"other" : "viru(n) {0} Quartaler"
},
"previous" : "last quarter",
"future" : {
"other" : "a(n) {0} Quartaler",
"one" : "an {0} Quartal"
}
},
"hour" : {
"future" : {
"one" : "an {0} Stonn",
"other" : "a(n) {0} Stonnen"
},
"past" : {
"one" : "virun {0} Stonn",
"other" : "viru(n) {0} Stonnen"
},
"current" : "this hour"
},
"month" : {
"next" : "nächste Mount",
"previous" : "leschte Mount",
"current" : "dëse Mount",
"future" : {
"one" : "an {0} Mount",
"other" : "a(n) {0} Méint"
},
"past" : {
"other" : "viru(n) {0} Méint",
"one" : "virun {0} Mount"
}
},
"now" : "now",
"week" : {
"current" : "dës Woch",
"next" : "nächst Woch",
"past" : {
"one" : "virun {0} Woch",
"other" : "viru(n) {0} Wochen"
},
"previous" : "lescht Woch",
"future" : {
"other" : "a(n) {0} Wochen",
"one" : "an {0} Woch"
}
},
"minute" : {
"current" : "this minute",
"future" : {
"one" : "an {0} Minutt",
"other" : "a(n) {0} Minutten"
},
"past" : {
"one" : "virun {0} Minutt",
"other" : "viru(n) {0} Minutten"
}
},
"second" : {
"future" : {
"one" : "an {0} Sekonn",
"other" : "a(n) {0} Sekonnen"
},
"current" : "now",
"past" : {
"other" : "viru(n) {0} Sekonnen",
"one" : "virun {0} Sekonn"
}
},
"day" : {
"current" : "haut",
"future" : {
"one" : "an {0} Dag",
"other" : "a(n) {0} Deeg"
},
"previous" : "gëschter",
"next" : "muer",
"past" : {
"other" : "viru(n) {0} Deeg",
"one" : "virun {0} Dag"
}
},
"year" : {
"past" : {
"one" : "virun {0} Joer",
"other" : "viru(n) {0} Joer"
},
"next" : "nächst Joer",
"previous" : "lescht Joer",
"current" : "dëst Joer",
"future" : {
"one" : "an {0} Joer",
"other" : "a(n) {0} Joer"
}
}
},
"short" : {
"hour" : {
"current" : "this hour",
"past" : {
"other" : "viru(n) {0} St.",
"one" : "virun {0} St."
},
"future" : {
"one" : "an {0} St.",
"other" : "a(n) {0} St."
}
},
"second" : {
"future" : {
"one" : "an {0} Sek.",
"other" : "a(n) {0} Sek."
},
"past" : {
"one" : "virun {0} Sek.",
"other" : "viru(n) {0} Sek."
},
"current" : "now"
},
"now" : "now",
"year" : {
"past" : {
"one" : "virun {0} J.",
"other" : "viru(n) {0} J."
},
"future" : {
"one" : "an {0} J.",
"other" : "a(n) {0} J."
},
"previous" : "lescht Joer",
"current" : "dëst Joer",
"next" : "nächst Joer"
},
"quarter" : {
"previous" : "last quarter",
"future" : {
"other" : "a(n) {0} Q.",
"one" : "an {0} Q."
},
"next" : "next quarter",
"past" : {
"other" : "viru(n) {0} Q.",
"one" : "virun {0} Q."
},
"current" : "this quarter"
},
"week" : {
"previous" : "lescht Woch",
"current" : "dës Woch",
"next" : "nächst Woch",
"past" : {
"one" : "virun {0} W.",
"other" : "viru(n) {0} W."
},
"future" : {
"other" : "a(n) {0} W.",
"one" : "an {0} W."
}
},
"day" : {
"next" : "muer",
"past" : {
"other" : "viru(n) {0} D.",
"one" : "virun {0} D."
},
"previous" : "gëschter",
"future" : {
"one" : "an {0} D.",
"other" : "a(n) {0} D."
},
"current" : "haut"
},
"minute" : {
"past" : {
"other" : "viru(n) {0} Min.",
"one" : "virun {0} Min."
},
"future" : {
"one" : "an {0} Min.",
"other" : "a(n) {0} Min."
},
"current" : "this minute"
},
"month" : {
"next" : "nächste Mount",
"past" : {
"one" : "virun {0} M.",
"other" : "viru(n) {0} M."
},
"future" : {
"one" : "an {0} M.",
"other" : "a(n) {0} M."
},
"previous" : "leschte Mount",
"current" : "dëse Mount"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"year" : {
"future" : "Letáŋhaŋ ómakȟa {0} kiŋháŋ",
"previous" : "Ómakȟa kʼuŋ héhaŋ",
"next" : "Tȟokáta ómakȟa kiŋháŋ",
"current" : "Lé ómakȟa kiŋ",
"past" : "Hékta ómakȟa {0} kʼuŋ héhaŋ"
},
"week" : {
"past" : "Hékta okó {0} kʼuŋ héhaŋ",
"previous" : "Okó kʼuŋ héhaŋ",
"future" : "Letáŋhaŋ okó {0} kiŋháŋ",
"current" : "Lé okó kiŋ",
"next" : "Tȟokáta okó kiŋháŋ"
},
"hour" : {
"current" : "this hour",
"past" : "Hékta owápȟe {0} kʼuŋ héhaŋ",
"future" : "Letáŋhaŋ owápȟe {0} kiŋháŋ"
},
"quarter" : {
"current" : "this quarter",
"previous" : "last quarter",
"future" : "+{0} Q",
"past" : "-{0} Q",
"next" : "next quarter"
},
"second" : {
"past" : "Hékta okpí {0} kuŋ héhaŋ",
"future" : "Letáŋhaŋ okpí {0} kiŋháŋ",
"current" : "now"
},
"month" : {
"current" : "Lé wí kiŋ",
"future" : "Letáŋhaŋ wíyawapi {0} kiŋháŋ",
"past" : "Hékta wíyawapi {0} kʼuŋ héhaŋ",
"next" : "Tȟokáta wí kiŋháŋ",
"previous" : "Wí kʼuŋ héhaŋ"
},
"day" : {
"previous" : "Ȟtálehaŋ",
"future" : "Letáŋhaŋ {0}-čháŋ kiŋháŋ",
"next" : "Híŋhaŋni kiŋháŋ",
"current" : "Lé aŋpétu kiŋ",
"past" : "Hékta {0}-čháŋ kuŋ héhaŋ"
},
"minute" : {
"future" : "Letáŋhaŋ oȟáŋkȟo {0} kiŋháŋ",
"current" : "this minute",
"past" : "Hékta oȟáŋkȟo {0} kuŋ héhaŋ"
},
"now" : "now"
},
"long" : {
"quarter" : {
"next" : "next quarter",
"current" : "this quarter",
"previous" : "last quarter",
"past" : "-{0} Q",
"future" : "+{0} Q"
},
"now" : "now",
"year" : {
"previous" : "Ómakȟa kʼuŋ héhaŋ",
"past" : "Hékta ómakȟa {0} kʼuŋ héhaŋ",
"future" : "Letáŋhaŋ ómakȟa {0} kiŋháŋ",
"next" : "Tȟokáta ómakȟa kiŋháŋ",
"current" : "Lé ómakȟa kiŋ"
},
"month" : {
"previous" : "Wí kʼuŋ héhaŋ",
"current" : "Lé wí kiŋ",
"future" : "Letáŋhaŋ wíyawapi {0} kiŋháŋ",
"past" : "Hékta wíyawapi {0} kʼuŋ héhaŋ",
"next" : "Tȟokáta wí kiŋháŋ"
},
"day" : {
"previous" : "Ȟtálehaŋ",
"future" : "Letáŋhaŋ {0}-čháŋ kiŋháŋ",
"next" : "Híŋhaŋni kiŋháŋ",
"past" : "Hékta {0}-čháŋ kuŋ héhaŋ",
"current" : "Lé aŋpétu kiŋ"
},
"second" : {
"past" : "Hékta okpí {0} kuŋ héhaŋ",
"future" : "Letáŋhaŋ okpí {0} kiŋháŋ",
"current" : "now"
},
"week" : {
"past" : "Hékta okó {0} kʼuŋ héhaŋ",
"current" : "Lé okó kiŋ",
"next" : "Tȟokáta okó kiŋháŋ",
"previous" : "Okó kʼuŋ héhaŋ",
"future" : "Letáŋhaŋ okó {0} kiŋháŋ"
},
"hour" : {
"future" : "Letáŋhaŋ owápȟe {0} kiŋháŋ",
"current" : "this hour",
"past" : "Hékta owápȟe {0} kʼuŋ héhaŋ"
},
"minute" : {
"future" : "Letáŋhaŋ oȟáŋkȟo {0} kiŋháŋ",
"current" : "this minute",
"past" : "Hékta oȟáŋkȟo {0} kuŋ héhaŋ"
}
},
"short" : {
"second" : {
"current" : "now",
"past" : "Hékta okpí {0} kuŋ héhaŋ",
"future" : "Letáŋhaŋ okpí {0} kiŋháŋ"
},
"now" : "now",
"month" : {
"future" : "Letáŋhaŋ wíyawapi {0} kiŋháŋ",
"current" : "Lé wí kiŋ",
"past" : "Hékta wíyawapi {0} kʼuŋ héhaŋ",
"previous" : "Wí kʼuŋ héhaŋ",
"next" : "Tȟokáta wí kiŋháŋ"
},
"day" : {
"previous" : "Ȟtálehaŋ",
"current" : "Lé aŋpétu kiŋ",
"next" : "Híŋhaŋni kiŋháŋ",
"future" : "Letáŋhaŋ {0}-čháŋ kiŋháŋ",
"past" : "Hékta {0}-čháŋ kuŋ héhaŋ"
},
"minute" : {
"current" : "this minute",
"future" : "Letáŋhaŋ oȟáŋkȟo {0} kiŋháŋ",
"past" : "Hékta oȟáŋkȟo {0} kuŋ héhaŋ"
},
"quarter" : {
"past" : "-{0} Q",
"previous" : "last quarter",
"current" : "this quarter",
"future" : "+{0} Q",
"next" : "next quarter"
},
"hour" : {
"current" : "this hour",
"future" : "Letáŋhaŋ owápȟe {0} kiŋháŋ",
"past" : "Hékta owápȟe {0} kʼuŋ héhaŋ"
},
"week" : {
"future" : "Letáŋhaŋ okó {0} kiŋháŋ",
"previous" : "Okó kʼuŋ héhaŋ",
"next" : "Tȟokáta okó kiŋháŋ",
"past" : "Hékta okó {0} kʼuŋ héhaŋ",
"current" : "Lé okó kiŋ"
},
"year" : {
"next" : "Tȟokáta ómakȟa kiŋháŋ",
"current" : "Lé ómakȟa kiŋ",
"past" : "Hékta ómakȟa {0} kʼuŋ héhaŋ",
"future" : "Letáŋhaŋ ómakȟa {0} kiŋháŋ",
"previous" : "Ómakȟa kʼuŋ héhaŋ"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"quarter" : {
"past" : "{0} ຕມ. ກ່ອນ",
"future" : "ໃນ {0} ຕມ.",
"current" : "ໄຕຣມາດນີ້",
"previous" : "ໄຕຣມາດກ່ອນໜ້າ",
"next" : "ໄຕຣມາດໜ້າ"
},
"year" : {
"previous" : "ປີກາຍ",
"next" : "ປີໜ້າ",
"future" : "ໃນອີກ {0} ປີ",
"current" : "ປີນີ້",
"past" : "{0} ປີກ່ອນ"
},
"week" : {
"future" : "ໃນອີກ {0} ອທ.",
"previous" : "ອາທິດແລ້ວ",
"next" : "ອາທິດໜ້າ",
"past" : "{0} ອທ. ກ່ອນ",
"current" : "ອາທິດນີ້"
},
"day" : {
"current" : "ມື້ນີ້",
"past" : "{0} ມື້ກ່ອນ",
"next" : "ມື້ອື່ນ",
"future" : "ໃນອີກ {0} ມື້",
"previous" : "ມື້ວານ"
},
"hour" : {
"current" : "ຊົ່ວໂມງນີ້",
"past" : "{0} ຊມ. ກ່ອນ",
"future" : "ໃນອີກ {0} ຊມ."
},
"minute" : {
"future" : "ໃນ {0} ນທ.",
"current" : "ນາທີນີ້",
"past" : "{0} ນທ. ກ່ອນ"
},
"month" : {
"next" : "ເດືອນໜ້າ",
"current" : "ເດືອນນີ້",
"past" : "{0} ດ. ກ່ອນ",
"future" : "ໃນອີກ {0} ດ.",
"previous" : "ເດືອນແລ້ວ"
},
"now" : "ຕອນນີ້",
"second" : {
"future" : "ໃນ {0} ວິ.",
"current" : "ຕອນນີ້",
"past" : "{0} ວິ. ກ່ອນ"
}
},
"short" : {
"minute" : {
"past" : "{0} ນທ. ກ່ອນ",
"future" : "ໃນ {0} ນທ.",
"current" : "ນາທີນີ້"
},
"week" : {
"current" : "ອາທິດນີ້",
"past" : "{0} ອທ. ກ່ອນ",
"future" : "ໃນອີກ {0} ອທ.",
"next" : "ອາທິດໜ້າ",
"previous" : "ອາທິດແລ້ວ"
},
"year" : {
"future" : "ໃນອີກ {0} ປີ",
"previous" : "ປີກາຍ",
"next" : "ປີໜ້າ",
"current" : "ປີນີ້",
"past" : "{0} ປີກ່ອນ"
},
"day" : {
"next" : "ມື້ອື່ນ",
"current" : "ມື້ນີ້",
"previous" : "ມື້ວານ",
"past" : "{0} ມື້ກ່ອນ",
"future" : "ໃນອີກ {0} ມື້"
},
"hour" : {
"future" : "ໃນອີກ {0} ຊມ.",
"current" : "ຊົ່ວໂມງນີ້",
"past" : "{0} ຊມ. ກ່ອນ"
},
"quarter" : {
"current" : "ໄຕຣມາດນີ້",
"future" : "ໃນ {0} ຕມ.",
"previous" : "ໄຕຣມາດກ່ອນໜ້າ",
"next" : "ໄຕຣມາດໜ້າ",
"past" : "{0} ຕມ. ກ່ອນ"
},
"second" : {
"past" : "{0} ວິ. ກ່ອນ",
"current" : "ຕອນນີ້",
"future" : "ໃນ {0} ວິ."
},
"month" : {
"current" : "ເດືອນນີ້",
"past" : "{0} ດ. ກ່ອນ",
"future" : "ໃນອີກ {0} ດ.",
"next" : "ເດືອນໜ້າ",
"previous" : "ເດືອນແລ້ວ"
},
"now" : "ຕອນນີ້"
},
"long" : {
"hour" : {
"future" : "ໃນອີກ {0} ຊົ່ວໂມງ",
"current" : "ຊົ່ວໂມງນີ້",
"past" : "{0} ຊົ່ວໂມງກ່ອນ"
},
"day" : {
"next" : "ມື້ອື່ນ",
"past" : "{0} ມື້ກ່ອນ",
"previous" : "ມື້ວານ",
"future" : "ໃນອີກ {0} ມື້",
"current" : "ມື້ນີ້"
},
"second" : {
"past" : "{0} ວິນາທີກ່ອນ",
"current" : "ຕອນນີ້",
"future" : "ໃນອີກ {0} ວິນາທີ"
},
"week" : {
"future" : "ໃນອີກ {0} ອາທິດ",
"past" : "{0} ອາທິດກ່ອນ",
"current" : "ອາທິດນີ້",
"next" : "ອາທິດໜ້າ",
"previous" : "ອາທິດແລ້ວ"
},
"minute" : {
"future" : "{0} ໃນອີກ 0 ນາທີ",
"past" : "{0} ນາທີກ່ອນ",
"current" : "ນາທີນີ້"
},
"month" : {
"future" : "ໃນອີກ {0} ເດືອນ",
"past" : "{0} ເດືອນກ່ອນ",
"current" : "ເດືອນນີ້",
"previous" : "ເດືອນແລ້ວ",
"next" : "ເດືອນໜ້າ"
},
"now" : "ຕອນນີ້",
"year" : {
"current" : "ປີນີ້",
"next" : "ປີໜ້າ",
"previous" : "ປີກາຍ",
"future" : "ໃນອີກ {0} ປີ",
"past" : "{0} ປີກ່ອນ"
},
"quarter" : {
"future" : "ໃນອີກ {0} ໄຕຣມາດ",
"previous" : "ໄຕຣມາດກ່ອນໜ້າ",
"past" : "{0} ໄຕຣມາດກ່ອນ",
"next" : "ໄຕຣມາດໜ້າ",
"current" : "ໄຕຣມາດນີ້"
}
}
}

View File

@@ -0,0 +1,228 @@
{
"narrow" : {
"quarter" : {
"past" : "prieš {0} ketv.",
"future" : "po {0} ketv.",
"current" : "šis ketvirtis",
"previous" : "praėjęs ketvirtis",
"next" : "kitas ketvirtis"
},
"year" : {
"previous" : "praėjusiais metais",
"next" : "kitais metais",
"future" : "po {0} m.",
"current" : "šiais metais",
"past" : "prieš {0} m."
},
"week" : {
"future" : "po {0} sav.",
"previous" : "praėjusią savaitę",
"next" : "kitą savaitę",
"past" : "prieš {0} sav.",
"current" : "šią savaitę"
},
"day" : {
"current" : "šiandien",
"past" : "prieš {0} d.",
"next" : "rytoj",
"future" : "po {0} d.",
"previous" : "vakar"
},
"hour" : {
"current" : "šią valandą",
"past" : "prieš {0} val.",
"future" : "po {0} val."
},
"minute" : {
"future" : "po {0} min.",
"current" : "šią minutę",
"past" : "prieš {0} min."
},
"month" : {
"next" : "kitą mėnesį",
"current" : "šį mėnesį",
"past" : "prieš {0} mėn.",
"future" : "po {0} mėn.",
"previous" : "praėjusį mėnesį"
},
"now" : "dabar",
"second" : {
"future" : "po {0} s",
"current" : "dabar",
"past" : "prieš {0} s"
}
},
"short" : {
"minute" : {
"past" : "prieš {0} min.",
"future" : "po {0} min.",
"current" : "šią minutę"
},
"week" : {
"current" : "šią savaitę",
"past" : "prieš {0} sav.",
"future" : "po {0} sav.",
"next" : "kitą savaitę",
"previous" : "praėjusią savaitę"
},
"year" : {
"future" : "po {0} m.",
"previous" : "praėjusiais metais",
"next" : "kitais metais",
"current" : "šiais metais",
"past" : "prieš {0} m."
},
"day" : {
"next" : "rytoj",
"current" : "šiandien",
"previous" : "vakar",
"past" : "prieš {0} d.",
"future" : "po {0} d."
},
"hour" : {
"future" : "po {0} val.",
"current" : "šią valandą",
"past" : "prieš {0} val."
},
"quarter" : {
"current" : "šis ketvirtis",
"future" : "po {0} ketv.",
"previous" : "praėjęs ketvirtis",
"next" : "kitas ketvirtis",
"past" : "prieš {0} ketv."
},
"second" : {
"past" : "prieš {0} sek.",
"current" : "dabar",
"future" : "po {0} sek."
},
"month" : {
"current" : "šį mėnesį",
"past" : "prieš {0} mėn.",
"future" : "po {0} mėn.",
"next" : "kitą mėnesį",
"previous" : "praėjusį mėnesį"
},
"now" : "dabar"
},
"long" : {
"quarter" : {
"next" : "kitas ketvirtis",
"current" : "šis ketvirtis",
"future" : {
"many" : "po {0} ketvirčio",
"one" : "po {0} ketvirčio",
"other" : "po {0} ketvirčių"
},
"previous" : "praėjęs ketvirtis",
"past" : {
"few" : "prieš {0} ketvirčius",
"one" : "prieš {0} ketvirtį",
"many" : "prieš {0} ketvirčio",
"other" : "prieš {0} ketvirčių"
}
},
"day" : {
"next" : "rytoj",
"past" : {
"few" : "prieš {0} dienas",
"one" : "prieš {0} dieną",
"many" : "prieš {0} dienos",
"other" : "prieš {0} dienų"
},
"previous" : "vakar",
"current" : "šiandien",
"future" : {
"other" : "po {0} dienų",
"many" : "po {0} dienos",
"one" : "po {0} dienos"
}
},
"week" : {
"current" : "šią savaitę",
"next" : "kitą savaitę",
"past" : {
"one" : "prieš {0} savaitę",
"few" : "prieš {0} savaites",
"other" : "prieš {0} savaičių",
"many" : "prieš {0} savaitės"
},
"future" : {
"one" : "po {0} savaitės",
"other" : "po {0} savaičių",
"many" : "po {0} savaitės"
},
"previous" : "praėjusią savaitę"
},
"month" : {
"current" : "šį mėnesį",
"future" : {
"one" : "po {0} mėnesio",
"many" : "po {0} mėnesio",
"other" : "po {0} mėnesių"
},
"next" : "kitą mėnesį",
"previous" : "praėjusį mėnesį",
"past" : {
"one" : "prieš {0} mėnesį",
"many" : "prieš {0} mėnesio",
"other" : "prieš {0} mėnesių",
"few" : "prieš {0} mėnesius"
}
},
"second" : {
"future" : {
"one" : "po {0} sekundės",
"many" : "po {0} sekundės",
"other" : "po {0} sekundžių"
},
"current" : "dabar",
"past" : {
"many" : "prieš {0} sekundės",
"one" : "prieš {0} sekundę",
"few" : "prieš {0} sekundes",
"other" : "prieš {0} sekundžių"
}
},
"year" : {
"current" : "šiais metais",
"next" : "kitais metais",
"previous" : "praėjusiais metais",
"future" : "po {0} metų",
"past" : {
"other" : "prieš {0} metų",
"one" : "prieš {0} metus",
"few" : "prieš {0} metus"
}
},
"hour" : {
"past" : {
"one" : "prieš {0} valandą",
"other" : "prieš {0} valandų",
"few" : "prieš {0} valandas",
"many" : "prieš {0} valandos"
},
"future" : {
"many" : "po {0} valandos",
"other" : "po {0} valandų",
"one" : "po {0} valandos"
},
"current" : "šią valandą"
},
"now" : "dabar",
"minute" : {
"current" : "šią minutę",
"future" : {
"one" : "po {0} minutės",
"other" : "po {0} minučių",
"many" : "po {0} minutės"
},
"past" : {
"other" : "prieš {0} minučių",
"many" : "prieš {0} minutės",
"one" : "prieš {0} minutę",
"few" : "prieš {0} minutes"
}
}
}
}

View File

@@ -0,0 +1,227 @@
{
"short" : {
"now" : "tagad",
"minute" : {
"past" : "pirms {0} min.",
"future" : "pēc {0} min.",
"current" : "šajā minūtē"
},
"year" : {
"current" : "šajā gadā",
"future" : "pēc {0} g.",
"previous" : "pagājušajā gadā",
"next" : "nākamajā gadā",
"past" : "pirms {0} g."
},
"second" : {
"current" : "tagad",
"future" : "pēc {0} sek.",
"past" : "pirms {0} sek."
},
"hour" : {
"future" : "pēc {0} st.",
"past" : "pirms {0} st.",
"current" : "šajā stundā"
},
"month" : {
"current" : "šajā mēnesī",
"next" : "nākamajā mēnesī",
"past" : "pirms {0} mēn.",
"future" : "pēc {0} mēn.",
"previous" : "pagājušajā mēnesī"
},
"quarter" : {
"future" : "pēc {0} cet.",
"previous" : "pēdējais ceturksnis",
"next" : "nākamais ceturksnis",
"past" : "pirms {0} cet.",
"current" : "šis ceturksnis"
},
"week" : {
"next" : "nākamajā nedēļā",
"past" : "pirms {0} ned.",
"current" : "šajā nedēļā",
"previous" : "pagājušajā nedēļā",
"future" : "pēc {0} ned."
},
"day" : {
"next" : "rīt",
"current" : "šodien",
"previous" : "vakar",
"past" : {
"one" : "pirms {0} d.",
"other" : "pirms {0} d."
},
"future" : {
"one" : "pēc {0} d.",
"other" : "pēc {0} d."
}
}
},
"long" : {
"quarter" : {
"current" : "šis ceturksnis",
"previous" : "pēdējais ceturksnis",
"next" : "nākamais ceturksnis",
"past" : {
"one" : "pirms {0} ceturkšņa",
"other" : "pirms {0} ceturkšņiem"
},
"future" : {
"one" : "pēc {0} ceturkšņa",
"other" : "pēc {0} ceturkšņiem"
}
},
"minute" : {
"current" : "šajā minūtē",
"past" : {
"one" : "pirms {0} minūtes",
"other" : "pirms {0} minūtēm"
},
"future" : {
"one" : "pēc {0} minūtes",
"other" : "pēc {0} minūtēm"
}
},
"now" : "tagad",
"second" : {
"past" : {
"other" : "pirms {0} sekundēm",
"one" : "pirms {0} sekundes"
},
"future" : {
"one" : "pēc {0} sekundes",
"other" : "pēc {0} sekundēm"
},
"current" : "tagad"
},
"hour" : {
"future" : {
"other" : "pēc {0} stundām",
"one" : "pēc {0} stundas"
},
"current" : "šajā stundā",
"past" : {
"other" : "pirms {0} stundām",
"one" : "pirms {0} stundas"
}
},
"week" : {
"next" : "nākamajā nedēļā",
"past" : {
"other" : "pirms {0} nedēļām",
"one" : "pirms {0} nedēļas"
},
"current" : "šajā nedēļā",
"previous" : "pagājušajā nedēļā",
"future" : {
"other" : "pēc {0} nedēļām",
"one" : "pēc {0} nedēļas"
}
},
"day" : {
"future" : {
"other" : "pēc {0} dienām",
"one" : "pēc {0} dienas"
},
"past" : {
"one" : "pirms {0} dienas",
"other" : "pirms {0} dienām"
},
"previous" : "vakar",
"current" : "šodien",
"next" : "rīt"
},
"month" : {
"past" : {
"other" : "pirms {0} mēnešiem",
"one" : "pirms {0} mēneša"
},
"previous" : "pagājušajā mēnesī",
"next" : "nākamajā mēnesī",
"future" : {
"other" : "pēc {0} mēnešiem",
"one" : "pēc {0} mēneša"
},
"current" : "šajā mēnesī"
},
"year" : {
"current" : "šajā gadā",
"previous" : "pagājušajā gadā",
"future" : {
"one" : "pēc {0} gada",
"other" : "pēc {0} gadiem"
},
"next" : "nākamajā gadā",
"past" : {
"other" : "pirms {0} gadiem",
"one" : "pirms {0} gada"
}
}
},
"narrow" : {
"week" : {
"past" : "pirms {0} ned.",
"future" : "pēc {0} ned.",
"next" : "nākamajā nedēļā",
"current" : "šajā nedēļā",
"previous" : "pagājušajā nedēļā"
},
"minute" : {
"past" : "pirms {0} min",
"future" : {
"other" : "pēc {0} min",
"one" : "pēc {0} min"
},
"current" : "šajā minūtē"
},
"month" : {
"next" : "nākamajā mēnesī",
"past" : "pirms {0} mēn.",
"current" : "šajā mēnesī",
"future" : "pēc {0} mēn.",
"previous" : "pagājušajā mēnesī"
},
"now" : "tagad",
"year" : {
"previous" : "pagājušajā gadā",
"current" : "šajā gadā",
"past" : "pirms {0} g.",
"future" : "pēc {0} g.",
"next" : "nākamajā gadā"
},
"day" : {
"current" : "šodien",
"past" : {
"one" : "pirms {0} d.",
"other" : "pirms {0} d."
},
"future" : {
"one" : "pēc {0} d.",
"other" : "pēc {0} d."
},
"previous" : "vakar",
"next" : "rīt"
},
"second" : {
"past" : {
"other" : "pirms {0} s",
"one" : "pirms {0} s"
},
"current" : "tagad",
"future" : "pēc {0} s"
},
"quarter" : {
"current" : "šis ceturksnis",
"previous" : "pēdējais ceturksnis",
"past" : "pirms {0} cet.",
"next" : "nākamais ceturksnis",
"future" : "pēc {0} cet."
},
"hour" : {
"current" : "šajā stundā",
"past" : "pirms {0} h",
"future" : "pēc {0} h"
}
}
}

View File

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

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "നാളെ",
"future" : "{0} ദിവസത്തിൽ",
"previous" : "ഇന്നലെ",
"current" : "ഇന്ന്",
"past" : "{0} ദിവസം മുമ്പ്"
},
"quarter" : {
"next" : "അടുത്ത പാദം",
"past" : "{0} പാദം മുമ്പ്",
"future" : "{0} പാദത്തിൽ",
"previous" : "കഴിഞ്ഞ പാദം",
"current" : "ഈ പാദം"
},
"hour" : {
"future" : "{0} മണിക്കൂറിൽ",
"current" : "ഈ മണിക്കൂറിൽ",
"past" : "{0} മണിക്കൂർ മുമ്പ്"
},
"year" : {
"next" : "അടുത്തവർഷം",
"past" : "{0} വർഷം മുമ്പ്",
"current" : "ഈ വർ‌ഷം",
"previous" : "കഴിഞ്ഞ വർഷം",
"future" : "{0} വർഷത്തിൽ"
},
"now" : "ഇപ്പോൾ",
"month" : {
"current" : "ഈ മാസം",
"future" : "{0} മാസത്തിൽ",
"past" : "{0} മാസം മുമ്പ്",
"next" : "അടുത്ത മാസം",
"previous" : "കഴിഞ്ഞ മാസം"
},
"week" : {
"previous" : "കഴിഞ്ഞ ആഴ്‌ച",
"current" : "ഈ ആഴ്ച",
"past" : "{0} ആഴ്ച മുമ്പ്",
"future" : "{0} ആഴ്ചയിൽ",
"next" : "അടുത്ത ആഴ്ച"
},
"minute" : {
"current" : "ഈ മിനിറ്റിൽ",
"past" : "{0} മിനിറ്റ് മുമ്പ്",
"future" : "{0} മിനിറ്റിൽ"
},
"second" : {
"current" : "ഇപ്പോൾ",
"past" : "{0} സെക്കൻഡ് മുമ്പ്",
"future" : "{0} സെക്കൻഡിൽ"
}
},
"long" : {
"day" : {
"previous" : "ഇന്നലെ",
"current" : "ഇന്ന്",
"next" : "നാളെ",
"past" : "{0} ദിവസം മുമ്പ്",
"future" : "{0} ദിവസത്തിൽ"
},
"week" : {
"current" : "ഈ ആഴ്ച",
"future" : "{0} ആഴ്ചയിൽ",
"past" : "{0} ആഴ്ച മുമ്പ്",
"previous" : "കഴിഞ്ഞ ആഴ്‌ച",
"next" : "അടുത്ത ആഴ്ച"
},
"minute" : {
"past" : "{0} മിനിറ്റ് മുമ്പ്",
"future" : "{0} മിനിറ്റിൽ",
"current" : "ഈ മിനിറ്റിൽ"
},
"month" : {
"future" : "{0} മാസത്തിൽ",
"next" : "അടുത്ത മാസം",
"previous" : "കഴിഞ്ഞ മാസം",
"current" : "ഈ മാസം",
"past" : "{0} മാസം മുമ്പ്"
},
"hour" : {
"future" : "{0} മണിക്കൂറിൽ",
"current" : "ഈ മണിക്കൂറിൽ",
"past" : "{0} മണിക്കൂർ മുമ്പ്"
},
"year" : {
"past" : "{0} വർഷം മുമ്പ്",
"future" : "{0} വർഷത്തിൽ",
"previous" : "കഴിഞ്ഞ വർഷം",
"next" : "അടുത്തവർഷം",
"current" : "ഈ വർ‌ഷം"
},
"second" : {
"past" : "{0} സെക്കൻഡ് മുമ്പ്",
"future" : "{0} സെക്കൻഡിൽ",
"current" : "ഇപ്പോൾ"
},
"now" : "ഇപ്പോൾ",
"quarter" : {
"past" : "{0} പാദം മുമ്പ്",
"current" : "ഈ പാദം",
"previous" : "കഴിഞ്ഞ പാദം",
"future" : "{0} പാദത്തിൽ",
"next" : "അടുത്ത പാദം"
}
},
"short" : {
"quarter" : {
"future" : "{0} പാദത്തിൽ",
"next" : "അടുത്ത പാദം",
"previous" : "കഴിഞ്ഞ പാദം",
"current" : "ഈ പാദം",
"past" : "{0} പാദം മുമ്പ്"
},
"minute" : {
"future" : "{0} മിനിറ്റിൽ",
"current" : "ഈ മിനിറ്റിൽ",
"past" : "{0} മിനിറ്റ് മുമ്പ്"
},
"year" : {
"next" : "അടുത്തവർഷം",
"future" : "{0} വർഷത്തിൽ",
"current" : "ഈ വർ‌ഷം",
"past" : "{0} വർഷം മുമ്പ്",
"previous" : "കഴിഞ്ഞ വർഷം"
},
"second" : {
"future" : "{0} സെക്കൻഡിൽ",
"current" : "ഇപ്പോൾ",
"past" : "{0} സെക്കൻഡ് മുമ്പ്"
},
"hour" : {
"past" : "{0} മണിക്കൂർ മുമ്പ്",
"current" : "ഈ മണിക്കൂറിൽ",
"future" : "{0} മണിക്കൂറിൽ"
},
"now" : "ഇപ്പോൾ",
"month" : {
"previous" : "കഴിഞ്ഞ മാസം",
"next" : "അടുത്ത മാസം",
"past" : "{0} മാസം മുമ്പ്",
"current" : "ഈ മാസം",
"future" : "{0} മാസത്തിൽ"
},
"week" : {
"previous" : "കഴിഞ്ഞ ആഴ്‌ച",
"current" : "ഈ ആഴ്ച",
"next" : "അടുത്ത ആഴ്ച",
"past" : "{0} ആഴ്ച മുമ്പ്",
"future" : "{0} ആഴ്ചയിൽ"
},
"day" : {
"next" : "നാളെ",
"past" : "{0} ദിവസം മുമ്പ്",
"future" : "{0} ദിവസത്തിൽ",
"previous" : "ഇന്നലെ",
"current" : "ഇന്ന്"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "маргааш",
"future" : "{0} өдөрт",
"previous" : "өчигдөр",
"current" : "өнөөдөр",
"past" : "{0} өдрийн өмнө"
},
"quarter" : {
"next" : "дараагийн улирал",
"past" : "{0} улирлын өмнө",
"future" : "{0} улиралд",
"previous" : "өнгөрсөн улирал",
"current" : "энэ улирал"
},
"hour" : {
"future" : "{0} цагт",
"current" : "энэ цаг",
"past" : "{0} ц. өмнө"
},
"year" : {
"next" : "ирэх жил",
"past" : "-{0} жил.н өмнө",
"current" : "энэ жил",
"previous" : "өнгөрсөн жил",
"future" : "+{0} жилд"
},
"now" : "одоо",
"month" : {
"current" : "энэ сар",
"future" : "+{0} сард",
"past" : "{0} сарын өмнө",
"next" : "ирэх сар",
"previous" : "өнгөрсөн сар"
},
"week" : {
"previous" : "өнгөрсөн долоо хоног",
"current" : "энэ долоо хоног",
"past" : "{0} 7 хоногийн өмнө",
"future" : "{0} 7 хоногт",
"next" : "ирэх долоо хоног"
},
"minute" : {
"current" : "энэ минут",
"past" : "{0} мин. өмнө",
"future" : "{0} мин. дотор"
},
"second" : {
"current" : "одоо",
"past" : "{0} сек. өмнө",
"future" : "{0} сек. дотор"
}
},
"long" : {
"day" : {
"previous" : "өчигдөр",
"current" : "өнөөдөр",
"next" : "маргааш",
"past" : "{0} өдрийн өмнө",
"future" : "{0} өдөрт"
},
"week" : {
"current" : "энэ долоо хоног",
"future" : "{0} 7 хоногт",
"past" : "{0} 7 хоногийн өмнө",
"previous" : "өнгөрсөн долоо хоног",
"next" : "ирэх долоо хоног"
},
"minute" : {
"current" : "энэ минут",
"past" : "{0} минутын өмнө",
"future" : "{0} минутын дотор"
},
"month" : {
"future" : "{0} сард",
"next" : "ирэх сар",
"previous" : "өнгөрсөн сар",
"current" : "энэ сар",
"past" : "{0} сарын өмнө"
},
"hour" : {
"current" : "энэ цаг",
"past" : "{0} цагийн өмнө",
"future" : "{0} цагт"
},
"year" : {
"past" : "{0} жилийн өмнө",
"future" : "{0} жилийн дотор",
"previous" : "өнгөрсөн жил",
"next" : "ирэх жил",
"current" : "энэ жил"
},
"second" : {
"past" : "{0} секундын өмнө",
"future" : "{0} секундын дотор",
"current" : "одоо"
},
"now" : "одоо",
"quarter" : {
"past" : "{0} улирлын өмнө",
"current" : "энэ улирал",
"previous" : "өнгөрсөн улирал",
"future" : "{0} улиралд",
"next" : "дараагийн улирал"
}
},
"short" : {
"quarter" : {
"future" : "{0} улиралд",
"next" : "дараагийн улирал",
"previous" : "өнгөрсөн улирал",
"current" : "энэ улирал",
"past" : "{0} улирлын өмнө"
},
"minute" : {
"current" : "энэ минут",
"past" : "{0} мин. өмнө",
"future" : "{0} мин. дотор"
},
"year" : {
"next" : "ирэх жил",
"future" : "{0} жилийн дотор",
"current" : "энэ жил",
"past" : "{0} жилийн өмнө",
"previous" : "өнгөрсөн жил"
},
"second" : {
"future" : "{0} сек. дотор",
"current" : "одоо",
"past" : "{0} сек. өмнө"
},
"hour" : {
"current" : "энэ цаг",
"past" : "{0} ц. өмнө",
"future" : "{0} цагт"
},
"now" : "одоо",
"month" : {
"previous" : "өнгөрсөн сар",
"next" : "ирэх сар",
"past" : "{0} сарын өмнө",
"current" : "энэ сар",
"future" : "{0} сард"
},
"week" : {
"previous" : "өнгөрсөн долоо хоног",
"current" : "энэ долоо хоног",
"next" : "ирэх долоо хоног",
"past" : "{0} 7 хоногийн өмнө",
"future" : "{0} 7 хоногт"
},
"day" : {
"next" : "маргааш",
"past" : "{0} өдрийн өмнө",
"future" : "{0} өдөрт",
"previous" : "өчигдөр",
"current" : "өнөөдөр"
}
}
}

View File

@@ -0,0 +1,281 @@
{
"narrow" : {
"hour" : {
"future" : {
"other" : "येत्या {0} तासांमध्ये",
"one" : "येत्या {0} तासामध्ये"
},
"past" : {
"one" : "{0} तासापूर्वी",
"other" : "{0} तासांपूर्वी"
},
"current" : "तासात"
},
"now" : "आत्ता",
"quarter" : {
"current" : "ही तिमाही",
"next" : "पुढील तिमाही",
"previous" : "मागील तिमाही",
"past" : {
"one" : "{0} तिमाहीपूर्वी",
"other" : "{0} तिमाहींपूर्वी"
},
"future" : {
"one" : "{0} तिमाहीमध्ये",
"other" : "{0} तिमाहींमध्ये"
}
},
"year" : {
"next" : "पुढील वर्ष",
"previous" : "मागील वर्ष",
"past" : {
"one" : "{0} वर्षापूर्वी",
"other" : "{0} वर्षांपूर्वी"
},
"current" : "हे वर्ष",
"future" : {
"one" : "येत्या {0} वर्षामध्ये",
"other" : "येत्या {0} वर्षांमध्ये"
}
},
"week" : {
"next" : "पुढील आठवडा",
"previous" : "मागील आठवडा",
"future" : {
"other" : "येत्या {0} आठवड्यांमध्ये",
"one" : "येत्या {0} आठवड्यामध्ये"
},
"past" : {
"other" : "{0} आठवड्यांपूर्वी",
"one" : "{0} आठवड्यापूर्वी"
},
"current" : "हा आठवडा"
},
"month" : {
"previous" : "मागील महिना",
"next" : "पुढील महिना",
"future" : {
"one" : "{0} महिन्यामध्ये",
"other" : "{0} महिन्यांमध्ये"
},
"past" : {
"other" : "{0} महिन्यांपूर्वी",
"one" : "{0} महिन्यापूर्वी"
},
"current" : "हा महिना"
},
"day" : {
"future" : {
"one" : "{0} दिवसामध्ये",
"other" : "{0} दिवसांमध्ये"
},
"previous" : "काल",
"current" : "आज",
"next" : "उद्या",
"past" : {
"one" : "{0} दिवसापूर्वी",
"other" : "{0} दिवसांपूर्वी"
}
},
"minute" : {
"future" : "{0} मिनि. मध्ये",
"current" : "या मिनिटात",
"past" : "{0} मिनि. पूर्वी"
},
"second" : {
"past" : "{0} से. पूर्वी",
"current" : "आत्ता",
"future" : {
"one" : "{0} से. मध्ये",
"other" : "येत्या {0} से. मध्ये"
}
}
},
"long" : {
"second" : {
"past" : {
"other" : "{0} सेकंदांपूर्वी",
"one" : "{0} सेकंदापूर्वी"
},
"future" : {
"other" : "{0} सेकंदांमध्ये",
"one" : "{0} सेकंदामध्ये"
},
"current" : "आत्ता"
},
"year" : {
"previous" : "मागील वर्ष",
"current" : "हे वर्ष",
"next" : "पुढील वर्ष",
"past" : {
"one" : "{0} वर्षापूर्वी",
"other" : "{0} वर्षांपूर्वी"
},
"future" : {
"one" : "येत्या {0} वर्षामध्ये",
"other" : "येत्या {0} वर्षांमध्ये"
}
},
"quarter" : {
"current" : "ही तिमाही",
"future" : {
"one" : "{0} तिमाहीमध्ये",
"other" : "{0} तिमाहींमध्ये"
},
"past" : {
"other" : "{0} तिमाहींपूर्वी",
"one" : "{0} तिमाहीपूर्वी"
},
"previous" : "मागील तिमाही",
"next" : "पुढील तिमाही"
},
"minute" : {
"current" : "या मिनिटात",
"past" : {
"other" : "{0} मिनिटांपूर्वी",
"one" : "{0} मिनिटापूर्वी"
},
"future" : {
"other" : "{0} मिनिटांमध्ये",
"one" : "{0} मिनिटामध्ये"
}
},
"now" : "आत्ता",
"month" : {
"future" : {
"other" : "येत्या {0} महिन्यांमध्ये",
"one" : "येत्या {0} महिन्यामध्ये"
},
"past" : {
"one" : "{0} महिन्यापूर्वी",
"other" : "{0} महिन्यांपूर्वी"
},
"current" : "हा महिना",
"next" : "पुढील महिना",
"previous" : "मागील महिना"
},
"week" : {
"current" : "हा आठवडा",
"next" : "पुढील आठवडा",
"previous" : "मागील आठवडा",
"past" : {
"one" : "{0} आठवड्यापूर्वी",
"other" : "{0} आठवड्यांपूर्वी"
},
"future" : {
"one" : "{0} आठवड्यामध्ये",
"other" : "{0} आठवड्यांमध्ये"
}
},
"hour" : {
"current" : "तासात",
"past" : {
"one" : "{0} तासापूर्वी",
"other" : "{0} तासांपूर्वी"
},
"future" : {
"other" : "{0} तासांमध्ये",
"one" : "{0} तासामध्ये"
}
},
"day" : {
"past" : {
"one" : "{0} दिवसापूर्वी",
"other" : "{0} दिवसांपूर्वी"
},
"previous" : "काल",
"next" : "उद्या",
"future" : {
"other" : "येत्या {0} दिवसांमध्ये",
"one" : "येत्या {0} दिवसामध्ये"
},
"current" : "आज"
}
},
"short" : {
"second" : {
"past" : "{0} से. पूर्वी",
"current" : "आत्ता",
"future" : "{0} से. मध्ये"
},
"day" : {
"next" : "उद्या",
"past" : {
"one" : "{0} दिवसापूर्वी",
"other" : "{0} दिवसांपूर्वी"
},
"previous" : "काल",
"future" : {
"other" : "येत्या {0} दिवसांमध्ये",
"one" : "{0} दिवसामध्ये"
},
"current" : "आज"
},
"year" : {
"past" : {
"one" : "{0} वर्षापूर्वी",
"other" : "{0} वर्षांपूर्वी"
},
"future" : {
"one" : "{0} वर्षामध्ये",
"other" : "{0} वर्षांमध्ये"
},
"previous" : "मागील वर्ष",
"current" : "हे वर्ष",
"next" : "पुढील वर्ष"
},
"week" : {
"previous" : "मागील आठवडा",
"current" : "हा आठवडा",
"next" : "पुढील आठवडा",
"past" : {
"one" : "{0} आठवड्यापूर्वी",
"other" : "{0} आठवड्यांपूर्वी"
},
"future" : {
"one" : "येत्या {0} आठवड्यामध्ये",
"other" : "येत्या {0} आठवड्यांमध्ये"
}
},
"now" : "आत्ता",
"minute" : {
"past" : "{0} मिनि. पूर्वी",
"future" : "{0} मिनि. मध्ये",
"current" : "या मिनिटात"
},
"quarter" : {
"previous" : "मागील तिमाही",
"future" : {
"other" : "येत्या {0} तिमाहींमध्ये",
"one" : "येत्या {0} तिमाहीमध्ये"
},
"next" : "पुढील तिमाही",
"past" : {
"other" : "{0} तिमाहींपूर्वी",
"one" : "{0} तिमाहीपूर्वी"
},
"current" : "ही तिमाही"
},
"month" : {
"next" : "पुढील महिना",
"past" : {
"one" : "{0} महिन्यापूर्वी",
"other" : "{0} महिन्यांपूर्वी"
},
"future" : "{0} महिन्यामध्ये",
"previous" : "मागील महिना",
"current" : "हा महिना"
},
"hour" : {
"current" : "तासात",
"past" : {
"one" : "{0} तासापूर्वी",
"other" : "{0} तासांपूर्वी"
},
"future" : {
"one" : "{0} तासामध्ये",
"other" : "{0} तासांमध्ये"
}
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"day" : {
"next" : "esok",
"future" : "dlm {0} hari",
"previous" : "semlm",
"current" : "hari ini",
"past" : "{0} hari lalu"
},
"quarter" : {
"next" : "suku seterusnya",
"past" : "{0} suku thn lalu",
"future" : "dlm {0} suku thn",
"previous" : "suku lepas",
"current" : "suku ini"
},
"hour" : {
"future" : "dlm {0} jam",
"current" : "jam ini",
"past" : "{0} jam lalu"
},
"year" : {
"next" : "thn depan",
"past" : "{0} thn lalu",
"current" : "thn ini",
"previous" : "thn lepas",
"future" : "dalam {0} thn"
},
"now" : "sekarang",
"month" : {
"current" : "bln ini",
"future" : "dlm {0} bln",
"past" : "{0} bulan lalu",
"next" : "bln depan",
"previous" : "bln lalu"
},
"week" : {
"previous" : "mng lepas",
"current" : "mng ini",
"past" : "{0} mgu lalu",
"future" : "dlm {0} mgu",
"next" : "mng depan"
},
"minute" : {
"current" : "pada minit ini",
"past" : "{0} min lalu",
"future" : "dlm {0} min"
},
"second" : {
"past" : "{0} saat lalu",
"current" : "sekarang",
"future" : "dlm {0} saat"
}
},
"long" : {
"day" : {
"previous" : "semalam",
"current" : "hari ini",
"next" : "esok",
"past" : "{0} hari lalu",
"future" : "dalam {0} hari"
},
"week" : {
"current" : "minggu ini",
"future" : "dalam {0} minggu",
"past" : "{0} minggu lalu",
"previous" : "minggu lalu",
"next" : "minggu depan"
},
"minute" : {
"current" : "pada minit ini",
"past" : "{0} minit lalu",
"future" : "dalam {0} minit"
},
"month" : {
"future" : "dalam {0} bulan",
"next" : "bulan depan",
"previous" : "bulan lalu",
"current" : "bulan ini",
"past" : "{0} bulan lalu"
},
"hour" : {
"current" : "jam ini",
"future" : "dalam {0} jam",
"past" : "{0} jam lalu"
},
"year" : {
"past" : "{0} tahun lalu",
"future" : "dalam {0} tahun",
"previous" : "tahun lalu",
"next" : "tahun depan",
"current" : "tahun ini"
},
"second" : {
"past" : "{0} saat lalu",
"current" : "sekarang",
"future" : "dalam {0} saat"
},
"now" : "sekarang",
"quarter" : {
"past" : "{0} suku tahun lalu",
"current" : "suku tahun ini",
"previous" : "suku tahun lalu",
"future" : "dalam {0} suku tahun",
"next" : "suku tahun seterusnya"
}
},
"short" : {
"quarter" : {
"future" : "dlm {0} suku thn",
"next" : "suku seterusnya",
"previous" : "suku lepas",
"current" : "suku ini",
"past" : "{0} suku thn lalu"
},
"minute" : {
"current" : "pada minit ini",
"past" : "{0} min lalu",
"future" : "dlm {0} min"
},
"year" : {
"next" : "thn depan",
"future" : "dalam {0} thn",
"current" : "thn ini",
"past" : "{0} thn lalu",
"previous" : "thn lepas"
},
"second" : {
"past" : "{0} saat lalu",
"current" : "sekarang",
"future" : "dlm {0} saat"
},
"hour" : {
"current" : "jam ini",
"past" : "{0} jam lalu",
"future" : "dlm {0} jam"
},
"now" : "sekarang",
"month" : {
"previous" : "bln lalu",
"next" : "bln depan",
"past" : "{0} bln lalu",
"current" : "bln ini",
"future" : "dlm {0} bln"
},
"week" : {
"previous" : "mng lepas",
"current" : "mng ini",
"next" : "mng depan",
"past" : "{0} mgu lalu",
"future" : "dlm {0} mgu"
},
"day" : {
"next" : "esok",
"past" : "{0} hari lalu",
"future" : "dlm {0} hari",
"previous" : "semlm",
"current" : "hari ini"
}
}
}

View File

@@ -0,0 +1,170 @@
{
"narrow" : {
"now" : "now",
"hour" : {
"future" : "+{0} h",
"current" : "this hour",
"past" : "-{0} h"
},
"minute" : {
"future" : "+{0} min",
"current" : "this minute",
"past" : "-{0} min"
},
"second" : {
"future" : "+{0} s",
"past" : "-{0} s",
"current" : "now"
},
"year" : {
"next" : "Is-sena d-dieħla",
"future" : "+{0} y",
"previous" : "Is-sena li għaddiet",
"current" : "din is-sena",
"past" : {
"one" : "{0} sena ilu",
"other" : "{0} snin ilu"
}
},
"week" : {
"past" : "-{0} w",
"next" : "Il-ġimgħa d-dieħla",
"future" : "+{0} w",
"previous" : "Il-ġimgħa li għaddiet",
"current" : "Din il-ġimgħa"
},
"month" : {
"previous" : "Ix-xahar li għadda",
"current" : "Dan ix-xahar",
"next" : "Ix-xahar id-dieħel",
"past" : "-{0} m",
"future" : "+{0} m"
},
"quarter" : {
"next" : "next quarter",
"past" : "-{0} Q",
"future" : "+{0} Q",
"previous" : "last quarter",
"current" : "this quarter"
},
"day" : {
"next" : "Għada",
"previous" : "Ilbieraħ",
"past" : "-{0} d",
"future" : "+{0} d",
"current" : "Illum"
}
},
"long" : {
"quarter" : {
"previous" : "last quarter",
"current" : "this quarter",
"next" : "next quarter",
"past" : "-{0} Q",
"future" : "+{0} Q"
},
"day" : {
"previous" : "Ilbieraħ",
"past" : "-{0} d",
"future" : "+{0} d",
"current" : "Illum",
"next" : "Għada"
},
"week" : {
"next" : "Il-ġimgħa d-dieħla",
"past" : "-{0} w",
"future" : "+{0} w",
"previous" : "Il-ġimgħa li għaddiet",
"current" : "Din il-ġimgħa"
},
"hour" : {
"future" : "+{0} h",
"past" : "-{0} h",
"current" : "this hour"
},
"second" : {
"future" : "+{0} s",
"current" : "now",
"past" : "-{0} s"
},
"year" : {
"previous" : "Is-sena li għaddiet",
"past" : {
"one" : "{0} sena ilu",
"other" : "{0} snin ilu"
},
"next" : "Is-sena d-dieħla",
"future" : "+{0} y",
"current" : "din is-sena"
},
"month" : {
"next" : "Ix-xahar id-dieħel",
"past" : "-{0} m",
"previous" : "Ix-xahar li għadda",
"current" : "Dan ix-xahar",
"future" : "+{0} m"
},
"minute" : {
"past" : "-{0} min",
"current" : "this minute",
"future" : "+{0} min"
},
"now" : "now"
},
"short" : {
"hour" : {
"past" : "-{0} h",
"future" : "+{0} h",
"current" : "this hour"
},
"now" : "now",
"quarter" : {
"current" : "this quarter",
"future" : "+{0} Q",
"past" : "-{0} Q",
"next" : "next quarter",
"previous" : "last quarter"
},
"day" : {
"current" : "Illum",
"past" : "-{0} d",
"future" : "+{0} d",
"next" : "Għada",
"previous" : "Ilbieraħ"
},
"week" : {
"current" : "Din il-ġimgħa",
"past" : "-{0} w",
"future" : "+{0} w",
"next" : "Il-ġimgħa d-dieħla",
"previous" : "Il-ġimgħa li għaddiet"
},
"minute" : {
"past" : "-{0} min",
"current" : "this minute",
"future" : "+{0} min"
},
"second" : {
"current" : "now",
"past" : "-{0} s",
"future" : "+{0} s"
},
"month" : {
"current" : "Dan ix-xahar",
"future" : "+{0} m",
"previous" : "Ix-xahar li għadda",
"next" : "Ix-xahar id-dieħel",
"past" : "-{0} m"
},
"year" : {
"future" : "+{0} y",
"previous" : "Is-sena li għaddiet",
"next" : "Is-sena d-dieħla",
"current" : "din is-sena",
"past" : {
"other" : "{0} snin ilu",
"one" : "{0} sena ilu"
}
}
}
}

View File

@@ -0,0 +1,161 @@
{
"narrow" : {
"quarter" : {
"past" : "ပြီးခဲ့သည့် သုံးလပတ်ကာလ {0} ခုအတွင်း",
"future" : "သုံးလပတ်ကာလ {0} ခုအတွင်း",
"current" : "ယခုသုံးလပတ်",
"previous" : "ပြီးခဲ့သောသုံးလပတ်",
"next" : "နောက်လာမည့်သုံးလပတ်"
},
"year" : {
"previous" : "ယမန်နှစ်",
"next" : "လာမည့်နှစ်",
"future" : "{0} နှစ်အတွင်း",
"current" : "ယခုနှစ်",
"past" : "ပြီးခဲ့သည့် {0} နှစ်"
},
"week" : {
"future" : "{0} ပတ်အတွင်း",
"previous" : "ပြီးခဲ့သည့် သီတင်းပတ်",
"next" : "လာမည့် သီတင်းပတ်",
"past" : "ပြီးခဲ့သည့် {0} ပတ်",
"current" : "ယခု သီတင်းပတ်"
},
"day" : {
"current" : "ယနေ့",
"past" : "ပြီးခဲ့သည့် {0} ရက်",
"next" : "မနက်ဖြန်",
"future" : "{0} ရက်အတွင်း",
"previous" : "မနေ့က"
},
"hour" : {
"current" : "ဤအချိန်",
"past" : "ပြီးခဲ့သည့် {0} နာရီ",
"future" : "{0} နာရီအတွင်း"
},
"minute" : {
"future" : "{0} မိနစ်အတွင်း",
"current" : "ဤမိနစ်",
"past" : "ပြီးခဲ့သည့် {0} မိနစ်"
},
"month" : {
"next" : "လာမည့်လ",
"current" : "ယခုလ",
"past" : "ပြီးခဲ့သည့် {0} လ",
"future" : "{0} လအတွင်း",
"previous" : "ပြီးခဲ့သည့်လ"
},
"now" : "ယခု",
"second" : {
"future" : "{0} စက္ကန့်အတွင်း",
"current" : "ယခု",
"past" : "ပြီးခဲ့သည့် {0} စက္ကန့်"
}
},
"short" : {
"minute" : {
"past" : "ပြီးခဲ့သည့် {0} မိနစ်",
"future" : "{0} မိနစ်အတွင်း",
"current" : "ဤမိနစ်"
},
"week" : {
"current" : "ယခု သီတင်းပတ်",
"past" : "ပြီးခဲ့သည့် {0} ပတ်",
"future" : "{0} ပတ်အတွင်း",
"next" : "လာမည့် သီတင်းပတ်",
"previous" : "ပြီးခဲ့သည့် သီတင်းပတ်"
},
"year" : {
"current" : "ယခုနှစ်",
"future" : "{0} နှစ်အတွင်း",
"past" : "ပြီးခဲ့သည့် {0} နှစ်",
"next" : "လာမည့်နှစ်",
"previous" : "ယမန်နှစ်"
},
"day" : {
"next" : "မနက်ဖြန်",
"current" : "ယနေ့",
"previous" : "မနေ့က",
"past" : "ပြီးခဲ့သည့် {0} ရက်",
"future" : "{0} ရက်အတွင်း"
},
"hour" : {
"future" : "{0} နာရီအတွင်း",
"current" : "ဤအချိန်",
"past" : "ပြီးခဲ့သည့် {0} နာရီ"
},
"quarter" : {
"current" : "ယခုသုံးလပတ်",
"future" : "သုံးလပတ်ကာလ {0} ခုအတွင်း",
"previous" : "ပြီးခဲ့သောသုံးလပတ်",
"next" : "နောက်လာမည့်သုံးလပတ်",
"past" : "ပြီးခဲ့သည့် သုံးလပတ်ကာလ {0} ခုအတွင်း"
},
"second" : {
"past" : "ပြီးခဲ့သည့် {0} စက္ကန့်",
"current" : "ယခု",
"future" : "{0} စက္ကန့်အတွင်း"
},
"month" : {
"current" : "ယခုလ",
"past" : "ပြီးခဲ့သည့် {0} လ",
"future" : "{0} လအတွင်း",
"next" : "လာမည့်လ",
"previous" : "ပြီးခဲ့သည့်လ"
},
"now" : "ယခု"
},
"long" : {
"hour" : {
"future" : "{0} နာရီအတွင်း",
"current" : "ဤအချိန်",
"past" : "ပြီးခဲ့သည့် {0} နာရီ"
},
"day" : {
"next" : "မနက်ဖြန်",
"past" : "ပြီးခဲ့သည့် {0} ရက်",
"previous" : "မနေ့က",
"future" : "{0} ရက်အတွင်း",
"current" : "ယနေ့"
},
"second" : {
"past" : "ပြီးခဲ့သည့် {0} စက္ကန့်",
"current" : "ယခု",
"future" : "{0} စက္ကန့်အတွင်း"
},
"week" : {
"future" : "{0} ပတ်အတွင်း",
"past" : "ပြီးခဲ့သည့် {0} ပတ်",
"current" : "ယခု သီတင်းပတ်",
"next" : "လာမည့် သီတင်းပတ်",
"previous" : "ပြီးခဲ့သည့် သီတင်းပတ်"
},
"minute" : {
"future" : "{0} မိနစ်အတွင်း",
"past" : "ပြီးခဲ့သည့် {0} မိနစ်",
"current" : "ဤမိနစ်"
},
"month" : {
"future" : "{0} လအတွင်း",
"past" : "ပြီးခဲ့သည့် {0} လ",
"current" : "ယခုလ",
"previous" : "ပြီးခဲ့သည့်လ",
"next" : "လာမည့်လ"
},
"now" : "ယခု",
"year" : {
"current" : "ယခုနှစ်",
"next" : "လာမည့်နှစ်",
"previous" : "ယမန်နှစ်",
"future" : "{0} နှစ်အတွင်း",
"past" : "ပြီးခဲ့သည့် {0} နှစ်"
},
"quarter" : {
"future" : "သုံးလပတ်ကာလ {0} အတွင်း",
"previous" : "ပြီးခဲ့သည့် သုံးလပတ်",
"past" : "ပြီးခဲ့သည့် သုံးလပတ်ကာလ {0} ခုအတွင်း",
"next" : "လာမည့် သုံးလပတ်",
"current" : "ယခု သုံးလပတ်"
}
}
}

View File

@@ -0,0 +1,161 @@
{
"long" : {
"hour" : {
"future" : "{0} ساعِت دله",
"current" : "this hour",
"past" : "{0} ساعِت پیش"
},
"second" : {
"future" : "{0} ثانیه دله",
"past" : "{0} ثانیه پیش",
"current" : "now"
},
"week" : {
"next" : "بعدی هفته",
"current" : "این هفته",
"previous" : "قبلی هفته",
"future" : "{0} هفته دله",
"past" : "{0} هفته پیش"
},
"minute" : {
"past" : "{0} دَقه پیش",
"future" : "{0} دقیقه دله",
"current" : "this minute"
},
"year" : {
"current" : "امسال",
"past" : "{0} سال پیش",
"future" : "{0} سال دله",
"previous" : "پارسال",
"next" : "سال دیگه"
},
"quarter" : {
"next" : "next quarter",
"current" : "this quarter",
"future" : "{0} ربع دله",
"previous" : "last quarter",
"past" : "{0} ربع پیش"
},
"month" : {
"previous" : "ماه قبل",
"future" : "{0} ماه دله",
"current" : "این ماه",
"next" : "ماه ِبعد",
"past" : "{0} ماه پیش"
},
"day" : {
"next" : "فِردا",
"past" : "{0} روز پیش",
"current" : "اَمروز",
"future" : "{0} روز دله",
"previous" : "دیروز"
},
"now" : "now"
},
"narrow" : {
"week" : {
"current" : "این هفته",
"next" : "بعدی هفته",
"past" : "{0} هفته پیش",
"previous" : "قبلی هفته",
"future" : "{0} هفته دله"
},
"minute" : {
"future" : "{0} دَقه دله",
"past" : "{0} دَقه پیش",
"current" : "this minute"
},
"month" : {
"current" : "این ماه",
"previous" : "ماه قبل",
"past" : "{0} ماه پیش",
"next" : "ماه ِبعد",
"future" : "{0} ماه دله"
},
"now" : "now",
"year" : {
"previous" : "پارسال",
"current" : "امسال",
"next" : "سال دیگه",
"past" : "{0} سال پیش",
"future" : "{0} سال دله"
},
"hour" : {
"current" : "this hour",
"past" : "{0} ساعت پیش",
"future" : "{0} ساعت دله"
},
"quarter" : {
"previous" : "last quarter",
"current" : "this quarter",
"past" : "{0} ربع پیش",
"future" : "{0} ربع دله",
"next" : "next quarter"
},
"second" : {
"current" : "now",
"future" : "{0} ثانیه دله",
"past" : "{0} ثانیه پیش"
},
"day" : {
"past" : "{0} روز پیش",
"current" : "اَمروز",
"future" : "{0} روز دله",
"previous" : "دیروز",
"next" : "فِردا"
}
},
"short" : {
"month" : {
"current" : "این ماه",
"next" : "ماه ِبعد",
"past" : "{0} ماه پیش",
"future" : "{0} ماه دله",
"previous" : "ماه قبل"
},
"now" : "now",
"day" : {
"next" : "فِردا",
"current" : "اَمروز",
"previous" : "دیروز",
"past" : "{0} روز پیش",
"future" : "{0} روز دله"
},
"year" : {
"current" : "امسال",
"future" : "{0} سال دله",
"previous" : "پارسال",
"next" : "سال دیگه",
"past" : "{0} سال پیش"
},
"hour" : {
"past" : "{0} ساعت پیش",
"current" : "this hour",
"future" : "{0} ساعت دله"
},
"minute" : {
"past" : "{0} دَقه پیش",
"future" : "{0} دَقه دله",
"current" : "this minute"
},
"second" : {
"future" : "{0} ثانیه دله",
"current" : "now",
"past" : "{0} ثانیه پیش"
},
"quarter" : {
"future" : "{0} ربع دله",
"previous" : "last quarter",
"next" : "next quarter",
"past" : "{0} ربع پیش",
"current" : "this quarter"
},
"week" : {
"next" : "بعدی هفته",
"past" : "{0} هفته پیش",
"current" : "این هفته",
"previous" : "قبلی هفته",
"future" : "{0} هفته دله"
}
}
}

View File

@@ -0,0 +1,197 @@
{
"narrow" : {
"quarter" : {
"past" : "{0} kv.",
"future" : "+{0} kv.",
"current" : "dette kv.",
"previous" : "forrige kv.",
"next" : "neste kv."
},
"year" : {
"previous" : "i fjor",
"next" : "neste år",
"future" : "+{0} år",
"current" : "i år",
"past" : "{0} år"
},
"week" : {
"future" : "+{0} u.",
"previous" : "forrige uke",
"next" : "neste uke",
"past" : "-{0} u.",
"current" : "denne uken"
},
"day" : {
"current" : "i dag",
"past" : "-{0} d.",
"next" : "i morgen",
"future" : "+{0} d.",
"previous" : "i går"
},
"hour" : {
"current" : "denne timen",
"past" : "-{0} t",
"future" : "+{0} t"
},
"minute" : {
"future" : "+{0} min",
"current" : "dette minuttet",
"past" : "-{0} min"
},
"month" : {
"next" : "neste md.",
"current" : "denne md.",
"past" : "-{0} md.",
"future" : "+{0} md.",
"previous" : "forrige md."
},
"now" : "nå",
"second" : {
"future" : "+{0} s",
"current" : "nå",
"past" : "-{0} s"
}
},
"long" : {
"month" : {
"next" : "neste måned",
"current" : "denne måneden",
"future" : {
"one" : "om {0} måned",
"other" : "om {0} måneder"
},
"previous" : "forrige måned",
"past" : {
"one" : "for {0} måned siden",
"other" : "for {0} måneder siden"
}
},
"hour" : {
"current" : "denne timen",
"future" : {
"one" : "om {0} time",
"other" : "om {0} timer"
},
"past" : {
"one" : "for {0} time siden",
"other" : "for {0} timer siden"
}
},
"second" : {
"future" : {
"one" : "om {0} sekund",
"other" : "om {0} sekunder"
},
"current" : "nå",
"past" : {
"other" : "for {0} sekunder siden",
"one" : "for {0} sekund siden"
}
},
"week" : {
"previous" : "forrige uke",
"past" : {
"other" : "for {0} uker siden",
"one" : "for {0} uke siden"
},
"future" : {
"other" : "om {0} uker",
"one" : "om {0} uke"
},
"current" : "denne uken",
"next" : "neste uke"
},
"year" : {
"current" : "i år",
"next" : "neste år",
"previous" : "i fjor",
"future" : "om {0} år",
"past" : "for {0} år siden"
},
"now" : "nå",
"quarter" : {
"future" : {
"one" : "om {0} kvartal",
"other" : "om {0} kvartaler"
},
"previous" : "forrige kvartal",
"past" : {
"other" : "for {0} kvartaler siden",
"one" : "for {0} kvartal siden"
},
"next" : "neste kvartal",
"current" : "dette kvartalet"
},
"day" : {
"previous" : "i går",
"current" : "i dag",
"next" : "i morgen",
"past" : "for {0} døgn siden",
"future" : "om {0} døgn"
},
"minute" : {
"future" : {
"one" : "om {0} minutt",
"other" : "om {0} minutter"
},
"past" : {
"one" : "for {0} minutt siden",
"other" : "for {0} minutter siden"
},
"current" : "dette minuttet"
}
},
"short" : {
"minute" : {
"past" : "for {0} min siden",
"future" : "om {0} min",
"current" : "dette minuttet"
},
"week" : {
"current" : "denne uken",
"past" : "for {0} u. siden",
"future" : "om {0} u.",
"next" : "neste uke",
"previous" : "forrige uke"
},
"year" : {
"current" : "i år",
"future" : "om {0} år",
"past" : "for {0} år siden",
"next" : "neste år",
"previous" : "i fjor"
},
"day" : {
"next" : "i morgen",
"current" : "i dag",
"previous" : "i går",
"past" : "for {0} d. siden",
"future" : "om {0} d."
},
"hour" : {
"future" : "om {0} t",
"current" : "denne timen",
"past" : "for {0} t siden"
},
"quarter" : {
"current" : "dette kv.",
"future" : "om {0} kv.",
"previous" : "forrige kv.",
"next" : "neste kv.",
"past" : "for {0} kv. siden"
},
"second" : {
"past" : "for {0} sek siden",
"current" : "nå",
"future" : "om {0} sek"
},
"month" : {
"current" : "denne md.",
"past" : "for {0} md. siden",
"future" : "om {0} md.",
"next" : "neste md.",
"previous" : "forrige md."
},
"now" : "nå"
}
}

View File

@@ -0,0 +1,164 @@
{
"narrow" : {
"quarter" : {
"past" : "{0}सत्र अघि",
"future" : "{0}सत्रमा",
"current" : "यो सत्र",
"previous" : "अघिल्लो सत्र",
"next" : "अर्को सत्र"
},
"year" : {
"previous" : "गत वर्ष",
"next" : "आगामी वर्ष",
"future" : "{0} वर्षमा",
"current" : "यो वर्ष",
"past" : "{0} वर्ष अघि"
},
"week" : {
"future" : "{0} हप्तामा",
"previous" : "गत हप्ता",
"next" : "आउने हप्ता",
"past" : "{0} हप्ता पहिले",
"current" : "यो हप्ता"
},
"day" : {
"current" : "आज",
"past" : "{0} दिन पहिले",
"next" : "भोलि",
"future" : "{0} दिनमा",
"previous" : "हिजो"
},
"hour" : {
"current" : "यस घडीमा",
"past" : "{0} घण्टा पहिले",
"future" : "{0} घण्टामा"
},
"minute" : {
"future" : "{0} मिनेटमा",
"current" : "यही मिनेटमा",
"past" : "{0} मिनेट पहिले"
},
"month" : {
"next" : "अर्को महिना",
"current" : "यो महिना",
"past" : "{0} महिना पहिले",
"future" : "{0} महिनामा",
"previous" : "गत महिना"
},
"now" : "अहिले",
"second" : {
"future" : "{0} सेकेन्डमा",
"current" : "अहिले",
"past" : "{0} सेकेन्ड पहिले"
}
},
"short" : {
"minute" : {
"past" : "{0} मिनेट पहिले",
"future" : "{0} मिनेटमा",
"current" : "यही मिनेटमा"
},
"week" : {
"current" : "यो हप्ता",
"past" : "{0} हप्ता पहिले",
"future" : "{0} हप्तामा",
"next" : "आउने हप्ता",
"previous" : "गत हप्ता"
},
"year" : {
"current" : "यो वर्ष",
"future" : "{0} वर्षमा",
"past" : "{0} वर्ष अघि",
"next" : "आगामी वर्ष",
"previous" : "गत वर्ष"
},
"day" : {
"next" : "भोलि",
"current" : "आज",
"previous" : "हिजो",
"past" : "{0} दिन पहिले",
"future" : "{0} दिनमा"
},
"hour" : {
"future" : "{0} घण्टामा",
"current" : "यस घडीमा",
"past" : "{0} घण्टा पहिले"
},
"quarter" : {
"current" : "यो सत्र",
"future" : "{0}सत्रमा",
"previous" : "अघिल्लो सत्र",
"next" : "अर्को सत्र",
"past" : "{0}सत्र अघि"
},
"second" : {
"past" : "{0} सेकेन्ड पहिले",
"current" : "अहिले",
"future" : "{0} सेकेन्डमा"
},
"month" : {
"current" : "यो महिना",
"past" : "{0} महिना पहिले",
"future" : "{0} महिनामा",
"next" : "अर्को महिना",
"previous" : "गत महिना"
},
"now" : "अहिले"
},
"long" : {
"week" : {
"current" : "यो हप्ता",
"past" : "{0} हप्ता पहिले",
"next" : "आउने हप्ता",
"previous" : "गत हप्ता",
"future" : "{0} हप्तामा"
},
"second" : {
"future" : "{0} सेकेन्डमा",
"past" : "{0} सेकेन्ड पहिले",
"current" : "अहिले"
},
"quarter" : {
"future" : {
"other" : "{0}सत्रमा",
"one" : "+{0} सत्रमा"
},
"previous" : "अघिल्लो सत्र",
"past" : "{0}सत्र अघि",
"next" : "अर्को सत्र",
"current" : "यो सत्र"
},
"now" : "अहिले",
"day" : {
"future" : "{0} दिनमा",
"previous" : "हिजो",
"past" : "{0} दिन पहिले",
"next" : "भोलि",
"current" : "आज"
},
"year" : {
"current" : "यो वर्ष",
"next" : "आगामी वर्ष",
"previous" : "गत वर्ष",
"future" : "{0} वर्षमा",
"past" : "{0} वर्ष अघि"
},
"hour" : {
"future" : "{0} घण्टामा",
"past" : "{0} घण्टा पहिले",
"current" : "यस घडीमा"
},
"month" : {
"next" : "अर्को महिना",
"current" : "यो महिना",
"future" : "{0} महिनामा",
"previous" : "गत महिना",
"past" : "{0} महिना पहिले"
},
"minute" : {
"past" : "{0} मिनेट पहिले",
"current" : "यही मिनेटमा",
"future" : "{0} मिनेटमा"
}
}
}

View File

@@ -0,0 +1,245 @@
{
"narrow" : {
"minute" : {
"future" : "over {0} min.",
"current" : "binnen een minuut",
"past" : "{0} min. geleden"
},
"week" : {
"current" : "deze week",
"previous" : "vorige week",
"past" : {
"one" : "{0} week geleden",
"other" : "{0} weken geleden"
},
"future" : {
"other" : "over {0} weken",
"one" : "over {0} week"
},
"next" : "volgende week"
},
"quarter" : {
"previous" : "vorig kwartaal",
"current" : "dit kwartaal",
"past" : {
"other" : "{0} kwartalen geleden",
"one" : "{0} kwartaal geleden"
},
"next" : "volgend kwartaal",
"future" : {
"one" : "over {0} kw.",
"other" : "over {0} kwartalen"
}
},
"year" : {
"future" : "over {0} jaar",
"previous" : "vorig jaar",
"current" : "dit jaar",
"next" : "volgend jaar",
"past" : "{0} jaar geleden"
},
"hour" : {
"current" : "binnen een uur",
"future" : "over {0} uur",
"past" : "{0} uur geleden"
},
"day" : {
"previous" : "gisteren",
"current" : "vandaag",
"past" : {
"one" : "{0} dag geleden",
"other" : "{0} dgn geleden"
},
"future" : {
"other" : "over {0} dgn",
"one" : "over {0} dag"
},
"next" : "morgen"
},
"second" : {
"past" : "{0} sec. geleden",
"current" : "nu",
"future" : "over {0} sec."
},
"now" : "nu",
"month" : {
"previous" : "vorige maand",
"current" : "deze maand",
"past" : {
"one" : "{0} maand geleden",
"other" : "{0} maanden geleden"
},
"future" : {
"one" : "over {0} maand",
"other" : "over {0} maanden"
},
"next" : "volgende maand"
}
},
"long" : {
"year" : {
"past" : "{0} jaar geleden",
"future" : "over {0} jaar",
"previous" : "vorig jaar",
"next" : "volgend jaar",
"current" : "dit jaar"
},
"quarter" : {
"future" : {
"one" : "over {0} kwartaal",
"other" : "over {0} kwartalen"
},
"current" : "dit kwartaal",
"next" : "volgend kwartaal",
"past" : {
"one" : "{0} kwartaal geleden",
"other" : "{0} kwartalen geleden"
},
"previous" : "vorig kwartaal"
},
"hour" : {
"future" : "over {0} uur",
"current" : "binnen een uur",
"past" : "{0} uur geleden"
},
"month" : {
"past" : {
"one" : "{0} maand geleden",
"other" : "{0} maanden geleden"
},
"previous" : "vorige maand",
"current" : "deze maand",
"future" : {
"other" : "over {0} maanden",
"one" : "over {0} maand"
},
"next" : "volgende maand"
},
"week" : {
"past" : {
"one" : "{0} week geleden",
"other" : "{0} weken geleden"
},
"previous" : "vorige week",
"next" : "volgende week",
"current" : "deze week",
"future" : {
"other" : "over {0} weken",
"one" : "over {0} week"
}
},
"day" : {
"previous" : "gisteren",
"current" : "vandaag",
"future" : {
"one" : "over {0} dag",
"other" : "over {0} dagen"
},
"next" : "morgen",
"past" : {
"other" : "{0} dagen geleden",
"one" : "{0} dag geleden"
}
},
"minute" : {
"future" : {
"other" : "over {0} minuten",
"one" : "over {0} minuut"
},
"past" : {
"one" : "{0} minuut geleden",
"other" : "{0} minuten geleden"
},
"current" : "binnen een minuut"
},
"now" : "nu",
"second" : {
"current" : "nu",
"future" : {
"other" : "over {0} seconden",
"one" : "over {0} seconde"
},
"past" : {
"one" : "{0} seconde geleden",
"other" : "{0} seconden geleden"
}
}
},
"short" : {
"hour" : {
"past" : "{0} uur geleden",
"current" : "binnen een uur",
"future" : "over {0} uur"
},
"quarter" : {
"current" : "dit kwartaal",
"future" : {
"one" : "over {0} kwartaal",
"other" : "over {0} kwartalen"
},
"previous" : "vorig kwartaal",
"next" : "volgend kwartaal",
"past" : {
"other" : "{0} kwartalen geleden",
"one" : "{0} kwartaal geleden"
}
},
"week" : {
"next" : "volgende week",
"current" : "deze week",
"previous" : "vorige week",
"past" : {
"one" : "{0} week geleden",
"other" : "{0} weken geleden"
},
"future" : {
"one" : "over {0} week",
"other" : "over {0} weken"
}
},
"year" : {
"future" : "over {0} jaar",
"previous" : "vorig jaar",
"next" : "volgend jaar",
"current" : "dit jaar",
"past" : "{0} jaar geleden"
},
"minute" : {
"future" : "over {0} min.",
"past" : "{0} min. geleden",
"current" : "binnen een minuut"
},
"now" : "nu",
"month" : {
"current" : "deze maand",
"past" : {
"one" : "{0} maand geleden",
"other" : "{0} maanden geleden"
},
"future" : {
"one" : "over {0} maand",
"other" : "over {0} maanden"
},
"next" : "volgende maand",
"previous" : "vorige maand"
},
"day" : {
"future" : {
"one" : "over {0} dag",
"other" : "over {0} dgn"
},
"current" : "vandaag",
"next" : "morgen",
"previous" : "gisteren",
"past" : {
"other" : "{0} dgn geleden",
"one" : "{0} dag geleden"
}
},
"second" : {
"past" : "{0} sec. geleden",
"current" : "nu",
"future" : "over {0} sec."
}
}
}

View File

@@ -0,0 +1,185 @@
{
"narrow" : {
"hour" : {
"future" : "+{0} t",
"current" : "denne timen",
"past" : "{0} t"
},
"quarter" : {
"current" : "dette kvartalet",
"previous" : "førre kvartal",
"future" : "+{0} kv.",
"past" : "{0} kv.",
"next" : "neste kvartal"
},
"year" : {
"future" : "om {0} år",
"previous" : "i fjor",
"next" : "neste år",
"current" : "i år",
"past" : "for {0} år sidan"
},
"day" : {
"previous" : "i går",
"future" : "+{0} d.",
"next" : "i morgon",
"current" : "i dag",
"past" : "{0} d."
},
"month" : {
"current" : "denne månaden",
"future" : "+{0} md.",
"past" : "{0} md.",
"next" : "neste månad",
"previous" : "førre månad"
},
"now" : "no",
"second" : {
"past" : {
"one" : "{0} s",
"other" : "{0} s"
},
"future" : "+{0} s",
"current" : "no"
},
"minute" : {
"current" : "dette minuttet",
"past" : "{0} min",
"future" : "+{0} min"
},
"week" : {
"past" : "{0} v.",
"previous" : "førre veke",
"future" : "+{0} v.",
"current" : "denne veka",
"next" : "neste veke"
}
},
"long" : {
"week" : {
"future" : {
"other" : "om {0} veker",
"one" : "om {0} veke"
},
"past" : {
"one" : "for {0} veke sidan",
"other" : "for {0} veker sidan"
},
"next" : "neste veke",
"previous" : "førre veke",
"current" : "denne veka"
},
"day" : {
"future" : "om {0} døgn",
"previous" : "i går",
"current" : "i dag",
"next" : "i morgon",
"past" : "for {0} døgn sidan"
},
"hour" : {
"past" : {
"one" : "for {0} time sidan",
"other" : "for {0} timar sidan"
},
"current" : "denne timen",
"future" : {
"one" : "om {0} time",
"other" : "om {0} timar"
}
},
"minute" : {
"future" : "om {0} minutt",
"current" : "dette minuttet",
"past" : "for {0} minutt sidan"
},
"now" : "no",
"month" : {
"past" : {
"other" : "for {0} månadar sidan",
"one" : "for {0} månad sidan"
},
"current" : "denne månaden",
"next" : "neste månad",
"previous" : "førre månad",
"future" : {
"one" : "om {0} månad",
"other" : "om {0} månadar"
}
},
"quarter" : {
"next" : "neste kvartal",
"past" : "for {0} kvartal sidan",
"future" : "om {0} kvartal",
"previous" : "førre kvartal",
"current" : "dette kvartalet"
},
"second" : {
"current" : "no",
"past" : "for {0} sekund sidan",
"future" : {
"one" : "om {0} sekund",
"other" : "om {0} sekund"
}
},
"year" : {
"future" : "om {0} år",
"previous" : "i fjor",
"next" : "neste år",
"past" : "for {0} år sidan",
"current" : "i år"
}
},
"short" : {
"second" : {
"current" : "no",
"past" : "for {0} sek sidan",
"future" : "om {0} sek"
},
"now" : "no",
"month" : {
"future" : "om {0} md.",
"current" : "denne månaden",
"past" : "for {0} md. sidan",
"previous" : "førre månad",
"next" : "neste månad"
},
"day" : {
"previous" : "i går",
"current" : "i dag",
"next" : "i morgon",
"future" : "om {0} d.",
"past" : "for {0} d. sidan"
},
"minute" : {
"past" : "for {0} min sidan",
"future" : "om {0} min",
"current" : "dette minuttet"
},
"quarter" : {
"past" : "for {0} kv. sidan",
"previous" : "førre kvartal",
"current" : "dette kvartalet",
"future" : "om {0} kv.",
"next" : "neste kvartal"
},
"hour" : {
"future" : "om {0} t",
"current" : "denne timen",
"past" : "for {0} t sidan"
},
"week" : {
"future" : "om {0} v.",
"previous" : "førre veke",
"next" : "neste veke",
"past" : "for {0} v. sidan",
"current" : "denne veka"
},
"year" : {
"next" : "neste år",
"current" : "i år",
"past" : "for {0} år sidan",
"future" : "om {0} år",
"previous" : "i fjor"
}
}
}

View File

@@ -0,0 +1,164 @@
{
"narrow" : {
"day" : {
"next" : "ଆସନ୍ତାକାଲି",
"future" : "{0} ଦିନରେ",
"previous" : "ଗତକାଲି",
"current" : "ଆଜି",
"past" : "{0} ଦିନ ପୂର୍ବେ"
},
"quarter" : {
"next" : "ଆଗାମୀ ତ୍ରୟମାସ",
"past" : "{0} ତ୍ରୟ. ପୂର୍ବେ",
"future" : "{0} ତ୍ରୟ. ରେ",
"previous" : "ଗତ ତ୍ରୟମାସ",
"current" : "ଗତ ତ୍ରୟମାସ"
},
"hour" : {
"past" : "{0} ଘ. ପୂର୍ବେ",
"future" : "{0} ଘ. ରେ",
"current" : "ଏହି ଘଣ୍ଟା"
},
"year" : {
"next" : "ଆଗାମୀ ବର୍ଷ",
"past" : "{0} ବ. ପୂର୍ବେ",
"current" : "ଏହି ବର୍ଷ",
"previous" : "ଗତ ବର୍ଷ",
"future" : "{0} ବ. ରେ"
},
"now" : "ବର୍ତ୍ତମାନ",
"month" : {
"current" : "ଏହି ମାସ",
"future" : "{0} ମା. ରେ",
"past" : "{0} ମା. ପୂର୍ବେ",
"next" : "ଆଗାମୀ ମାସ",
"previous" : "ଗତ ମାସ"
},
"week" : {
"previous" : "ଗତ ସପ୍ତାହ",
"current" : "ଏହି ସପ୍ତାହ",
"past" : "{0} ସପ୍ତା. ପୂର୍ବେ",
"future" : "{0} ସପ୍ତା. ରେ",
"next" : "ଆଗାମୀ ସପ୍ତାହ"
},
"minute" : {
"future" : "{0} ମି. ରେ",
"current" : "ଏହି ମିନିଟ୍",
"past" : "{0} ମି. ପୂର୍ବେ"
},
"second" : {
"past" : "{0} ସେ. ପୂର୍ବେ",
"future" : "{0} ସେ. ରେ",
"current" : "ବର୍ତ୍ତମାନ"
}
},
"long" : {
"now" : "ବର୍ତ୍ତମାନ",
"hour" : {
"current" : "ଏହି ଘଣ୍ଟା",
"past" : "{0} ଘଣ୍ଟା ପୂର୍ବେ",
"future" : "{0} ଘଣ୍ଟାରେ"
},
"quarter" : {
"past" : "{0} ତ୍ରୟମାସ ପୂର୍ବେ",
"current" : "ଗତ ତ୍ରୟମାସ",
"previous" : "ଗତ ତ୍ରୟମାସ",
"future" : "{0} ତ୍ରୟମାସରେ",
"next" : "ଆଗାମୀ ତ୍ରୟମାସ"
},
"second" : {
"current" : "ବର୍ତ୍ତମାନ",
"past" : "{0} ସେକେଣ୍ଡ ପୂର୍ବେ",
"future" : "{0} ସେକେଣ୍ଡରେ"
},
"month" : {
"future" : "{0} ମାସରେ",
"next" : "ଆଗାମୀ ମାସ",
"previous" : "ଗତ ମାସ",
"current" : "ଏହି ମାସ",
"past" : "{0} ମାସ ପୂର୍ବେ"
},
"minute" : {
"future" : "{0} ମିନିଟ୍‌‌ରେ",
"current" : "ଏହି ମିନିଟ୍",
"past" : "{0} ମିନିଟ୍ ପୂର୍ବେ"
},
"day" : {
"next" : "ଆସନ୍ତାକାଲି",
"current" : "ଆଜି",
"future" : "{0} ଦିନରେ",
"previous" : "ଗତକାଲି",
"past" : "{0} ଦିନ ପୂର୍ବେ"
},
"week" : {
"future" : "{0} ସପ୍ତାହରେ",
"current" : "ଏହି ସପ୍ତାହ",
"next" : "ଆଗାମୀ ସପ୍ତାହ",
"past" : {
"other" : "{0} ସପ୍ତାହ ପୂର୍ବେ",
"one" : "{0} ସପ୍ତାହରେ"
},
"previous" : "ଗତ ସପ୍ତାହ"
},
"year" : {
"past" : "{0} ବର୍ଷ ପୂର୍ବେ",
"future" : "{0} ବର୍ଷରେ",
"previous" : "ଗତ ବର୍ଷ",
"next" : "ଆଗାମୀ ବର୍ଷ",
"current" : "ଏହି ବର୍ଷ"
}
},
"short" : {
"quarter" : {
"future" : "{0} ତ୍ରୟ. ରେ",
"next" : "ଆଗାମୀ ତ୍ରୟମାସ",
"previous" : "ଗତ ତ୍ରୟମାସ",
"current" : "ଗତ ତ୍ରୟମାସ",
"past" : "{0} ତ୍ରୟ. ପୂର୍ବେ"
},
"minute" : {
"future" : "{0} ମି. ରେ",
"current" : "ଏହି ମିନିଟ୍",
"past" : "{0} ମି. ପୂର୍ବେ"
},
"year" : {
"next" : "ଆଗାମୀ ବର୍ଷ",
"future" : "{0} ବ. ରେ",
"current" : "ଏହି ବର୍ଷ",
"past" : "{0} ବ. ପୂର୍ବେ",
"previous" : "ଗତ ବର୍ଷ"
},
"second" : {
"future" : "{0} ସେ. ରେ",
"current" : "ବର୍ତ୍ତମାନ",
"past" : "{0} ସେ. ପୂର୍ବେ"
},
"hour" : {
"past" : "{0} ଘ. ପୂର୍ବେ",
"current" : "ଏହି ଘଣ୍ଟା",
"future" : "{0} ଘ. ରେ"
},
"now" : "ବର୍ତ୍ତମାନ",
"month" : {
"previous" : "ଗତ ମାସ",
"next" : "ଆଗାମୀ ମାସ",
"past" : "{0} ମା. ପୂର୍ବେ",
"current" : "ଏହି ମାସ",
"future" : "{0} ମା. ରେ"
},
"week" : {
"previous" : "ଗତ ସପ୍ତାହ",
"current" : "ଏହି ସପ୍ତାହ",
"next" : "ଆଗାମୀ ସପ୍ତାହ",
"past" : "{0} ସପ୍ତା. ପୂର୍ବେ",
"future" : "{0} ସପ୍ତା. ରେ"
},
"day" : {
"next" : "ଆସନ୍ତାକାଲି",
"past" : "{0} ଦିନ ପୂର୍ବେ",
"future" : "{0} ଦିନରେ",
"previous" : "ଗତକାଲି",
"current" : "ଆଜି"
}
}
}

View File

@@ -0,0 +1,263 @@
{
"narrow" : {
"quarter" : {
"past" : "{0} ਤਿਮਾਹੀਆਂ ਪਹਿਲਾਂ",
"current" : "ਇਹ ਤਿਮਾਹੀ",
"next" : "ਅਗਲੀ ਤਿਮਾਹੀ",
"future" : "{0} ਤਿਮਾਹੀਆਂ ਵਿੱਚ",
"previous" : "ਪਿਛਲੀ ਤਿਮਾਹੀ"
},
"week" : {
"next" : "ਅਗਲਾ ਹਫ਼ਤਾ",
"future" : {
"other" : "{0} ਹਫ਼ਤਿਆਂ ਵਿੱਚ",
"one" : "{0} ਹਫ਼ਤੇ ਵਿੱਚ"
},
"previous" : "ਪਿਛਲਾ ਹਫ਼ਤਾ",
"current" : "ਇਹ ਹਫ਼ਤਾ",
"past" : {
"one" : "{0} ਹਫ਼ਤਾ ਪਹਿਲਾਂ",
"other" : "{0} ਹਫ਼ਤੇ ਪਹਿਲਾਂ"
}
},
"hour" : {
"current" : "ਇਸ ਘੰਟੇ",
"past" : {
"one" : "{0} ਘੰਟਾ ਪਹਿਲਾਂ",
"other" : "{0} ਘੰਟੇ ਪਹਿਲਾਂ"
},
"future" : {
"other" : "{0} ਘੰਟਿਆਂ ਵਿੱਚ",
"one" : "{0} ਘੰਟੇ ਵਿੱਚ"
}
},
"now" : "ਹੁਣ",
"day" : {
"past" : "{0} ਦਿਨ ਪਹਿਲਾਂ",
"future" : {
"one" : "{0} ਦਿਨ ਵਿੱਚ",
"other" : "{0} ਦਿਨਾਂ ਵਿੱਚ"
},
"previous" : "ਬੀਤਿਆ ਕੱਲ੍ਹ",
"current" : "ਅੱਜ",
"next" : "ਭਲਕੇ"
},
"minute" : {
"current" : "ਇਸ ਮਿੰਟ",
"past" : "{0} ਮਿੰਟ ਪਹਿਲਾਂ",
"future" : {
"one" : "{0} ਮਿੰਟ ਵਿੱਚ",
"other" : "{0} ਮਿੰਟਾਂ ਵਿੱਚ"
}
},
"month" : {
"current" : "ਇਹ ਮਹੀਨਾ",
"future" : {
"one" : "{0} ਮਹੀਨੇ ਵਿੱਚ",
"other" : "{0} ਮਹੀਨਿਆਂ ਵਿੱਚ"
},
"past" : {
"other" : "{0} ਮਹੀਨੇ ਪਹਿਲਾਂ",
"one" : "{0} ਮਹੀਨਾ ਪਹਿਲਾਂ"
},
"next" : "ਅਗਲਾ ਮਹੀਨਾ",
"previous" : "ਪਿਛਲਾ ਮਹੀਨਾ"
},
"year" : {
"past" : "{0} ਸਾਲ ਪਹਿਲਾਂ",
"future" : {
"one" : "{0} ਸਾਲ ਵਿੱਚ",
"other" : "{0} ਸਾਲਾਂ ਵਿੱਚ"
},
"next" : "ਅਗਲਾ ਸਾਲ",
"current" : "ਇਹ ਸਾਲ",
"previous" : "ਪਿਛਲਾ ਸਾਲ"
},
"second" : {
"future" : {
"other" : "{0} ਸਕਿੰਟਾਂ ਵਿੱਚ",
"one" : "{0} ਸਕਿੰਟ ਵਿੱਚ"
},
"current" : "ਹੁਣ",
"past" : "{0} ਸਕਿੰਟ ਪਹਿਲਾਂ"
}
},
"long" : {
"hour" : {
"current" : "ਇਸ ਘੰਟੇ",
"past" : {
"one" : "{0} ਘੰਟਾ ਪਹਿਲਾਂ",
"other" : "{0} ਘੰਟੇ ਪਹਿਲਾਂ"
},
"future" : {
"other" : "{0} ਘੰਟਿਆਂ ਵਿੱਚ",
"one" : "{0} ਘੰਟੇ ਵਿੱਚ"
}
},
"now" : "ਹੁਣ",
"quarter" : {
"previous" : "ਪਿਛਲੀ ਤਿਮਾਹੀ",
"future" : {
"other" : "{0} ਤਿਮਾਹੀਆਂ ਵਿੱਚ",
"one" : "{0} ਤਿਮਾਹੀ ਵਿੱਚ"
},
"next" : "ਅਗਲੀ ਤਿਮਾਹੀ",
"past" : {
"one" : "{0} ਤਿਮਾਹੀ ਪਹਿਲਾਂ",
"other" : "{0} ਤਿਮਾਹੀਆਂ ਪਹਿਲਾਂ"
},
"current" : "ਇਸ ਤਿਮਾਹੀ"
},
"day" : {
"future" : {
"other" : "{0} ਦਿਨਾਂ ਵਿੱਚ",
"one" : "{0} ਦਿਨ ਵਿੱਚ"
},
"current" : "ਅੱਜ",
"past" : "{0} ਦਿਨ ਪਹਿਲਾਂ",
"previous" : "ਬੀਤਿਆ ਕੱਲ੍ਹ",
"next" : "ਭਲਕੇ"
},
"week" : {
"previous" : "ਪਿਛਲਾ ਹਫ਼ਤਾ",
"past" : {
"one" : "{0} ਹਫ਼ਤਾ ਪਹਿਲਾਂ",
"other" : "{0} ਹਫ਼ਤੇ ਪਹਿਲਾਂ"
},
"current" : "ਇਹ ਹਫ਼ਤਾ",
"next" : "ਅਗਲਾ ਹਫ਼ਤਾ",
"future" : {
"one" : "{0} ਹਫ਼ਤੇ ਵਿੱਚ",
"other" : "{0} ਹਫ਼ਤਿਆਂ ਵਿੱਚ"
}
},
"minute" : {
"past" : "{0} ਮਿੰਟ ਪਹਿਲਾਂ",
"current" : "ਇਸ ਮਿੰਟ",
"future" : {
"other" : "{0} ਮਿੰਟਾਂ ਵਿੱਚ",
"one" : "{0} ਮਿੰਟ ਵਿੱਚ"
}
},
"second" : {
"past" : "{0} ਸਕਿੰਟ ਪਹਿਲਾਂ",
"future" : {
"other" : "{0} ਸਕਿੰਟਾਂ ਵਿੱਚ",
"one" : "{0} ਸਕਿੰਟ ਵਿੱਚ"
},
"current" : "ਹੁਣ"
},
"month" : {
"past" : {
"other" : "{0} ਮਹੀਨੇ ਪਹਿਲਾਂ",
"one" : "{0} ਮਹੀਨਾ ਪਹਿਲਾਂ"
},
"next" : "ਅਗਲਾ ਮਹੀਨਾ",
"future" : {
"one" : "{0} ਮਹੀਨੇ ਵਿੱਚ",
"other" : "{0} ਮਹੀਨਿਆਂ ਵਿੱਚ"
},
"previous" : "ਪਿਛਲਾ ਮਹੀਨਾ",
"current" : "ਇਹ ਮਹੀਨਾ"
},
"year" : {
"current" : "ਇਹ ਸਾਲ",
"future" : {
"other" : "{0} ਸਾਲਾਂ ਵਿੱਚ",
"one" : "{0} ਸਾਲ ਵਿੱਚ"
},
"previous" : "ਪਿਛਲਾ ਸਾਲ",
"next" : "ਅਗਲਾ ਸਾਲ",
"past" : "{0} ਸਾਲ ਪਹਿਲਾਂ"
}
},
"short" : {
"month" : {
"next" : "ਅਗਲਾ ਮਹੀਨਾ",
"current" : "ਇਹ ਮਹੀਨਾ",
"previous" : "ਪਿਛਲਾ ਮਹੀਨਾ",
"past" : {
"one" : "{0} ਮਹੀਨਾ ਪਹਿਲਾਂ",
"other" : "{0} ਮਹੀਨੇ ਪਹਿਲਾਂ"
},
"future" : {
"other" : "{0} ਮਹੀਨਿਆਂ ਵਿੱਚ",
"one" : "{0} ਮਹੀਨੇ ਵਿੱਚ"
}
},
"now" : "ਹੁਣ",
"week" : {
"previous" : "ਪਿਛਲਾ ਹਫ਼ਤਾ",
"current" : "ਇਹ ਹਫ਼ਤਾ",
"past" : {
"one" : "{0} ਹਫ਼ਤਾ ਪਹਿਲਾਂ",
"other" : "{0} ਹਫ਼ਤੇ ਪਹਿਲਾਂ"
},
"future" : {
"one" : "{0} ਹਫ਼ਤੇ ਵਿੱਚ",
"other" : "{0} ਹਫ਼ਤਿਆਂ ਵਿੱਚ"
},
"next" : "ਅਗਲਾ ਹਫ਼ਤਾ"
},
"day" : {
"future" : {
"other" : "{0} ਦਿਨਾਂ ਵਿੱਚ",
"one" : "{0} ਦਿਨ ਵਿੱਚ"
},
"previous" : "ਬੀਤਿਆ ਕੱਲ੍ਹ",
"current" : "ਅੱਜ",
"next" : "ਭਲਕੇ",
"past" : "{0} ਦਿਨ ਪਹਿਲਾਂ"
},
"year" : {
"previous" : "ਪਿਛਲਾ ਸਾਲ",
"current" : "ਇਹ ਸਾਲ",
"next" : "ਅਗਲਾ ਸਾਲ",
"past" : "{0} ਸਾਲ ਪਹਿਲਾਂ",
"future" : {
"other" : "{0} ਸਾਲਾਂ ਵਿੱਚ",
"one" : "{0} ਸਾਲ ਵਿੱਚ"
}
},
"hour" : {
"past" : {
"other" : "{0} ਘੰਟੇ ਪਹਿਲਾਂ",
"one" : "{0} ਘੰਟਾ ਪਹਿਲਾਂ"
},
"future" : {
"one" : "{0} ਘੰਟੇ ਵਿੱਚ",
"other" : "{0} ਘੰਟਿਆਂ ਵਿੱਚ"
},
"current" : "ਇਸ ਘੰਟੇ"
},
"minute" : {
"current" : "ਇਸ ਮਿੰਟ",
"past" : "{0} ਮਿੰਟ ਪਹਿਲਾਂ",
"future" : {
"one" : "{0} ਮਿੰਟ ਵਿੱਚ",
"other" : "{0} ਮਿੰਟਾਂ ਵਿੱਚ"
}
},
"second" : {
"future" : {
"one" : "{0} ਸਕਿੰਟ ਵਿੱਚ",
"other" : "{0} ਸਕਿੰਟਾਂ ਵਿੱਚ"
},
"past" : "{0} ਸਕਿੰਟ ਪਹਿਲਾਂ",
"current" : "ਹੁਣ"
},
"quarter" : {
"next" : "ਅਗਲੀ ਤਿਮਾਹੀ",
"past" : {
"one" : "{0} ਤਿਮਾਹੀ ਪਹਿਲਾਂ",
"other" : "{0} ਤਿਮਾਹੀਆਂ ਪਹਿਲਾਂ"
},
"current" : "ਇਹ ਤਿਮਾਹੀ",
"previous" : "ਪਿਛਲੀ ਤਿਮਾਹੀ",
"future" : {
"one" : "{0} ਤਿਮਾਹੀ ਵਿੱਚ",
"other" : "{0} ਤਿਮਾਹੀਆਂ ਵਿੱਚ"
}
}
}
}

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