<?php

/**
 * This file is part of the Carbon package.
 *
 * (c) Brian Nesbitt <brian@nesbot.com>
 *
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @translator Batmandakh Erdenebileg <batmandakh.e@icloud.com>
 */

/*
 * Authors:
 * - Philippe Vaucher
 * - Tsutomu Kuroda
 * - tjku
 * - Max Melentiev
 * - Zolzaya Erdenebaatar
 * - Tom Hughes
 * - Akira Matsuda
 * - Christopher Dell
 * - Michael Kessler
 * - Enrique Vidal
 * - Simone Carletti
 * - Aaron Patterson
 * - Nicolás Hock Isaza
 * - Ochirkhuyag
 * - Batmandakh
 */
return [
    'year' => ':count жил',
    'y' => ':count жил',
    'month' => ':count сар',
    'm' => ':count сар',
    'week' => ':count долоо хоног',
    'w' => ':count долоо хоног',
    'day' => ':count өдөр',
    'd' => ':count өдөр',
    'hour' => ':count цаг',
    'h' => ':countц',
    'minute' => ':count минут',
    'min' => ':countм',
    'second' => ':count секунд',
    's' => ':countс',

    'ago' => ':timeн өмнө',
    'year_ago' => ':count жилий',
    'month_ago' => ':count сары',
    'day_ago' => ':count хоногий',
    'hour_ago' => ':count цагий',
    'minute_ago' => ':count минуты',
    'second_ago' => ':count секунды',

    'from_now' => 'одоогоос :time',
    'year_from_now' => ':count жилийн дараа',
    'month_from_now' => ':count сарын дараа',
    'day_from_now' => ':count хоногийн дараа',
    'hour_from_now' => ':count цагийн дараа',
    'minute_from_now' => ':count минутын дараа',
    'second_from_now' => ':count секундын дараа',

    // Does it required to make translation for before, after as follows? hmm, I think we've made it with ago and from now keywords already. Anyway, I've included it just in case of undesired action...
    'after' => ':timeн дараа',
    'year_after' => ':count жилий',
    'month_after' => ':count сары',
    'day_after' => ':count хоногий',
    'hour_after' => ':count цагий',
    'minute_after' => ':count минуты',
    'second_after' => ':count секунды',

    'before' => ':timeн өмнө',
    'year_before' => ':count жилий',
    'month_before' => ':count сары',
    'day_before' => ':count хоногий',
    'hour_before' => ':count цагий',
    'minute_before' => ':count минуты',
    'second_before' => ':count секунды',

    'list' => ', ',
    'diff_now' => 'одоо',
    'diff_yesterday' => 'өчигдөр',
    'diff_tomorrow' => 'маргааш',
    'formats' => [
        'LT' => 'HH:mm',
        'LTS' => 'HH:mm:ss',
        'L' => 'YYYY-MM-DD',
        'LL' => 'YYYY MMMM DD',
        'LLL' => 'YY-MM-DD, HH:mm',
        'LLLL' => 'YYYY MMMM DD, HH:mm',
    ],
    'weekdays' => ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'],
    'weekdays_short' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
    'weekdays_min' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
    'months' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'],
    'months_short' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'],
    'meridiem' => ['өглөө', 'орой'],
    'first_day_of_week' => 1,
];
