Initial import

This commit is contained in:
Peter 2019-07-23 14:33:29 +02:00
commit 142361f5b4
Signed by: pludi
GPG Key ID: FB1A00FEE77E2C36
494 changed files with 71136 additions and 0 deletions

2
_data/.htaccess Normal file
View File

@ -0,0 +1,2 @@
Satisfy Any
Deny from all

3
_data/calendar.json Normal file
View File

@ -0,0 +1,3 @@
{ "calendar":[
{ "date":"2018-05-17", "link":"https://usrspace.at/w/index.php?title=Stammtisch_2018-05-17", "name":"Stammtisch" }
]}

2
_include/.htaccess Normal file
View File

@ -0,0 +1,2 @@
Satisfy Any
Deny from all

56
_include/calendar.inc.php Normal file
View File

@ -0,0 +1,56 @@
<?php
//require_once "_include/calendar/autoload.php";
function gen_calendar_header()
{
$months = array(1 => "Jänner", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
$today = date("w") ; // 0 = Sonntag
if ($today == 0) $today = 7;
// Zeitraum 5 Wochen
$first_day = strtotime("-1 week") - ((60*60*24)*($today-1)) ; // Erster Montag
$last_day = strtotime("+3 weeks") + ((60*60*24)*(7-$today)) ; // letzter Sonntag
if (date("F", $first_day) != date("F", $last_day)) { // 2 Monate
return $months[date("n", $first_day)] . " - " . $months[date("n", $last_day)] . date(" Y", $last_day) ;
} else {
return $months[date("F", $first_day)] . date(" Y", $first_day) ;
}
}
function gen_calendar_content()
{
$today = date("w") ; // 0 = Sonntag
if ($today == 0) $today = 7;
// Zeitraum 5 Wochen
$first_day = strtotime("-1 week") - ((60*60*24)*($today-1)) ; // Erster Montag
$last_day = strtotime("+3 weeks") + ((60*60*24)*(7-$today)) ; // letzter Sonntag
$output = "";
$day = $first_day;
for ($w = 0; $w < 5; $w++) {
$output .= "<tr>";
for ($d = 0; $d < 7; $d++) {
if (date("Y-m-d", $day) == date("Y-m-d", time())) {
$output .= '<td class="cal_today">'.date("d",$day)."</td>";
} else {
$output .= "<td>".date("d",$day)."</td>";
}
$day = $day + (60*60*24);
}
$output .= "</tr>\n";
}
return $output;
}
function check_for_event($events, $date)
{
foreach ( $events as $event ) {
if (date("Y-m-d", $event->dtstart_array[2]) == date("Y-m-d", $date)) {
return $event->summary;
}
}
return false;
}
?>

View File

@ -0,0 +1,7 @@
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitd8636b9e4362b54727922ecd718fad8c::getLoader();

View File

@ -0,0 +1,445 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Autoload;
/**
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
* // register classes with namespaces
* $loader->add('Symfony\Component', __DIR__.'/component');
* $loader->add('Symfony', __DIR__.'/framework');
*
* // activate the autoloader
* $loader->register();
*
* // to enable searching the include path (eg. for PEAR packages)
* $loader->setUseIncludePath(true);
*
* In this example, if you try to use a class in the Symfony\Component
* namespace or one of its children (Symfony\Component\Console for instance),
* the autoloader will first look for the class under the component/
* directory, and it will then fallback to the framework/ directory if not
* found before giving up.
*
* This class is loosely based on the Symfony UniversalClassLoader.
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
* @see http://www.php-fig.org/psr/psr-0/
* @see http://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
// PSR-4
private $prefixLengthsPsr4 = array();
private $prefixDirsPsr4 = array();
private $fallbackDirsPsr4 = array();
// PSR-0
private $prefixesPsr0 = array();
private $fallbackDirsPsr0 = array();
private $useIncludePath = false;
private $classMap = array();
private $classMapAuthoritative = false;
private $missingClasses = array();
private $apcuPrefix;
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', $this->prefixesPsr0);
}
return array();
}
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
public function getClassMap()
{
return $this->classMap;
}
/**
* @param array $classMap Class to filename map
*/
public function addClassMap(array $classMap)
{
if ($this->classMap) {
$this->classMap = array_merge($this->classMap, $classMap);
} else {
$this->classMap = $classMap;
}
}
/**
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
*/
public function add($prefix, $paths, $prepend = false)
{
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
(array) $paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
(array) $paths
);
}
return;
}
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
(array) $paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
(array) $paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
// Register directories for a new namespace.
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
(array) $paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 base directories
*/
public function set($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr0 = (array) $paths;
} else {
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
}
}
/**
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
*/
public function setPsr4($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr4 = (array) $paths;
} else {
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
}
}
/**
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
*/
public function setUseIncludePath($useIncludePath)
{
$this->useIncludePath = $useIncludePath;
}
/**
* Can be used to check if the autoloader uses the include path to check
* for classes.
*
* @return bool
*/
public function getUseIncludePath()
{
return $this->useIncludePath;
}
/**
* Turns off searching the prefix and fallback directories for classes
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
$this->classMapAuthoritative = $classMapAuthoritative;
}
/**
* Should class lookup fail if not found in the current class map?
*
* @return bool
*/
public function isClassMapAuthoritative()
{
return $this->classMapAuthoritative;
}
/**
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
*/
public function setApcuPrefix($apcuPrefix)
{
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
}
/**
* The APCu prefix in use, or null if APCu caching is not enabled.
*
* @return string|null
*/
public function getApcuPrefix()
{
return $this->apcuPrefix;
}
/**
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
}
/**
* Unregisters this instance as an autoloader.
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return bool|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
includeFile($file);
return true;
}
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
return false;
}
if (null !== $this->apcuPrefix) {
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
if ($hit) {
return $file;
}
}
$file = $this->findFileWithExtension($class, '.php');
// Search for Hack files if we are running on HHVM
if (false === $file && defined('HHVM_VERSION')) {
$file = $this->findFileWithExtension($class, '.hh');
}
if (null !== $this->apcuPrefix) {
apcu_add($this->apcuPrefix.$class, $file);
}
if (false === $file) {
// Remember that this class does not exist.
$this->missingClasses[$class] = true;
}
return $file;
}
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
$first = $class[0];
if (isset($this->prefixLengthsPsr4[$first])) {
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
}
}
}
// PSR-4 fallback dirs
foreach ($this->fallbackDirsPsr4 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
return $file;
}
}
// PSR-0 lookup
if (false !== $pos = strrpos($class, '\\')) {
// namespaced class name
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
} else {
// PEAR-like class name
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
}
if (isset($this->prefixesPsr0[$first])) {
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
if (0 === strpos($class, $prefix)) {
foreach ($dirs as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
}
}
}
// PSR-0 fallback dirs
foreach ($this->fallbackDirsPsr0 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
// PSR-0 include paths.
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
return $file;
}
return false;
}
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*/
function includeFile($file)
{
include $file;
}

View File

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

View File

@ -0,0 +1,9 @@
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);

View File

@ -0,0 +1,10 @@
<?php
// autoload_files.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
);

View File

@ -0,0 +1,10 @@
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'ICal' => array($vendorDir . '/johngrogg/ics-parser/src'),
);

View File

@ -0,0 +1,12 @@
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
'' => array($vendorDir . '/nesbot/carbon/src'),
);

View File

@ -0,0 +1,70 @@
<?php
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitd8636b9e4362b54727922ecd718fad8c
{
private static $loader;
public static function loadClassLoader($class)
{
if ('Composer\Autoload\ClassLoader' === $class) {
require __DIR__ . '/ClassLoader.php';
}
}
public static function getLoader()
{
if (null !== self::$loader) {
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitd8636b9e4362b54727922ecd718fad8c', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitd8636b9e4362b54727922ecd718fad8c', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitd8636b9e4362b54727922ecd718fad8c::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
}
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInitd8636b9e4362b54727922ecd718fad8c::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequired8636b9e4362b54727922ecd718fad8c($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequired8636b9e4362b54727922ecd718fad8c($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}

View File

@ -0,0 +1,56 @@
<?php
// autoload_static.php @generated by Composer
namespace Composer\Autoload;
class ComposerStaticInitd8636b9e4362b54727922ecd718fad8c
{
public static $files = array (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
);
public static $prefixLengthsPsr4 = array (
'S' =>
array (
'Symfony\\Polyfill\\Mbstring\\' => 26,
'Symfony\\Component\\Translation\\' => 30,
),
);
public static $prefixDirsPsr4 = array (
'Symfony\\Polyfill\\Mbstring\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
),
'Symfony\\Component\\Translation\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/translation',
),
);
public static $fallbackDirsPsr4 = array (
0 => __DIR__ . '/..' . '/nesbot/carbon/src',
);
public static $prefixesPsr0 = array (
'I' =>
array (
'ICal' =>
array (
0 => __DIR__ . '/..' . '/johngrogg/ics-parser/src',
),
),
);
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitd8636b9e4362b54727922ecd718fad8c::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitd8636b9e4362b54727922ecd718fad8c::$prefixDirsPsr4;
$loader->fallbackDirsPsr4 = ComposerStaticInitd8636b9e4362b54727922ecd718fad8c::$fallbackDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInitd8636b9e4362b54727922ecd718fad8c::$prefixesPsr0;
}, null, ClassLoader::class);
}
}

View File

@ -0,0 +1,253 @@
[
{
"name": "johngrogg/ics-parser",
"version": "v2.1.5",
"version_normalized": "2.1.5.0",
"source": {
"type": "git",
"url": "https://github.com/u01jmg3/ics-parser.git",
"reference": "ffd1788215b19da9813420935715b2bb7919b88e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/u01jmg3/ics-parser/zipball/ffd1788215b19da9813420935715b2bb7919b88e",
"reference": "ffd1788215b19da9813420935715b2bb7919b88e",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"nesbot/carbon": "~1.28",
"php": ">=5.3.0"
},
"require-dev": {
"squizlabs/php_codesniffer": "~2.9.1"
},
"time": "2018-05-24T14:12:00+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
"ICal": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Martin Thoma",
"email": "info@martin-thoma.de",
"role": "Original Developer"
},
{
"name": "John Grogg",
"email": "john.grogg@gmail.com",
"role": "Developer/Prior Owner"
},
{
"name": "Jonathan Goode",
"role": "Developer/Owner"
}
],
"description": "ICS Parser",
"homepage": "https://github.com/u01jmg3/ics-parser",
"keywords": [
"iCalendar",
"ical",
"ical-parser",
"ics",
"ics-parser",
"ifb"
]
},
{
"name": "nesbot/carbon",
"version": "1.34.0",
"version_normalized": "1.34.0.0",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
"reference": "1dbd3cb01c5645f3e7deda7aa46ef780d95fcc33"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/1dbd3cb01c5645f3e7deda7aa46ef780d95fcc33",
"reference": "1dbd3cb01c5645f3e7deda7aa46ef780d95fcc33",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"symfony/translation": "~2.6 || ~3.0 || ~4.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2",
"phpunit/phpunit": "^4.8.35 || ^5.7"
},
"time": "2018-09-20T19:36:25+00:00",
"type": "library",
"extra": {
"laravel": {
"providers": [
"Carbon\\Laravel\\ServiceProvider"
]
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Brian Nesbitt",
"email": "brian@nesbot.com",
"homepage": "http://nesbot.com"
}
],
"description": "A simple API extension for DateTime.",
"homepage": "http://carbon.nesbot.com",
"keywords": [
"date",
"datetime",
"time"
]
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.9.0",
"version_normalized": "1.9.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
"reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"time": "2018-08-06T14:22:27+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
]
},
{
"name": "symfony/translation",
"version": "v4.1.6",
"version_normalized": "4.1.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "9f0b61e339160a466ebcde167a6c5521c810e304"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/9f0b61e339160a466ebcde167a6c5521c810e304",
"reference": "9f0b61e339160a466ebcde167a6c5521c810e304",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/config": "<3.4",
"symfony/dependency-injection": "<3.4",
"symfony/yaml": "<3.4"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~3.4|~4.0",
"symfony/console": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4|~4.0",
"symfony/finder": "~2.8|~3.0|~4.0",
"symfony/intl": "~3.4|~4.0",
"symfony/yaml": "~3.4|~4.0"
},
"suggest": {
"psr/log-implementation": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
},
"time": "2018-10-02T16:36:10+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.1-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\Translation\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com"
}
]

View File

@ -0,0 +1,11 @@
# https://editorconfig.org/
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

View File

@ -0,0 +1,17 @@
## Contributing
ICS Parser is an open source project. It is licensed under the [MIT license](https://opensource.org/licenses/MIT).
We appreciate pull requests, here are our guidelines:
1. Firstly, check if your issue is present within the latest version (`dev-master`) as the problem may already have been fixed.
1. Log a bug in our [issue tracker](https://github.com/u01jmg3/ics-parser/issues) (if there isn't one already).
- If your patch is going to be large it might be a good idea to get the discussion started early.
- We are happy to discuss it in an issue beforehand.
- If you could provide an iCal snippet causing the parser to behave incorrectly it is extremely useful for debugging
- Please remove all irrelevant events
1. Please follow the coding standard already present in the file you are editing _before_ committing
- Adhere to the [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) coding standard
- Use *4 spaces* instead of tabs for indentation
- Trim all trailing whitespace and blank lines
- Use single quotes (`'`) where possible instead of double
- Abide by the [1TBS](https://en.wikipedia.org/wiki/Indent_style#Variant:_1TBS_.28OTBS.29) indentation style

View File

@ -0,0 +1,15 @@
> :information_source:
> - Firstly, check you are using the latest version (`dev-master`) as the problem may already have been fixed.
> - It is **essential** to be provided with the offending iCal causing the parser to behave incorrectly.
> - Best to upload the iCal file directly to this issue
- PHP Version: `5.#.#`
- PHP date.timezone: `[Country]/[City]`
- ICS Parser Version: `2.#.#`
- Windows/Mac/Linux
### Description of the Issue:
### Steps to Reproduce:

View File

@ -0,0 +1,9 @@
> :information_source:
> - File a bug on our [issue tracker](https://github.com/u01jmg3/ics-parser/issues) (if there isn't one already).
> - If your patch is going to be large it might be a good idea to get the discussion started early. We are happy to discuss it in a new issue beforehand.
> - Please follow the coding standards already adhered to in the file you're editing before committing
> - This includes the use of *4 spaces* over tabs for indentation
> - Trimming all trailing whitespace
> - Using single quotes (`'`) where possible
> - Using the [1TBS](https://en.wikipedia.org/wiki/Indent_style#Variant:_1TBS_.28OTBS.29) indent style
> - If a function is added or changed, please remember to update the [API documentation in the README](https://github.com/u01jmg3/ics-parser/blob/master/README.md#api)

View File

@ -0,0 +1,8 @@
# Release Checklist
- [ ] Ensure the documentation is up to date
- [ ] Push the code changes to GitHub (`git push`)
- [ ] Tag the release (`git tag v1.2.3`)
- [ ] Push the tag (`git push --tag`)
- [ ] Check [Packagist](https://packagist.org/packages/johngrogg/ics-parser) is updated
- [ ] Notify anyone who opened [an issue or PR](https://github.com/u01jmg3/ics-parser/issues?q=is%3Aopen) of the fix

View File

@ -0,0 +1,51 @@
###################
# Compiled Source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
############
# Packages #
############
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
######################
# Logs and Databases #
######################
*.log
*.sqlite
######################
# OS Generated Files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
workbench
####################
# Package Managers #
####################
auth.json
node_modules
vendor
##########
# Custom #
##########
*-report.*

View File

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

View File

@ -0,0 +1,178 @@
# PHP ICS Parser
[![Latest Stable Release](https://poser.pugx.org/johngrogg/ics-parser/v/stable.png "Latest Stable Release")](https://packagist.org/packages/johngrogg/ics-parser)
[![Total Downloads](https://poser.pugx.org/johngrogg/ics-parser/downloads.png "Total Downloads")](https://packagist.org/packages/johngrogg/ics-parser)
---
## Installation
### Requirements
- PHP 5 (≥ 5.3.0)
- [Valid ICS](https://icalendar.org/validator.html) (`.ics`, `.ical`, `.ifb`) file
- [IANA](https://www.iana.org/time-zones) or [Unicode CLDR](http://cldr.unicode.org/translation/timezones) Time Zones
### Setup
- Install [Composer](https://getcomposer.org/)
- Add the following dependency to `composer.json`
- :warning: **Note with Composer the owner is `johngrogg` and not `u01jmg3`**
- To access the latest stable branch (`v2`) use the following
- To access new features you can require [`dev-master`](https://getcomposer.org/doc/articles/aliases.md#branch-alias)
```yaml
{
"require": {
"johngrogg/ics-parser": "^2"
}
}
```
## How to use
### How to instantiate the Parser
- Using the example script as a guide, [refer to this code](https://github.com/u01jmg3/ics-parser/blob/master/examples/index.php#L1-L22)
#### What will the parser return?
- Each key/value pair from the iCal file will be parsed creating an associative array for both the calendar and every event it contains.
- Also injected will be content under `dtstart_tz` and `dtend_tz` for accessing start and end dates with time zone data applied.
- Where possible [`DateTime`](https://secure.php.net/manual/en/class.datetime.php) objects are used and returned.
```php
// Dump the whole calendar
var_dump($ical->cal);
// Dump every event
var_dump($ical->events());
```
- Also included are special `{property}_array` arrays which further resolve the contents of a key/value pair.
```php
// Dump a parsed event's start date
var_dump($event->dtstart_array);
// array (size=4)
// 0 =>
// array (size=1)
// 'TZID' => string 'America/Detroit' (length=15)
// 1 => string '20160409T090000' (length=15)
// 2 => int 1460192400
// 3 => string 'TZID=America/Detroit:20160409T090000' (length=36)
```
---
## API
### `ICal` API
#### Variables
| Name | Description | Configurable | Default Value |
|--------------------------------|---------------------------------------------------------------------|:------------------------:|-------------------------------------------------------------------------------------------|
| `$defaultSpan` | The value in years to use for indefinite, recurring events | :ballot_box_with_check: | `2` |
| `$defaultTimeZone` | Enables customisation of the default time zone | :ballot_box_with_check: | [System default](https://secure.php.net/manual/en/function.date-default-timezone-get.php) |
| `$defaultWeekStart` | The two letter representation of the first day of the week | :ballot_box_with_check: | `MO` |
| `$disableCharacterReplacement` | Toggles whether to disable all character replacement | :ballot_box_with_check: | `false` |
| `$skipRecurrence` | Toggles whether to skip the parsing of recurrence rules | :ballot_box_with_check: | `false` |
| `$useTimeZoneWithRRules` | Toggles whether to use time zone info when parsing recurrence rules | :ballot_box_with_check: | `false` |
| `$alarmCount` | Tracks the number of alarms in the current iCal feed | :heavy_multiplication_x: | N/A |
| `$cal` | The parsed calendar | :heavy_multiplication_x: | N/A |
| `$eventCount` | Tracks the number of events in the current iCal feed | :heavy_multiplication_x: | N/A |
| `$freeBusyCount` | Tracks the free/busy count in the current iCal feed | :heavy_multiplication_x: | N/A |
| `$todoCount` | Tracks the number of todos in the current iCal feed | :heavy_multiplication_x: | N/A |
#### Methods
| Method | Parameter(s) | Visibility | Description |
|---------------------------------------|------------------------------------------------------------|-------------|-------------------------------------------------------------------------------------------------------|
| `__construct` | `$files = false`, `$options = array()` | `public` | Creates the ICal object |
| `initFile` | `$file` | `protected` | Initialises lines from a file |
| `initLines` | `$lines` | `protected` | Initialises the parser using an array containing each line of iCal content |
| `initString` | `$string` | `protected` | Initialises lines from a string |
| `initUrl` | `$url` | `protected` | Initialises lines from a URL |
| `addCalendarComponentWithKeyAndValue` | `$component`, `$keyword`, `$value` | `protected` | Add one key and value pair to the `$this->cal` array |
| `calendarDescription` | - | `public` | Returns the calendar description |
| `calendarName` | - | `public` | Returns the calendar name |
| `calendarTimeZone` | `$ignoreUtc` | `public` | Returns the calendar time zone |
| `cleanData` | `$data` | `protected` | Replaces curly quotes and other special characters with their standard equivalents |
| `convertDayOrdinalToPositive` | `$dayNumber`, `$weekday`, `$timestamp` | `protected` | Converts a negative day ordinal to its equivalent positive form |
| `eventsFromInterval` | `$interval` | `public` | Returns a sorted array of events following a given string, or `false` if no events exist in the range |
| `eventsFromRange` | `$rangeStart = false`, `$rangeEnd = false` | `public` | Returns a sorted array of events in a given range, or an empty array if no events exist in the range |
| `events` | - | `public` | Returns an array of Events |
| `fileOrUrl` | `$filename` | `protected` | Reads an entire file or URL into an array |
| `freeBusyEvents` | - | `public` | Returns an array of arrays with all free/busy events |
| `hasEvents` | - | `public` | Returns a boolean value whether the current calendar has events or not |
| `iCalDateToDateTime` | `$icalDate`, `$forceTimeZone = false`, `$forceUtc = false` | `public` | Returns a `DateTime` object from an iCal date time format |
| `iCalDateToUnixTimestamp` | `$icalDate`, `$forceTimeZone = false`, `$forceUtc = false` | `public` | Returns a Unix timestamp from an iCal date time format |
| `iCalDateWithTimeZone` | `$event`, `$key`, `$format = DATE_TIME_FORMAT` | `public` | Returns a date adapted to the calendar time zone depending on the event `TZID` |
| `isExdateMatch` | `$exdate`, `$anEvent`, `$recurringOffset` | `protected` | Checks if an excluded date matches a given date by reconciling time zones |
| `isFileOrUrl` | `$filename` | `protected` | Checks if a filename exists as a file or URL |
| `isValidDate` | `$value` | `public` | Checks if a date string is a valid date |
| `isValidTimeZoneId` | `$timeZone` | `protected` | Checks if a time zone is valid (IANA or CLDR) |
| `isValidIanaTimeZoneId` | `$timeZone` | `protected` | Checks if a time zone is a valid IANA time zone |
| `isValidCldrTimeZoneId` | `$timeZone`, `doConversion = false` | `protected` | Checks if a time zone is a valid CLDR time zone |
| `keyValueFromString` | `$text` | `protected` | Gets the key value pair from an iCal string |
| `mb_chr` | `$code` | `protected` | Provides a polyfill for PHP 7.2's `mb_chr()`, which is a multibyte safe version of `chr()` |
| `mb_str_replace` | `$search`, `$replace`, `$subject`, `$count = 0` | `protected` | Replaces all occurrences of a search string with a given replacement string |
| `numberOfDays` | `$days`, `$start`, `$end` | `protected` | Gets the number of days between a start and end date |
| `parseDuration` | `$date`, `$duration`, `$format = 'U'` | `protected` | Parses a duration and applies it to a date |
| `parseExdates` | `$event` | `public` | Parses a list of excluded dates to be applied to an Event |
| `processDateConversions` | - | `protected` | Processes date conversions using the time zone |
| `processEventIcalDateTime` | `$event`, `$index = 3` | `protected` | Extends the `{DTSTART\|DTEND\|RECURRENCE-ID}_array` array to include an iCal date time for each event |
| `processEvents` | - | `protected` | Performs admin tasks on all events as read from the iCal file |
| `processRecurrences` | - | `protected` | Processes recurrence rules |
| `removeUnprintableChars` | `$data` | `protected` | Removes unprintable ASCII and UTF-8 characters |
| `sortEventsWithOrder` | `$events`, `$sortOrder = SORT_ASC` | `public` | Sorts events based on a given sort order |
| `trimToRecurrenceCount` | `$rrules`, `$recurrenceEvents` | `protected` | Ensures the recurrence count is enforced against generated recurrence events |
| `unfold` | `$lines` | `protected` | Unfolds an iCal file in preparation for parsing |
#### Constants
| Name | Description |
|---------------------------|-----------------------------------------------|
| `DATE_TIME_FORMAT_PRETTY` | Default pretty date time format to use |
| `DATE_TIME_FORMAT` | Default date time format to use |
| `ICAL_DATE_TIME_TEMPLATE` | String template to generate an iCal date time |
| `RECURRENCE_EVENT` | Used to isolate generated recurrence events |
| `SECONDS_IN_A_WEEK` | The number of seconds in a week |
| `TIME_FORMAT` | Default time format to use |
| `TIME_ZONE_UTC` | UTC time zone string |
| `UNIX_FORMAT` | Unix timestamp date format |
| `UNIX_MIN_YEAR` | The year Unix time began |
---
### `Event` API (extends `ICal` API)
#### Methods
| Method | Parameter(s) | Visibility | Description |
|---------------|---------------------------------------------|-------------|---------------------------------------------------------------------|
| `__construct` | `$data = array()` | `public` | Creates the Event object |
| `prepareData` | `$value` | `protected` | Prepares the data for output |
| `printData` | `$html = HTML_TEMPLATE` | `public` | Returns Event data excluding anything blank within an HTML template |
| `snakeCase` | `$input`, `$glue = '_'`, `$separator = '-'` | `protected` | Converts the given input to snake_case |
#### Constants
| Name | Description |
|-----------------|-----------------------------------------------------|
| `HTML_TEMPLATE` | String template to use when pretty printing content |
---
## Credits
- [Jonathan Goode](https://github.com/u01jmg3) (programming, bug fixing, enhancement, coding standard)
- [John Grogg](john.grogg@gmail.com) (programming, addition of event recurrence handling)
---
## Tools for Testing
- [iCal Validator](https://icalendar.org/validator.html)
- [Recurrence Rule Tester](https://jakubroztocil.github.io/rrule/)
- [Unix Timestamp Converter](https://www.unixtimestamp.com)

View File

@ -0,0 +1,49 @@
{
"name": "johngrogg/ics-parser",
"description": "ICS Parser",
"homepage": "https://github.com/u01jmg3/ics-parser",
"keywords": [
"icalendar",
"ics",
"ics-parser",
"ical",
"ical-parser",
"ifb"
],
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Jonathan Goode",
"role": "Developer/Owner"
},
{
"name": "John Grogg",
"email": "john.grogg@gmail.com",
"role": "Developer/Prior Owner"
},
{
"name": "Martin Thoma",
"email": "info@martin-thoma.de",
"role": "Original Developer"
}
],
"require": {
"php": ">=5.3.0",
"ext-mbstring": "*",
"nesbot/carbon": "~1.28"
},
"require-dev": {
"squizlabs/php_codesniffer": "~2.9.1"
},
"autoload": {
"psr-0": {
"ICal": "src/"
}
},
"config": {
"platform": {
"php": "5.3.29"
}
}
}

View File

@ -0,0 +1,274 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "bd0091adbd9e5072ec5c42d44b6643fe",
"packages": [
{
"name": "nesbot/carbon",
"version": "1.28.0",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
"reference": "00149d95fc91ef10f19d3a66889bc3bb7500fa7b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/00149d95fc91ef10f19d3a66889bc3bb7500fa7b",
"reference": "00149d95fc91ef10f19d3a66889bc3bb7500fa7b",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"symfony/translation": "~2.6 || ~3.0 || ~4.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2",
"phpunit/phpunit": "^4.8.35 || ^5.7"
},
"type": "library",
"autoload": {
"psr-4": {
"": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Brian Nesbitt",
"email": "brian@nesbot.com",
"homepage": "http://nesbot.com"
}
],
"description": "A simple API extension for DateTime.",
"homepage": "http://carbon.nesbot.com",
"keywords": [
"date",
"datetime",
"time"
],
"time": "2018-05-18T15:26:18+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "3296adf6a6454a050679cde90f95350ad604b171"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
"reference": "3296adf6a6454a050679cde90f95350ad604b171",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2018-04-26T10:06:28+00:00"
},
{
"name": "symfony/translation",
"version": "v2.8.40",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "c6a27966a92fa361bf2c3a938abc6dee91f7ad67"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/c6a27966a92fa361bf2c3a938abc6dee91f7ad67",
"reference": "c6a27966a92fa361bf2c3a938abc6dee91f7ad67",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/config": "<2.7"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~2.8",
"symfony/intl": "~2.7.25|^2.8.18|~3.2.5",
"symfony/yaml": "~2.2|~3.0.0"
},
"suggest": {
"psr/log-implementation": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Translation\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2018-05-21T09:59:10+00:00"
}
],
"packages-dev": [
{
"name": "squizlabs/php_codesniffer",
"version": "2.9.1",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
"php": ">=5.1.2"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
},
"bin": [
"scripts/phpcs",
"scripts/phpcbf"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.x-dev"
}
},
"autoload": {
"classmap": [
"CodeSniffer.php",
"CodeSniffer/CLI.php",
"CodeSniffer/Exception.php",
"CodeSniffer/File.php",
"CodeSniffer/Fixer.php",
"CodeSniffer/Report.php",
"CodeSniffer/Reporting.php",
"CodeSniffer/Sniff.php",
"CodeSniffer/Tokens.php",
"CodeSniffer/Reports/",
"CodeSniffer/Tokenizers/",
"CodeSniffer/DocGenerators/",
"CodeSniffer/Standards/AbstractPatternSniff.php",
"CodeSniffer/Standards/AbstractScopeSniff.php",
"CodeSniffer/Standards/AbstractVariableSniff.php",
"CodeSniffer/Standards/IncorrectPatternException.php",
"CodeSniffer/Standards/Generic/Sniffs/",
"CodeSniffer/Standards/MySource/Sniffs/",
"CodeSniffer/Standards/PEAR/Sniffs/",
"CodeSniffer/Standards/PSR1/Sniffs/",
"CodeSniffer/Standards/PSR2/Sniffs/",
"CodeSniffer/Standards/Squiz/Sniffs/",
"CodeSniffer/Standards/Zend/Sniffs/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Greg Sherwood",
"role": "lead"
}
],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
"homepage": "http://www.squizlabs.com/php-codesniffer",
"keywords": [
"phpcs",
"standards"
],
"time": "2017-05-22T02:43:20+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=5.3.0",
"ext-mbstring": "*"
},
"platform-dev": [],
"platform-overrides": {
"php": "5.3.29"
}
}

View File

@ -0,0 +1,309 @@
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Testkalender
X-WR-TIMEZONE:UTC
X-WR-CALDESC:Nur zum testen vom Google Kalender
BEGIN:VFREEBUSY
UID:f06ff6b3564b2f696bf42d393f8dea59
ORGANIZER:MAILTO:jane_smith@host1.com
DTSTAMP:20170316T204607Z
DTSTART:20170213T204607Z
DTEND:20180517T204607Z
URL:https://www.host.com/calendar/busytime/jsmith.ifb
FREEBUSY;FBTYPE=BUSY:20170623T070000Z/20170223T110000Z
FREEBUSY;FBTYPE=BUSY:20170624T131500Z/20170316T151500Z
FREEBUSY;FBTYPE=BUSY:20170715T131500Z/20170416T150000Z
FREEBUSY;FBTYPE=BUSY:20170716T131500Z/20170516T100500Z
END:VFREEBUSY
BEGIN:VEVENT
DTSTART:20171032T000000
DTEND:20171101T2300
DESCRIPTION:Invalid date - parser will skip the event
SUMMARY:Invalid date - parser will skip the event
DTSTAMP:20170406T063924
LOCATION:
UID:f81b0b41a2e138ae0903daee0a966e1e
SEQUENCE:0
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE;TZID=America/Los_Angeles:19410512
DTEND;VALUE=DATE;TZID=America/Los_Angeles:19410512
DTSTAMP;TZID=America/Los_Angeles:19410512T195741Z
UID:dh3fki5du0opa7cs5n5s87ca02@google.com
CREATED:20380101T141901Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20380101T141901Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Before 1970-Test: Konrad Zuse invents the Z3, the "first
digital Computer"
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20380201
DTEND;VALUE=DATE:20380202
DTSTAMP;TZID="GMT Standard Time":20380101T195741Z
UID:dh3fki5du0opa7cs5n5s87ca01@google.com
CREATED:20380101T141901Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20380101T141901Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Year 2038 problem test
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART:20160105T090000Z
DTEND:20160107T173000Z
DTSTAMP;TZID="Greenwich Mean Time:Dublin; Edinburgh; Lisbon; London":20110121T195741Z
UID:15lc1nvupht8dtfiptenljoiv4@google.com
CREATED:20110121T195616Z
DESCRIPTION;LANGUAGE=en-gb:This is a short description\nwith a new line. Some "special" 's
igns' may be interesting\, too.
LAST-MODIFIED:20150409T150000Z
LOCATION:Kansas
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:My Holidays
TRANSP:TRANSPARENT
ORGANIZER;CN="My Name":mailto:my.name@mydomain.com
END:VEVENT
BEGIN:VEVENT
ATTENDEE;CN="Page, Larry <l.page@google.com> (l.page@google.com)";ROLE=REQ-PARTICIPANT;RSVP=FALSE:mailto:l.page@google.com
ATTENDEE;CN="Brin, Sergey <s.brin@google.com> (s.brin@google.com)";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:s.brin@google.com
DTSTART;VALUE=DATE:20160112
DTEND;VALUE=DATE:20160116
DTSTAMP;TZID="GMT Standard Time":20110121T195741Z
UID:1koigufm110c5hnq6ln57murd4@google.com
CREATED:20110119T142901Z
DESCRIPTION;LANGUAGE=en-gb:Project xyz Review Meeting Minutes\n
Agenda\n1. Review of project version 1.0 requirements.\n2.
Definition
of project processes.\n3. Review of project schedule.\n
Participants: John Smith, Jane Doe, Jim Dandy\n-It was
decided that the requirements need to be signed off by
product marketing.\n-Project processes were accepted.\n
-Project schedule needs to account for scheduled holidays
and employee vacation time. Check with HR for specific
dates.\n-New schedule will be distributed by Friday.\n-
Next weeks meeting is cancelled. No meeting until 3/23.
LAST-MODIFIED:20150409T150000Z
LOCATION:
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Test 2
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160119
DTEND;VALUE=DATE:20160120
DTSTAMP;TZID="GMT Standard Time":20110121T195741Z
UID:rq8jng4jgq0m1lvpj8486fttu0@google.com
CREATED:20110119T141904Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20150409T150000Z
LOCATION:
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:DST Change
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20160119
DTEND;VALUE=DATE:20160120
DTSTAMP;TZID="GMT Standard Time":20110121T195741Z
UID:dh3fki5du0opa7cs5n5s87ca00@google.com
CREATED:20110119T141901Z
DESCRIPTION;LANGUAGE=en-gb:
LAST-MODIFIED:20150409T150000Z
LOCATION:
RRULE:FREQ=WEEKLY;COUNT=5;INTERVAL=2;BYDAY=TU
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Test 1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
SUMMARY:Duration Test
DTSTART:20160425T150000Z
DTSTAMP:20160424T150000Z
DURATION:PT1H15M5S
RRULE:FREQ=DAILY;COUNT=2
UID:calendar-62-e7c39bf02382917349672271dd781c89
END:VEVENT
BEGIN:VEVENT
SUMMARY:BYMONTHDAY Test
DTSTART:20160922T130000Z
DTEND:20160922T150000Z
DTSTAMP:20160921T130000Z
RRULE:FREQ=MONTHLY;UNTIL=20170923T000000Z;INTERVAL=1;BYMONTHDAY=23
UID:33844fe8df15fbfc13c97fc41c0c4b00392c6870@google.com
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Paris:20160921T080000
DTEND;TZID=Europe/Paris:20160921T090000
RRULE:FREQ=WEEKLY;BYDAY=2WE
DTSTAMP:20161117T165045Z
UID:884bc8350185031337d9ec49d2e7e101dd5ae5fb@google.com
CREATED:20160920T133918Z
DESCRIPTION:
LAST-MODIFIED:20160920T133923Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Paris Timezone Test
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20160215T080000Z
DTEND:20160515T090000Z
DTSTAMP:20161121T113027Z
CREATED:20161121T113027Z
UID:65323c541a30dd1f180e2bbfa2724995
DESCRIPTION:
LAST-MODIFIED:20161121T113027Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Long event covering the range from example with special chars:
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÕÖÒÓÔØÙÚÛÜÝÞß
àáâãäåæçèéêėëìíîïðñòóôõöøùúûüūýþÿž
“ ” „ ‟ — …
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20160706T161104Z
DTEND;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160409T110000
DTSTAMP:20160706T150005Z
DTSTART;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160409T090000
EXDATE;TZID="(UTC-05:00) Eastern Time (US & Canada)":
20160528T090000,
20160625T090000
LAST-MODIFIED:20160707T182011Z
EXDATE;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160709T090000
EXDATE;TZID="(UTC-05:00) Eastern Time (US & Canada)":20160723T090000
LOCATION:Sanctuary
PRIORITY:5
RRULE:FREQ=WEEKLY;COUNT=15;BYDAY=SA
SEQUENCE:0
SUMMARY:Microsoft Unicode CLDR EXDATE Test
TRANSP:OPAQUE
UID:040000008200E00074C5B7101A82E0080000000020F6512D0B48CF0100000000000000001000000058BFB8CBB85D504CB99FBA637BCFD6BF
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170118
DTEND;VALUE=DATE:20170118
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=MONTHLY;BYSETPOS=3;BYDAY=WE;COUNT=5
UID:4dnsuc3nknin15kv25cn7ridss@google.com
CREATED:20170119T142059Z
DESCRIPTION;LANGUAGE=en-gb:BYDAY Test 1
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYDAY Test 1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170301
DTEND;VALUE=DATE:20170301
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=WE
UID:h6f7sdjbpt47v3dkral8lnsgcc@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:BYDAY Test 2
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYDAY Test 2
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170111
DTEND;VALUE=DATE:20170111
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=5;BYMONTH=1,2,3
UID:f50e8b89a4a3b0070e0b687d03@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:BYMONTH Multiple Test 1
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYMONTH Multiple Test 1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20170405
DTEND;VALUE=DATE:20170405
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=YEARLY;BYMONTH=4,5,6;BYDAY=WE;COUNT=5
UID:675f06aa795665ae50904ebf0e@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:BYMONTH Multiple Test 2
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:BYMONTH Multiple Test 2
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
BEGIN:VALARM
TRIGGER;VALUE=DURATION:-PT30M
ACTION:DISPLAY
DESCRIPTION:Buzz buzz
END:VALARM
DTSTART;VALUE=DATE;TZID=Germany/Berlin:20170123
DTEND;VALUE=DATE;TZID=Germany/Berlin:20170123
DTSTAMP;TZID="GMT Standard Time":20170121T195741Z
RRULE:FREQ=MONTHLY;BYDAY=-2MO;COUNT=5
EXDATE;VALUE=DATE:20171020
UID:d287b7ec808fcf084983f10837@google.com
CREATED:20170119T142040Z
DESCRIPTION;LANGUAGE=en-gb:Negative BYDAY
LAST-MODIFIED:20170409T150000Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY;LANGUAGE=en-gb:Negative BYDAY
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Australia/Sydney:20170813T190000
DTEND;TZID=Australia/Sydney:20170813T213000
RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=2SU;COUNT=2
DTSTAMP:20170809T114431Z
UID:testuid@google.com
CREATED:20170802T135539Z
DESCRIPTION:
LAST-MODIFIED:20170802T135935Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Parent Recurrence Event
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Australia/Sydney:20170813T190000
DTEND;TZID=Australia/Sydney:20170813T213000
DTSTAMP:20170809T114431Z
UID:testuid@google.com
RECURRENCE-ID;TZID=Australia/Sydney:20170813T190000
CREATED:20170802T135539Z
DESCRIPTION:
LAST-MODIFIED:20170809T105604Z
LOCATION:Melbourne VIC\, Australia
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Override Parent Recurrence Event
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

View File

@ -0,0 +1,175 @@
<?php
// phpcs:disable Generic.Arrays.DisallowLongArraySyntax.Found
require_once '../vendor/autoload.php';
use ICal\ICal;
try {
$ical = new ICal('ICal.ics', array(
'defaultSpan' => 2, // Default value
'defaultTimeZone' => 'UTC',
'defaultWeekStart' => 'MO', // Default value
'disableCharacterReplacement' => false, // Default value
'skipRecurrence' => false, // Default value
'useTimeZoneWithRRules' => false, // Default value
));
// $ical->initFile('ICal.ics');
// $ical->initUrl('https://raw.githubusercontent.com/u01jmg3/ics-parser/master/examples/ICal.ics');
} catch (\Exception $e) {
die($e);
}
$forceTimeZone = false;
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<title>PHP ICS Parser example</title>
<style>body { background-color: #eee } .caption { overflow-x: auto }</style>
</head>
<body>
<div class="container-fluid">
<h3>PHP ICS Parser example</h3>
<ul class="list-group">
<li class="list-group-item">
<span class="badge"><?php echo $ical->eventCount ?></span>
The number of events
</li>
<li class="list-group-item">
<span class="badge"><?php echo $ical->freeBusyCount ?></span>
The number of free/busy time slots
</li>
<li class="list-group-item">
<span class="badge"><?php echo $ical->todoCount ?></span>
The number of todos
</li>
<li class="list-group-item">
<span class="badge"><?php echo $ical->alarmCount ?></span>
The number of alarms
</li>
</ul>
<?php
$showExample = array(
'interval' => true,
'range' => true,
'all' => true,
);
?>
<?php
if ($showExample['interval']) {
$events = $ical->eventsFromInterval('1 week');
if ($events) {
echo '<h4>Events in the next 7 days:</h4>';
}
$count = 1;
?>
<div class="row">
<?php
foreach ($events as $event) : ?>
<div class="col-md-4">
<div class="thumbnail">
<div class="caption">
<h3><?php
$dtstart = $ical->iCalDateToDateTime($event->dtstart_array[3], $forceTimeZone);
echo $event->summary . ' (' . $dtstart->format('d-m-Y H:i') . ')';
?></h3>
<?php echo $event->printData() ?>
</div>
</div>
</div>
<?php
if ($count > 1 && $count % 3 === 0) {
echo '</div><div class="row">';
}
$count++;
?>
<?php
endforeach
?>
</div>
<?php } ?>
<?php
if ($showExample['range']) {
$events = $ical->eventsFromRange('2017-03-01 12:00:00', '2017-04-31 17:00:00');
if ($events) {
echo '<h4>Events March through April:</h4>';
}
$count = 1;
?>
<div class="row">
<?php
foreach ($events as $event) : ?>
<div class="col-md-4">
<div class="thumbnail">
<div class="caption">
<h3><?php
$dtstart = $ical->iCalDateToDateTime($event->dtstart_array[3], $forceTimeZone);
echo $event->summary . ' (' . $dtstart->format('d-m-Y H:i') . ')';
?></h3>
<?php echo $event->printData() ?>
</div>
</div>
</div>
<?php
if ($count > 1 && $count % 3 === 0) {
echo '</div><div class="row">';
}
$count++;
?>
<?php
endforeach
?>
</div>
<?php } ?>
<?php
if ($showExample['all']) {
$events = $ical->sortEventsWithOrder($ical->events());
if ($events) {
echo '<h4>All Events:</h4>';
}
?>
<div class="row">
<?php
$count = 1;
foreach ($events as $event) : ?>
<div class="col-md-4">
<div class="thumbnail">
<div class="caption">
<h3><?php
$dtstart = $ical->iCalDateToDateTime($event->dtstart_array[3], $forceTimeZone);
echo $event->summary . ' (' . $dtstart->format('d-m-Y H:i') . ')';
?></h3>
<?php echo $event->printData() ?>
</div>
</div>
</div>
<?php
if ($count > 1 && $count % 3 === 0) {
echo '</div><div class="row">';
}
$count++;
?>
<?php
endforeach
?>
</div>
<?php } ?>
</div>
</body>
</html>

View File

@ -0,0 +1,204 @@
<?php
namespace ICal;
class Event
{
// phpcs:disable Generic.Arrays.DisallowLongArraySyntax.Found
const HTML_TEMPLATE = '<p>%s: %s</p>';
/**
* https://www.kanzaki.com/docs/ical/summary.html
*
* @var $summary
*/
public $summary;
/**
* https://www.kanzaki.com/docs/ical/dtstart.html
*
* @var $dtstart
*/
public $dtstart;
/**
* https://www.kanzaki.com/docs/ical/dtend.html
*
* @var $dtend
*/
public $dtend;
/**
* https://www.kanzaki.com/docs/ical/duration.html
*
* @var $duration
*/
public $duration;
/**
* https://www.kanzaki.com/docs/ical/dtstamp.html
*
* @var $dtstamp
*/
public $dtstamp;
/**
* https://www.kanzaki.com/docs/ical/uid.html
*
* @var $uid
*/
public $uid;
/**
* https://www.kanzaki.com/docs/ical/created.html
*
* @var $created
*/
public $created;
/**
* https://www.kanzaki.com/docs/ical/lastModified.html
*
* @var $lastmodified
*/
public $lastmodified;
/**
* https://www.kanzaki.com/docs/ical/description.html
*
* @var $description
*/
public $description;
/**
* https://www.kanzaki.com/docs/ical/location.html
*
* @var $location
*/
public $location;
/**
* https://www.kanzaki.com/docs/ical/sequence.html
*
* @var $sequence
*/
public $sequence;
/**
* https://www.kanzaki.com/docs/ical/status.html
*
* @var $status
*/
public $status;
/**
* https://www.kanzaki.com/docs/ical/transp.html
*
* @var $transp
*/
public $transp;
/**
* https://www.kanzaki.com/docs/ical/organizer.html
*
* @var $organizer
*/
public $organizer;
/**
* https://www.kanzaki.com/docs/ical/attendee.html
*
* @var $attendee
*/
public $attendee;
/**
* Creates the Event object
*
* @param array $data
* @return void
*/
public function __construct(array $data = array())
{
if (!empty($data)) {
foreach ($data as $key => $value) {
$variable = self::snakeCase($key);
$this->{$variable} = self::prepareData($value);
}
}
}
/**
* Prepares the data for output
*
* @param mixed $value
* @return mixed
*/
protected function prepareData($value)
{
if (is_string($value)) {
return stripslashes(trim(str_replace('\n', "\n", $value)));
} elseif (is_array($value)) {
return array_map('self::prepareData', $value);
}
return $value;
}
/**
* Returns Event data excluding anything blank
* within an HTML template
*
* @param string $html HTML template to use
* @return string
*/
public function printData($html = self::HTML_TEMPLATE)
{
$data = array(
'SUMMARY' => $this->summary,
'DTSTART' => $this->dtstart,
'DTEND' => $this->dtend,
'DTSTART_TZ' => $this->dtstart_tz,
'DTEND_TZ' => $this->dtend_tz,
'DURATION' => $this->duration,
'DTSTAMP' => $this->dtstamp,
'UID' => $this->uid,
'CREATED' => $this->created,
'LAST-MODIFIED' => $this->lastmodified,
'DESCRIPTION' => $this->description,
'LOCATION' => $this->location,
'SEQUENCE' => $this->sequence,
'STATUS' => $this->status,
'TRANSP' => $this->transp,
'ORGANISER' => $this->organizer,
'ATTENDEE(S)' => $this->attendee,
);
$data = array_filter($data); // Remove any blank values
$output = '';
foreach ($data as $key => $value) {
$output .= sprintf($html, $key, $value);
}
return $output;
}
/**
* Converts the given input to snake_case
*
* @param string $input
* @param string $glue
* @param string $separator
* @return string
*/
protected static function snakeCase($input, $glue = '_', $separator = '-')
{
$input = preg_split('/(?<=[a-z])(?=[A-Z])/x', $input);
$input = join($input, $glue);
$input = str_replace($separator, $glue, $input);
return strtolower($input);
}
}

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -0,0 +1,60 @@
{
"name": "nesbot/carbon",
"type": "library",
"description": "A simple API extension for DateTime.",
"keywords": [
"date",
"time",
"DateTime"
],
"homepage": "http://carbon.nesbot.com",
"support": {
"issues": "https://github.com/briannesbitt/Carbon/issues",
"source": "https://github.com/briannesbitt/Carbon"
},
"license": "MIT",
"authors": [
{
"name": "Brian Nesbitt",
"email": "brian@nesbot.com",
"homepage": "http://nesbot.com"
}
],
"require": {
"php": ">=5.3.9",
"symfony/translation": "~2.6 || ~3.0 || ~4.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2",
"phpunit/phpunit": "^4.8.35 || ^5.7"
},
"autoload": {
"psr-4": {
"": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"config": {
"sort-packages": true
},
"scripts": {
"test": [
"@phpunit",
"@phpcs"
],
"phpunit": "phpunit --verbose --coverage-clover=coverage.xml",
"phpcs": "php-cs-fixer fix -v --diff --dry-run",
"phpstan": "phpstan analyse --configuration phpstan.neon --level 3 src tests"
},
"extra": {
"laravel": {
"providers": [
"Carbon\\Laravel\\ServiceProvider"
]
}
}
}

View File

@ -0,0 +1,94 @@
# Carbon
[![Latest Stable Version](https://poser.pugx.org/nesbot/carbon/v/stable.png)](https://packagist.org/packages/nesbot/carbon)
[![Total Downloads](https://poser.pugx.org/nesbot/carbon/downloads.png)](https://packagist.org/packages/nesbot/carbon)
[![Build Status](https://travis-ci.org/briannesbitt/Carbon.svg?branch=master)](https://travis-ci.org/briannesbitt/Carbon)
[![StyleCI](https://styleci.io/repos/5724990/shield?style=flat)](https://styleci.io/repos/5724990)
[![codecov.io](https://codecov.io/github/briannesbitt/Carbon/coverage.svg?branch=master)](https://codecov.io/github/briannesbitt/Carbon?branch=master)
[![PHP-Eye](https://php-eye.com/badge/nesbot/carbon/tested.svg?style=flat)](https://php-eye.com/package/nesbot/carbon)
[![PHPStan](https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat)](https://github.com/phpstan/phpstan)
A simple PHP API extension for DateTime. [http://carbon.nesbot.com](http://carbon.nesbot.com)
```php
use Carbon\Carbon;
printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); //implicit __toString()
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
$nextSummerOlympics = Carbon::createFromDate(2016)->addYears(4);
$officialDate = Carbon::now()->toRfc2822String();
$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');
// Don't really want this to happen so mock now
Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1));
// comparisons are always done in UTC
if (Carbon::now()->gte($internetWillBlowUpOn)) {
die();
}
// Phew! Return to normal behaviour
Carbon::setTestNow();
if (Carbon::now()->isWeekend()) {
echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
// ... but also does 'from now', 'after' and 'before'
// rolling up to seconds, minutes, hours, days, months, years
$daysSinceEpoch = Carbon::createFromTimestamp(0)->diffInDays();
```
## Installation
### With Composer
```
$ composer require nesbot/carbon
```
```json
{
"require": {
"nesbot/carbon": "~1.21"
}
}
```
```php
<?php
require 'vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());
```
<a name="install-nocomposer"/>
### Without Composer
Why are you not using [composer](http://getcomposer.org/)? Download [Carbon.php](https://github.com/briannesbitt/Carbon/blob/master/src/Carbon/Carbon.php) from the repo and save the file into your project path somewhere.
```php
<?php
require 'path/to/Carbon.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());
```
## Docs
[http://carbon.nesbot.com/docs](http://carbon.nesbot.com/docs)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,67 @@
<?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.
*/
namespace Carbon\Exceptions;
use Exception;
use InvalidArgumentException;
class InvalidDateException extends InvalidArgumentException
{
/**
* The invalid field.
*
* @var string
*/
private $field;
/**
* The invalid value.
*
* @var mixed
*/
private $value;
/**
* Constructor.
*
* @param string $field
* @param mixed $value
* @param int $code
* @param \Exception|null $previous
*/
public function __construct($field, $value, $code = 0, Exception $previous = null)
{
$this->field = $field;
$this->value = $value;
parent::__construct($field.' : '.$value.' is not a valid value.', $code, $previous);
}
/**
* Get the invalid field.
*
* @return string
*/
public function getField()
{
return $this->field;
}
/**
* Get the invalid value.
*
* @return mixed
*/
public function getValue()
{
return $this->value;
}
}

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count jaar|:count jare',
'y' => ':count jaar|:count jare',
'month' => ':count maand|:count maande',
'm' => ':count maand|:count maande',
'week' => ':count week|:count weke',
'w' => ':count week|:count weke',
'day' => ':count dag|:count dae',
'd' => ':count dag|:count dae',
'hour' => ':count uur|:count ure',
'h' => ':count uur|:count ure',
'minute' => ':count minuut|:count minute',
'min' => ':count minuut|:count minute',
'second' => ':count sekond|:count sekondes',
's' => ':count sekond|:count sekondes',
'ago' => ':time terug',
'from_now' => ':time van nou af',
'after' => ':time na',
'before' => ':time voor',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => '{0}سنة|{1}سنة|{2}سنتين|[3,10]:count سنوات|[11,Inf]:count سنة',
'y' => '{0}سنة|{1}سنة|{2}سنتين|[3,10]:count سنوات|[11,Inf]:count سنة',
'month' => '{0}شهر|{1} شهر|{2}شهرين|[3,10]:count أشهر|[11,Inf]:count شهر',
'm' => '{0}شهر|{1} شهر|{2}شهرين|[3,10]:count أشهر|[11,Inf]:count شهر',
'week' => '{0}أسبوع|{1}أسبوع|{2}أسبوعين|[3,10]:count أسابيع|[11,Inf]:count أسبوع',
'w' => '{0}أسبوع|{1}أسبوع|{2}أسبوعين|[3,10]:count أسابيع|[11,Inf]:count أسبوع',
'day' => '{0}يوم|{1}يوم|{2}يومين|[3,10]:count أيام|[11,Inf] يوم',
'd' => '{0}يوم|{1}يوم|{2}يومين|[3,10]:count أيام|[11,Inf] يوم',
'hour' => '{0}ساعة|{1}ساعة|{2}ساعتين|[3,10]:count ساعات|[11,Inf]:count ساعة',
'h' => '{0}ساعة|{1}ساعة|{2}ساعتين|[3,10]:count ساعات|[11,Inf]:count ساعة',
'minute' => '{0}دقيقة|{1}دقيقة|{2}دقيقتين|[3,10]:count دقائق|[11,Inf]:count دقيقة',
'min' => '{0}دقيقة|{1}دقيقة|{2}دقيقتين|[3,10]:count دقائق|[11,Inf]:count دقيقة',
'second' => '{0}ثانية|{1}ثانية|{2}ثانيتين|[3,10]:count ثوان|[11,Inf]:count ثانية',
's' => '{0}ثانية|{1}ثانية|{2}ثانيتين|[3,10]:count ثوان|[11,Inf]:count ثانية',
'ago' => 'منذ :time',
'from_now' => ':time من الآن',
'after' => 'بعد :time',
'before' => 'قبل :time',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => '[0,1] سَنَة|{2} سَنَتَيْن|[3,10]:count سَنَوَات|[11,Inf]:count سَنَة',
'y' => '[0,1] سَنَة|{2} سَنَتَيْن|[3,10]:count سَنَوَات|[11,Inf]:count سَنَة',
'month' => '[0,1] شَهْرَ|{2} شَهْرَيْن|[3,10]:count أَشْهُر|[11,Inf]:count شَهْرَ',
'm' => '[0,1] شَهْرَ|{2} شَهْرَيْن|[3,10]:count أَشْهُر|[11,Inf]:count شَهْرَ',
'week' => '[0,1] أُسْبُوع|{2} أُسْبُوعَيْن|[3,10]:count أَسَابِيع|[11,Inf]:count أُسْبُوع',
'w' => '[0,1] أُسْبُوع|{2} أُسْبُوعَيْن|[3,10]:count أَسَابِيع|[11,Inf]:count أُسْبُوع',
'day' => '[0,1] يَوْم|{2} يَوْمَيْن|[3,10]:count أَيَّام|[11,Inf] يَوْم',
'd' => '[0,1] يَوْم|{2} يَوْمَيْن|[3,10]:count أَيَّام|[11,Inf] يَوْم',
'hour' => '[0,1] سَاعَة|{2} سَاعَتَيْن|[3,10]:count سَاعَات|[11,Inf]:count سَاعَة',
'h' => '[0,1] سَاعَة|{2} سَاعَتَيْن|[3,10]:count سَاعَات|[11,Inf]:count سَاعَة',
'minute' => '[0,1] دَقِيقَة|{2} دَقِيقَتَيْن|[3,10]:count دَقَائِق|[11,Inf]:count دَقِيقَة',
'min' => '[0,1] دَقِيقَة|{2} دَقِيقَتَيْن|[3,10]:count دَقَائِق|[11,Inf]:count دَقِيقَة',
'second' => '[0,1] ثَانِيَة|{2} ثَانِيَتَيْن|[3,10]:count ثَوَان|[11,Inf]:count ثَانِيَة',
's' => '[0,1] ثَانِيَة|{2} ثَانِيَتَيْن|[3,10]:count ثَوَان|[11,Inf]:count ثَانِيَة',
'ago' => 'مُنْذُ :time',
'from_now' => 'مِنَ الْآن :time',
'after' => 'بَعْدَ :time',
'before' => 'قَبْلَ :time',
);

View File

@ -0,0 +1,40 @@
<?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.
*/
return array(
'year' => ':count il',
'y' => ':count il',
'month' => ':count ay',
'm' => ':count ay',
'week' => ':count həftə',
'w' => ':count həftə',
'day' => ':count gün',
'd' => ':count gün',
'hour' => ':count saat',
'h' => ':count saat',
'minute' => ':count dəqiqə',
'min' => ':count dəqiqə',
'second' => ':count saniyə',
's' => ':count saniyə',
'ago' => ':time əvvəl',
'from_now' => ':time sonra',
'after' => ':time sonra',
'before' => ':time əvvəl',
'diff_now' => 'indi',
'diff_yesterday' => 'dünən',
'diff_tomorrow' => 'sabah',
'diff_before_yesterday' => 'srağagün',
'diff_after_tomorrow' => 'birisi gün',
'period_recurrences' => ':count dəfədən bir',
'period_interval' => 'hər :interval',
'period_start_date' => ':date tarixindən başlayaraq',
'period_end_date' => ':date tarixinədək',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count година|:count години',
'y' => ':count година|:count години',
'month' => ':count месец|:count месеца',
'm' => ':count месец|:count месеца',
'week' => ':count седмица|:count седмици',
'w' => ':count седмица|:count седмици',
'day' => ':count ден|:count дни',
'd' => ':count ден|:count дни',
'hour' => ':count час|:count часа',
'h' => ':count час|:count часа',
'minute' => ':count минута|:count минути',
'min' => ':count минута|:count минути',
'second' => ':count секунда|:count секунди',
's' => ':count секунда|:count секунди',
'ago' => 'преди :time',
'from_now' => ':time от сега',
'after' => 'след :time',
'before' => 'преди :time',
);

View File

@ -0,0 +1,38 @@
<?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.
*/
return array(
'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 পূর্বে',
'from_now' => 'এখন থেকে :time',
'after' => ':time পরে',
'before' => ':time আগে',
'diff_now' => 'এখন',
'diff_yesterday' => 'গতকাল',
'diff_tomorrow' => 'আগামীকাল',
'period_recurrences' => ':count বার|:count বার',
'period_interval' => 'প্রতি :interval',
'period_start_date' => ':date থেকে',
'period_end_date' => ':date পর্যন্ত',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count godina|:count godine|:count godina',
'y' => ':count godina|:count godine|:count godina',
'month' => ':count mjesec|:count mjeseca|:count mjeseci',
'm' => ':count mjesec|:count mjeseca|:count mjeseci',
'week' => ':count nedjelja|:count nedjelje|:count nedjelja',
'w' => ':count nedjelja|:count nedjelje|:count nedjelja',
'day' => ':count dan|:count dana|:count dana',
'd' => ':count dan|:count dana|:count dana',
'hour' => ':count sat|:count sata|:count sati',
'h' => ':count sat|:count sata|:count sati',
'minute' => ':count minut|:count minuta|:count minuta',
'min' => ':count minut|:count minuta|:count minuta',
'second' => ':count sekund|:count sekunda|:count sekundi',
's' => ':count sekund|:count sekunda|:count sekundi',
'ago' => 'prije :time',
'from_now' => 'za :time',
'after' => 'nakon :time',
'before' => ':time ranije',
);

View File

@ -0,0 +1,40 @@
<?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.
*/
return array(
'year' => ':count any|:count anys',
'y' => ':count any|:count anys',
'month' => ':count mes|:count mesos',
'm' => ':count mes|:count mesos',
'week' => ':count setmana|:count setmanes',
'w' => ':count setmana|:count setmanes',
'day' => ':count dia|:count dies',
'd' => ':count dia|:count dies',
'hour' => ':count hora|:count hores',
'h' => ':count hora|:count hores',
'minute' => ':count minut|:count minuts',
'min' => ':count minut|:count minuts',
'second' => ':count segon|:count segons',
's' => ':count segon|:count segons',
'ago' => 'fa :time',
'from_now' => 'd\'aquí :time',
'after' => ':time després',
'before' => ':time abans',
'diff_now' => 'ara mateix',
'diff_yesterday' => 'ahir',
'diff_tomorrow' => 'demà',
'diff_before_yesterday' => "abans d'ahir",
'diff_after_tomorrow' => 'demà passat',
'period_recurrences' => ':count cop|:count cops',
'period_interval' => 'cada :interval',
'period_start_date' => 'de :date',
'period_end_date' => 'fins a :date',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count rok|:count roky|:count let',
'y' => ':count rok|:count roky|:count let',
'month' => ':count měsíc|:count měsíce|:count měsíců',
'm' => ':count měsíc|:count měsíce|:count měsíců',
'week' => ':count týden|:count týdny|:count týdnů',
'w' => ':count týden|:count týdny|:count týdnů',
'day' => ':count den|:count dny|:count dní',
'd' => ':count den|:count dny|:count dní',
'hour' => ':count hodinu|:count hodiny|:count hodin',
'h' => ':count hodinu|:count hodiny|:count hodin',
'minute' => ':count minutu|:count minuty|:count minut',
'min' => ':count minutu|:count minuty|:count minut',
'second' => ':count sekundu|:count sekundy|:count sekund',
's' => ':count sekundu|:count sekundy|:count sekund',
'ago' => ':time nazpět',
'from_now' => 'za :time',
'after' => ':time později',
'before' => ':time předtím',
);

View File

@ -0,0 +1,29 @@
<?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.
*/
return array(
'year' => '1 flwyddyn|:count blynedd',
'y' => ':countbl',
'month' => '1 mis|:count fis',
'm' => ':countmi',
'week' => ':count wythnos',
'w' => ':countw',
'day' => ':count diwrnod',
'd' => ':countd',
'hour' => ':count awr',
'h' => ':counth',
'minute' => ':count munud',
'min' => ':countm',
'second' => ':count eiliad',
's' => ':counts',
'ago' => ':time yn ôl',
'from_now' => ':time o hyn ymlaen',
'after' => ':time ar ôl',
'before' => ':time o\'r blaen',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count år|:count år',
'y' => ':count år|:count år',
'month' => ':count måned|:count måneder',
'm' => ':count måned|:count måneder',
'week' => ':count uge|:count uger',
'w' => ':count uge|:count uger',
'day' => ':count dag|:count dage',
'd' => ':count dag|:count dage',
'hour' => ':count time|:count timer',
'h' => ':count time|:count timer',
'minute' => ':count minut|:count minutter',
'min' => ':count minut|:count minutter',
'second' => ':count sekund|:count sekunder',
's' => ':count sekund|:count sekunder',
'ago' => ':time siden',
'from_now' => 'om :time',
'after' => ':time efter',
'before' => ':time før',
);

View File

@ -0,0 +1,46 @@
<?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.
*/
return array(
'year' => ':count Jahr|:count Jahre',
'y' => ':countJ|:countJ',
'month' => ':count Monat|:count Monate',
'm' => ':countMon|:countMon',
'week' => ':count Woche|:count Wochen',
'w' => ':countWo|:countWo',
'day' => ':count Tag|:count Tage',
'd' => ':countTg|:countTg',
'hour' => ':count Stunde|:count Stunden',
'h' => ':countStd|:countStd',
'minute' => ':count Minute|:count Minuten',
'min' => ':countMin|:countMin',
'second' => ':count Sekunde|:count Sekunden',
's' => ':countSek|:countSek',
'ago' => 'vor :time',
'from_now' => 'in :time',
'after' => ':time später',
'before' => ':time zuvor',
'year_from_now' => ':count Jahr|:count Jahren',
'month_from_now' => ':count Monat|:count Monaten',
'week_from_now' => ':count Woche|:count Wochen',
'day_from_now' => ':count Tag|:count Tagen',
'year_ago' => ':count Jahr|:count Jahren',
'month_ago' => ':count Monat|:count Monaten',
'week_ago' => ':count Woche|:count Wochen',
'day_ago' => ':count Tag|:count Tagen',
'diff_now' => 'Gerade eben',
'diff_yesterday' => 'Gestern',
'diff_tomorrow' => 'Heute',
'diff_before_yesterday' => 'Vorgestern',
'diff_after_tomorrow' => 'Übermorgen',
);

View File

@ -0,0 +1,31 @@
<?php
/*
* This file is part of the Carbon package.
*
* (c) Ahmed Ali <ajaaibu@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return array(
'year' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު',
'y' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު',
'month' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
'm' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
'week' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
'w' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
'day' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
'd' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
'hour' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި',
'h' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި',
'minute' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް',
'min' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް',
'second' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
's' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
'ago' => ':time ކުރިން',
'from_now' => ':time ފަހުން',
'after' => ':time ފަހުން',
'before' => ':time ކުރި',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count χρόνος|:count χρόνια',
'y' => ':count χρόνος|:count χρόνια',
'month' => ':count μήνας|:count μήνες',
'm' => ':count μήνας|:count μήνες',
'week' => ':count εβδομάδα|:count εβδομάδες',
'w' => ':count εβδομάδα|:count εβδομάδες',
'day' => ':count μέρα|:count μέρες',
'd' => ':count μέρα|:count μέρες',
'hour' => ':count ώρα|:count ώρες',
'h' => ':count ώρα|:count ώρες',
'minute' => ':count λεπτό|:count λεπτά',
'min' => ':count λεπτό|:count λεπτά',
'second' => ':count δευτερόλεπτο|:count δευτερόλεπτα',
's' => ':count δευτερόλεπτο|:count δευτερόλεπτα',
'ago' => 'πριν από :time',
'from_now' => 'σε :time από τώρα',
'after' => ':time μετά',
'before' => ':time πριν',
);

View File

@ -0,0 +1,40 @@
<?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.
*/
return array(
'year' => ':count year|:count years',
'y' => ':countyr|:countyrs',
'month' => ':count month|:count months',
'm' => ':countmo|:countmos',
'week' => ':count week|:count weeks',
'w' => ':countw|:countw',
'day' => ':count day|:count days',
'd' => ':countd|:countd',
'hour' => ':count hour|:count hours',
'h' => ':counth|:counth',
'minute' => ':count minute|:count minutes',
'min' => ':countm|:countm',
'second' => ':count second|:count seconds',
's' => ':counts|:counts',
'ago' => ':time ago',
'from_now' => ':time from now',
'after' => ':time after',
'before' => ':time before',
'diff_now' => 'just now',
'diff_yesterday' => 'yesterday',
'diff_tomorrow' => 'tomorrow',
'diff_before_yesterday' => 'before yesterday',
'diff_after_tomorrow' => 'after tomorrow',
'period_recurrences' => 'once|:count times',
'period_interval' => 'every :interval',
'period_start_date' => 'from :date',
'period_end_date' => 'to :date',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count jaro|:count jaroj',
'y' => ':count jaro|:count jaroj',
'month' => ':count monato|:count monatoj',
'm' => ':count monato|:count monatoj',
'week' => ':count semajno|:count semajnoj',
'w' => ':count semajno|:count semajnoj',
'day' => ':count tago|:count tagoj',
'd' => ':count tago|:count tagoj',
'hour' => ':count horo|:count horoj',
'h' => ':count horo|:count horoj',
'minute' => ':count minuto|:count minutoj',
'min' => ':count minuto|:count minutoj',
'second' => ':count sekundo|:count sekundoj',
's' => ':count sekundo|:count sekundoj',
'ago' => 'antaŭ :time',
'from_now' => 'je :time',
'after' => ':time poste',
'before' => ':time antaŭe',
);

View File

@ -0,0 +1,36 @@
<?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.
*/
return array(
'year' => ':count año|:count años',
'y' => ':count año|:count años',
'month' => ':count mes|:count meses',
'm' => ':count mes|:count meses',
'week' => ':count semana|:count semanas',
'w' => ':count semana|:count semanas',
'day' => ':count día|:count días',
'd' => ':count día|:count días',
'hour' => ':count hora|:count horas',
'h' => ':count hora|:count horas',
'minute' => ':count minuto|:count minutos',
'min' => ':count minuto|:count minutos',
'second' => ':count segundo|:count segundos',
's' => ':count segundo|:count segundos',
'ago' => 'hace :time',
'from_now' => 'dentro de :time',
'after' => ':time después',
'before' => ':time antes',
'diff_now' => 'ahora mismo',
'diff_yesterday' => 'ayer',
'diff_tomorrow' => 'mañana',
'diff_before_yesterday' => 'antier',
'diff_after_tomorrow' => 'pasado mañana',
);

View File

@ -0,0 +1,38 @@
<?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.
*/
return array(
'year' => ':count aasta|:count aastat',
'y' => ':count aasta|:count aastat',
'month' => ':count kuu|:count kuud',
'm' => ':count kuu|:count kuud',
'week' => ':count nädal|:count nädalat',
'w' => ':count nädal|:count nädalat',
'day' => ':count päev|:count päeva',
'd' => ':count päev|:count päeva',
'hour' => ':count tund|:count tundi',
'h' => ':count tund|:count tundi',
'minute' => ':count minut|:count minutit',
'min' => ':count minut|:count minutit',
'second' => ':count sekund|:count sekundit',
's' => ':count sekund|:count sekundit',
'ago' => ':time tagasi',
'from_now' => ':time pärast',
'after' => ':time pärast',
'before' => ':time enne',
'year_from_now' => ':count aasta',
'month_from_now' => ':count kuu',
'week_from_now' => ':count nädala',
'day_from_now' => ':count päeva',
'hour_from_now' => ':count tunni',
'minute_from_now' => ':count minuti',
'second_from_now' => ':count sekundi',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => 'Urte 1|:count urte',
'y' => 'Urte 1|:count urte',
'month' => 'Hile 1|:count hile',
'm' => 'Hile 1|:count hile',
'week' => 'Aste 1|:count aste',
'w' => 'Aste 1|:count aste',
'day' => 'Egun 1|:count egun',
'd' => 'Egun 1|:count egun',
'hour' => 'Ordu 1|:count ordu',
'h' => 'Ordu 1|:count ordu',
'minute' => 'Minutu 1|:count minutu',
'min' => 'Minutu 1|:count minutu',
'second' => 'Segundu 1|:count segundu',
's' => 'Segundu 1|:count segundu',
'ago' => 'Orain dela :time',
'from_now' => ':time barru',
'after' => ':time geroago',
'before' => ':time lehenago',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'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 پیش',
'from_now' => ':time بعد',
'after' => ':time پس از',
'before' => ':time پیش از',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count vuosi|:count vuotta',
'y' => ':count vuosi|:count vuotta',
'month' => ':count kuukausi|:count kuukautta',
'm' => ':count kuukausi|:count kuukautta',
'week' => ':count viikko|:count viikkoa',
'w' => ':count viikko|:count viikkoa',
'day' => ':count päivä|:count päivää',
'd' => ':count päivä|:count päivää',
'hour' => ':count tunti|:count tuntia',
'h' => ':count tunti|:count tuntia',
'minute' => ':count minuutti|:count minuuttia',
'min' => ':count minuutti|:count minuuttia',
'second' => ':count sekunti|:count sekuntia',
's' => ':count sekunti|:count sekuntia',
'ago' => ':time sitten',
'from_now' => ':time tästä hetkestä',
'after' => ':time sen jälkeen',
'before' => ':time ennen',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count ár|:count ár',
'y' => ':count ár|:count ár',
'month' => ':count mánaður|:count mánaðir',
'm' => ':count mánaður|:count mánaðir',
'week' => ':count vika|:count vikur',
'w' => ':count vika|:count vikur',
'day' => ':count dag|:count dagar',
'd' => ':count dag|:count dagar',
'hour' => ':count tími|:count tímar',
'h' => ':count tími|:count tímar',
'minute' => ':count minutt|:count minuttir',
'min' => ':count minutt|:count minuttir',
'second' => ':count sekund|:count sekundir',
's' => ':count sekund|:count sekundir',
'ago' => ':time síðan',
'from_now' => 'um :time',
'after' => ':time aftaná',
'before' => ':time áðrenn',
);

View File

@ -0,0 +1,40 @@
<?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.
*/
return array(
'year' => ':count an|:count ans',
'y' => ':count an|:count ans',
'month' => ':count mois',
'm' => ':count mois',
'week' => ':count semaine|:count semaines',
'w' => ':count sem.',
'day' => ':count jour|:count jours',
'd' => ':count j.',
'hour' => ':count heure|:count heures',
'h' => ':count h.',
'minute' => ':count minute|:count minutes',
'min' => ':count min.',
'second' => ':count seconde|:count secondes',
's' => ':count sec.',
'ago' => 'il y a :time',
'from_now' => 'dans :time',
'after' => ':time après',
'before' => ':time avant',
'diff_now' => "à l'instant",
'diff_yesterday' => 'hier',
'diff_tomorrow' => 'demain',
'diff_before_yesterday' => 'avant-hier',
'diff_after_tomorrow' => 'après-demain',
'period_recurrences' => ':count fois',
'period_interval' => 'tous les :interval',
'period_start_date' => 'de :date',
'period_end_date' => 'à :date',
);

View File

@ -0,0 +1,24 @@
<?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.
*/
return array(
'year' => ':count ano|:count anos',
'month' => ':count mes|:count meses',
'week' => ':count semana|:count semanas',
'day' => ':count día|:count días',
'hour' => ':count hora|:count horas',
'minute' => ':count minuto|:count minutos',
'second' => ':count segundo|:count segundos',
'ago' => 'fai :time',
'from_now' => 'dentro de :time',
'after' => ':time despois',
'before' => ':time antes',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count વર્ષ|:count વર્ષો',
'y' => ':countવર્ષ|:countવર્ષો',
'month' => ':count મહિનો|:count મહિના',
'm' => ':countમહિનો|:countમહિના',
'week' => ':count અઠવાડિયું|:count અઠવાડિયા',
'w' => ':countઅઠ.|:countઅઠ.',
'day' => ':count દિવસ|:count દિવસો',
'd' => ':countદિ.|:countદિ.',
'hour' => ':count કલાક|:count કલાકો',
'h' => ':countક.|:countક.',
'minute' => ':count મિનિટ|:count મિનિટ',
'min' => ':countમિ.|:countમિ.',
'second' => ':count સેકેન્ડ|:count સેકેન્ડ',
's' => ':countસે.|:countસે.',
'ago' => ':time પહેલા',
'from_now' => ':time અત્યારથી',
'after' => ':time પછી',
'before' => ':time પહેલા',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => 'שנה|{2}שנתיים|:count שנים',
'y' => 'שנה|{2}שנתיים|:count שנים',
'month' => 'חודש|{2}חודשיים|:count חודשים',
'm' => 'חודש|{2}חודשיים|:count חודשים',
'week' => 'שבוע|{2}שבועיים|:count שבועות',
'w' => 'שבוע|{2}שבועיים|:count שבועות',
'day' => 'יום|{2}יומיים|:count ימים',
'd' => 'יום|{2}יומיים|:count ימים',
'hour' => 'שעה|{2}שעתיים|:count שעות',
'h' => 'שעה|{2}שעתיים|:count שעות',
'minute' => 'דקה|{2}דקותיים|:count דקות',
'min' => 'דקה|{2}דקותיים|:count דקות',
'second' => 'שניה|:count שניות',
's' => 'שניה|:count שניות',
'ago' => 'לפני :time',
'from_now' => 'בעוד :time',
'after' => 'אחרי :time',
'before' => 'לפני :time',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => '1 वर्ष|:count वर्षों',
'y' => '1 वर्ष|:count वर्षों',
'month' => '1 माह|:count महीने',
'm' => '1 माह|:count महीने',
'week' => '1 सप्ताह|:count सप्ताह',
'w' => '1 सप्ताह|:count सप्ताह',
'day' => '1 दिन|:count दिनों',
'd' => '1 दिन|:count दिनों',
'hour' => '1 घंटा|:count घंटे',
'h' => '1 घंटा|:count घंटे',
'minute' => '1 मिनट|:count मिनटों',
'min' => '1 मिनट|:count मिनटों',
'second' => '1 सेकंड|:count सेकंड',
's' => '1 सेकंड|:count सेकंड',
'ago' => ':time पूर्व',
'from_now' => ':time से',
'after' => ':time के बाद',
'before' => ':time के पहले',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count godinu|:count godine|:count godina',
'y' => ':count godinu|:count godine|:count godina',
'month' => ':count mjesec|:count mjeseca|:count mjeseci',
'm' => ':count mjesec|:count mjeseca|:count mjeseci',
'week' => ':count tjedan|:count tjedna|:count tjedana',
'w' => ':count tjedan|:count tjedna|:count tjedana',
'day' => ':count dan|:count dana|:count dana',
'd' => ':count dan|:count dana|:count dana',
'hour' => ':count sat|:count sata|:count sati',
'h' => ':count sat|:count sata|:count sati',
'minute' => ':count minutu|:count minute |:count minuta',
'min' => ':count minutu|:count minute |:count minuta',
'second' => ':count sekundu|:count sekunde|:count sekundi',
's' => ':count sekundu|:count sekunde|:count sekundi',
'ago' => 'prije :time',
'from_now' => 'za :time',
'after' => 'za :time',
'before' => 'prije :time',
);

View File

@ -0,0 +1,52 @@
<?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.
*/
return array(
'year' => ':count év',
'y' => ':count év',
'month' => ':count hónap',
'm' => ':count hónap',
'week' => ':count hét',
'w' => ':count hét',
'day' => ':count nap',
'd' => ':count nap',
'hour' => ':count óra',
'h' => ':count óra',
'minute' => ':count perc',
'min' => ':count perc',
'second' => ':count másodperc',
's' => ':count másodperc',
'ago' => ':time',
'from_now' => ':time múlva',
'after' => ':time később',
'before' => ':time korábban',
'year_ago' => ':count éve',
'month_ago' => ':count hónapja',
'week_ago' => ':count hete',
'day_ago' => ':count napja',
'hour_ago' => ':count órája',
'minute_ago' => ':count perce',
'second_ago' => ':count másodperce',
'year_after' => ':count évvel',
'month_after' => ':count hónappal',
'week_after' => ':count héttel',
'day_after' => ':count nappal',
'hour_after' => ':count órával',
'minute_after' => ':count perccel',
'second_after' => ':count másodperccel',
'year_before' => ':count évvel',
'month_before' => ':count hónappal',
'week_before' => ':count héttel',
'day_before' => ':count nappal',
'hour_before' => ':count órával',
'minute_before' => ':count perccel',
'second_before' => ':count másodperccel',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'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 առաջ',
'from_now' => ':time ներկա պահից',
'after' => ':time հետո',
'before' => ':time առաջ',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count tahun',
'y' => ':count tahun',
'month' => ':count bulan',
'm' => ':count bulan',
'week' => ':count minggu',
'w' => ':count minggu',
'day' => ':count hari',
'd' => ':count hari',
'hour' => ':count jam',
'h' => ':count jam',
'minute' => ':count menit',
'min' => ':count menit',
'second' => ':count detik',
's' => ':count detik',
'ago' => ':time yang lalu',
'from_now' => ':time dari sekarang',
'after' => ':time setelah',
'before' => ':time sebelum',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => '1 ár|:count ár',
'y' => '1 ár|:count ár',
'month' => '1 mánuður|:count mánuðir',
'm' => '1 mánuður|:count mánuðir',
'week' => '1 vika|:count vikur',
'w' => '1 vika|:count vikur',
'day' => '1 dagur|:count dagar',
'd' => '1 dagur|:count dagar',
'hour' => '1 klukkutími|:count klukkutímar',
'h' => '1 klukkutími|:count klukkutímar',
'minute' => '1 mínúta|:count mínútur',
'min' => '1 mínúta|:count mínútur',
'second' => '1 sekúnda|:count sekúndur',
's' => '1 sekúnda|:count sekúndur',
'ago' => ':time síðan',
'from_now' => ':time síðan',
'after' => ':time eftir',
'before' => ':time fyrir',
);

View File

@ -0,0 +1,36 @@
<?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.
*/
return array(
'year' => ':count anno|:count anni',
'y' => ':count anno|:count anni',
'month' => ':count mese|:count mesi',
'm' => ':count mese|:count mesi',
'week' => ':count settimana|:count settimane',
'w' => ':count settimana|:count settimane',
'day' => ':count giorno|:count giorni',
'd' => ':count giorno|:count giorni',
'hour' => ':count ora|:count ore',
'h' => ':count ora|:count ore',
'minute' => ':count minuto|:count minuti',
'min' => ':count minuto|:count minuti',
'second' => ':count secondo|:count secondi',
's' => ':count secondo|:count secondi',
'ago' => ':time fa',
'from_now' => 'tra :time',
'after' => ':time dopo',
'before' => ':time prima',
'diff_now' => 'proprio ora',
'diff_yesterday' => 'ieri',
'diff_tomorrow' => 'domani',
'diff_before_yesterday' => "l'altro ieri",
'diff_after_tomorrow' => 'dopodomani',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'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前',
'from_now' => '今から:time',
'after' => ':time後',
'before' => ':time前',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'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 უკან',
'from_now' => ':time შემდეგ',
'after' => ':time შემდეგ',
'before' => ':time უკან',
);

View File

@ -0,0 +1,29 @@
<?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.
*/
return array(
'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 бұрын',
'from_now' => ':time кейін',
'after' => ':time кейін',
'before' => ':time бұрын',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'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មុន',
'from_now' => ':timeពីឥឡូវ',
'after' => 'នៅ​ក្រោយ :time',
'before' => 'នៅ​មុន :time',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'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 전',
'from_now' => ':time 후',
'after' => ':time 이후',
'before' => ':time 이전',
);

View File

@ -0,0 +1,38 @@
<?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.
*/
return array(
'year' => ':count metus|:count metus|:count metų',
'y' => ':count metus|:count metus|:count metų',
'month' => ':count mėnesį|:count mėnesius|:count mėnesių',
'm' => ':count mėnesį|:count mėnesius|:count mėnesių',
'week' => ':count savaitę|:count savaites|:count savaičių',
'w' => ':count savaitę|:count savaites|:count savaičių',
'day' => ':count dieną|:count dienas|:count dienų',
'd' => ':count dieną|:count dienas|:count dienų',
'hour' => ':count valandą|:count valandas|:count valandų',
'h' => ':count valandą|:count valandas|:count valandų',
'minute' => ':count minutę|:count minutes|:count minučių',
'min' => ':count minutę|:count minutes|:count minučių',
'second' => ':count sekundę|:count sekundes|:count sekundžių',
's' => ':count sekundę|:count sekundes|:count sekundžių',
'second_from_now' => ':count sekundės|:count sekundžių|:count sekundžių',
'minute_from_now' => ':count minutės|:count minučių|:count minučių',
'hour_from_now' => ':count valandos|:count valandų|:count valandų',
'day_from_now' => ':count dienos|:count dienų|:count dienų',
'week_from_now' => ':count savaitės|:count savaičių|:count savaičių',
'month_from_now' => ':count mėnesio|:count mėnesių|:count mėnesių',
'year_from_now' => ':count metų',
'ago' => 'prieš :time',
'from_now' => 'už :time',
'after' => 'po :time',
'before' => ':time nuo dabar',
);

View File

@ -0,0 +1,47 @@
<?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.
*/
return array(
'year' => '0 gadiem|:count gada|:count gadiem',
'y' => '0 gadiem|:count gada|:count gadiem',
'month' => '0 mēnešiem|:count mēneša|:count mēnešiem',
'm' => '0 mēnešiem|:count mēneša|:count mēnešiem',
'week' => '0 nedēļām|:count nedēļas|:count nedēļām',
'w' => '0 nedēļām|:count nedēļas|:count nedēļām',
'day' => '0 dienām|:count dienas|:count dienām',
'd' => '0 dienām|:count dienas|:count dienām',
'hour' => '0 stundām|:count stundas|:count stundām',
'h' => '0 stundām|:count stundas|:count stundām',
'minute' => '0 minūtēm|:count minūtes|:count minūtēm',
'min' => '0 minūtēm|:count minūtes|:count minūtēm',
'second' => '0 sekundēm|:count sekundes|:count sekundēm',
's' => '0 sekundēm|:count sekundes|:count sekundēm',
'ago' => 'pirms :time',
'from_now' => 'pēc :time',
'after' => ':time vēlāk',
'before' => ':time pirms',
'year_after' => '0 gadus|:count gadu|:count gadus',
'month_after' => '0 mēnešus|:count mēnesi|:count mēnešus',
'week_after' => '0 nedēļas|:count nedēļu|:count nedēļas',
'day_after' => '0 dienas|:count dienu|:count dienas',
'hour_after' => '0 stundas|:count stundu|:count stundas',
'minute_after' => '0 minūtes|:count minūti|:count minūtes',
'second_after' => '0 sekundes|:count sekundi|:count sekundes',
'year_before' => '0 gadus|:count gadu|:count gadus',
'month_before' => '0 mēnešus|:count mēnesi|:count mēnešus',
'week_before' => '0 nedēļas|:count nedēļu|:count nedēļas',
'day_before' => '0 dienas|:count dienu|:count dienas',
'hour_before' => '0 stundas|:count stundu|:count stundas',
'minute_before' => '0 minūtes|:count minūti|:count minūtes',
'second_before' => '0 sekundes|:count sekundi|:count sekundes',
);

View File

@ -0,0 +1,24 @@
<?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.
*/
return array(
'year' => ':count година|:count години',
'month' => ':count месец|:count месеци',
'week' => ':count седмица|:count седмици',
'day' => ':count ден|:count дена',
'hour' => ':count час|:count часа',
'minute' => ':count минута|:count минути',
'second' => ':count секунда|:count секунди',
'ago' => 'пред :time',
'from_now' => ':time од сега',
'after' => 'по :time',
'before' => 'пред :time',
);

View File

@ -0,0 +1,62 @@
<?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>
*/
return array(
'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 секунды',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count tahun',
'y' => ':count tahun',
'month' => ':count bulan',
'm' => ':count bulan',
'week' => ':count minggu',
'w' => ':count minggu',
'day' => ':count hari',
'd' => ':count hari',
'hour' => ':count jam',
'h' => ':count jam',
'minute' => ':count minit',
'min' => ':count minit',
'second' => ':count saat',
's' => ':count saat',
'ago' => ':time yang lalu',
'from_now' => ':time dari sekarang',
'after' => ':time selepas',
'before' => ':time sebelum',
);

View File

@ -0,0 +1,37 @@
<?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.
*/
return array(
'year' => ':count နှစ်|:count နှစ်',
'y' => ':count နှစ်|:count နှစ်',
'month' => ':count လ|:count လ',
'm' => ':count လ|:count လ',
'week' => ':count ပတ်|:count ပတ်',
'w' => ':count ပတ်|:count ပတ်',
'day' => ':count ရက်|:count ရက်',
'd' => ':count ရက်|:count ရက်',
'hour' => ':count နာရီ|:count နာရီ',
'h' => ':count နာရီ|:count နာရီ',
'minute' => ':count မိနစ်|:count မိနစ်',
'min' => ':count မိနစ်|:count မိနစ်',
'second' => ':count စက္ကန့်|:count စက္ကန့်',
's' => ':count စက္ကန့်|:count စက္ကန့်',
'ago' => 'လွန်ခဲ့သော :time က',
'from_now' => 'ယခုမှစ၍နောက် :time အကြာ',
'after' => ':time ကြာပြီးနောက်',
'before' => ':time မတိုင်ခင်',
'diff_now' => 'အခုလေးတင်',
'diff_yesterday' => 'မနေ့က',
'diff_tomorrow' => 'မနက်ဖြန်',
'diff_before_yesterday' => 'တမြန်နေ့က',
'diff_after_tomorrow' => 'တဘက်ခါ',
'period_recurrences' => ':count ကြိမ်',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'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 पहिले',
'from_now' => ':time देखि',
'after' => ':time पछि',
'before' => ':time अघि',
);

View File

@ -0,0 +1,36 @@
<?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.
*/
return array(
'year' => ':count jaar',
'y' => ':count jaar',
'month' => ':count maand|:count maanden',
'm' => ':count maand|:count maanden',
'week' => ':count week|:count weken',
'w' => ':count week|:count weken',
'day' => ':count dag|:count dagen',
'd' => ':count dag|:count dagen',
'hour' => ':count uur',
'h' => ':count uur',
'minute' => ':count minuut|:count minuten',
'min' => ':count minuut|:count minuten',
'second' => ':count seconde|:count seconden',
's' => ':count seconde|:count seconden',
'ago' => ':time geleden',
'from_now' => 'over :time',
'after' => ':time later',
'before' => ':time eerder',
'diff_now' => 'nu',
'diff_yesterday' => 'gisteren',
'diff_tomorrow' => 'morgen',
'diff_after_tomorrow' => 'overmorgen',
'diff_before_yesterday' => 'eergisteren',
);

View File

@ -0,0 +1,36 @@
<?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.
*/
return array(
'year' => ':count år|:count år',
'y' => ':count år|:count år',
'month' => ':count måned|:count måneder',
'm' => ':count måned|:count måneder',
'week' => ':count uke|:count uker',
'w' => ':count uke|:count uker',
'day' => ':count dag|:count dager',
'd' => ':count dag|:count dager',
'hour' => ':count time|:count timer',
'h' => ':count time|:count timer',
'minute' => ':count minutt|:count minutter',
'min' => ':count minutt|:count minutter',
'second' => ':count sekund|:count sekunder',
's' => ':count sekund|:count sekunder',
'ago' => ':time siden',
'from_now' => 'om :time',
'after' => ':time etter',
'before' => ':time før',
'diff_now' => 'akkurat nå',
'diff_yesterday' => 'i går',
'diff_tomorrow' => 'i morgen',
'diff_before_yesterday' => 'i forgårs',
'diff_after_tomorrow' => 'i overmorgen',
);

View File

@ -0,0 +1,44 @@
<?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.
*/
\Symfony\Component\Translation\PluralizationRules::set(function ($number) {
return $number == 1 ? 0 : 1;
}, 'oc');
return array(
'year' => ':count an|:count ans',
'y' => ':count an|:count ans',
'month' => ':count mes|:count meses',
'm' => ':count mes|:count meses',
'week' => ':count setmana|:count setmanas',
'w' => ':count setmana|:count setmanas',
'day' => ':count jorn|:count jorns',
'd' => ':count jorn|:count jorns',
'hour' => ':count ora|:count oras',
'h' => ':count ora|:count oras',
'minute' => ':count minuta|:count minutas',
'min' => ':count minuta|:count minutas',
'second' => ':count segonda|:count segondas',
's' => ':count segonda|:count segondas',
'ago' => 'fa :time',
'from_now' => 'dins :time',
'after' => ':time aprèp',
'before' => ':time abans',
'diff_now' => 'ara meteis',
'diff_yesterday' => 'ièr',
'diff_tomorrow' => 'deman',
'diff_before_yesterday' => 'ièr delà',
'diff_after_tomorrow' => 'deman passat',
'period_recurrences' => ':count còp|:count còps',
'period_interval' => 'cada :interval',
'period_start_date' => 'de :date',
'period_end_date' => 'fins a :date',
);

View File

@ -0,0 +1,36 @@
<?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.
*/
return array(
'year' => ':count rok|:count lata|:count lat',
'y' => ':countr|:countl',
'month' => ':count miesiąc|:count miesiące|:count miesięcy',
'm' => ':countmies',
'week' => ':count tydzień|:count tygodnie|:count tygodni',
'w' => ':counttyg',
'day' => ':count dzień|:count dni|:count dni',
'd' => ':countd',
'hour' => ':count godzina|:count godziny|:count godzin',
'h' => ':countg',
'minute' => ':count minuta|:count minuty|:count minut',
'min' => ':countm',
'second' => ':count sekunda|:count sekundy|:count sekund',
's' => ':counts',
'ago' => ':time temu',
'from_now' => ':time od teraz',
'after' => ':time po',
'before' => ':time przed',
'diff_now' => 'przed chwilą',
'diff_yesterday' => 'wczoraj',
'diff_tomorrow' => 'jutro',
'diff_before_yesterday' => 'przedwczoraj',
'diff_after_tomorrow' => 'pojutrze',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count کال|:count کاله',
'y' => ':countکال|:countکاله',
'month' => ':count مياشت|:count مياشتي',
'm' => ':countمياشت|:countمياشتي',
'week' => ':count اونۍ|:count اونۍ',
'w' => ':countاونۍ|:countاونۍ',
'day' => ':count ورځ|:count ورځي',
'd' => ':countورځ|:countورځي',
'hour' => ':count ساعت|:count ساعته',
'h' => ':countساعت|:countساعته',
'minute' => ':count دقيقه|:count دقيقې',
'min' => ':countدقيقه|:countدقيقې',
'second' => ':count ثانيه|:count ثانيې',
's' => ':countثانيه|:countثانيې',
'ago' => ':time دمخه',
'from_now' => ':time له اوس څخه',
'after' => ':time وروسته',
'before' => ':time دمخه',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count ano|:count anos',
'y' => ':count ano|:count anos',
'month' => ':count mês|:count meses',
'm' => ':count mês|:count meses',
'week' => ':count semana|:count semanas',
'w' => ':count semana|:count semanas',
'day' => ':count dia|:count dias',
'd' => ':count dia|:count dias',
'hour' => ':count hora|:count horas',
'h' => ':count hora|:count horas',
'minute' => ':count minuto|:count minutos',
'min' => ':count minuto|:count minutos',
'second' => ':count segundo|:count segundos',
's' => ':count segundo|:count segundos',
'ago' => ':time atrás',
'from_now' => 'em :time',
'after' => ':time depois',
'before' => ':time antes',
);

View File

@ -0,0 +1,40 @@
<?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.
*/
return array(
'year' => ':count ano|:count anos',
'y' => ':counta|:counta',
'month' => ':count mês|:count meses',
'm' => ':countm|:countm',
'week' => ':count semana|:count semanas',
'w' => ':countsem|:countsem',
'day' => ':count dia|:count dias',
'd' => ':countd|:countd',
'hour' => ':count hora|:count horas',
'h' => ':counth|:counth',
'minute' => ':count minuto|:count minutos',
'min' => ':countmin|:countmin',
'second' => ':count segundo|:count segundos',
's' => ':counts|:counts',
'ago' => 'há :time',
'from_now' => 'em :time',
'after' => 'após :time',
'before' => ':time atrás',
'diff_now' => 'agora',
'diff_yesterday' => 'ontem',
'diff_tomorrow' => 'amanhã',
'diff_before_yesterday' => 'anteontem',
'diff_after_tomorrow' => 'depois de amanhã',
'period_recurrences' => 'uma|:count vez',
'period_interval' => 'toda :interval',
'period_start_date' => 'de :date',
'period_end_date' => 'até :date',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => 'un an|:count ani|:count ani',
'y' => 'un an|:count ani|:count ani',
'month' => 'o lună|:count luni|:count luni',
'm' => 'o lună|:count luni|:count luni',
'week' => 'o săptămână|:count săptămâni|:count săptămâni',
'w' => 'o săptămână|:count săptămâni|:count săptămâni',
'day' => 'o zi|:count zile|:count zile',
'd' => 'o zi|:count zile|:count zile',
'hour' => 'o oră|:count ore|:count ore',
'h' => 'o oră|:count ore|:count ore',
'minute' => 'un minut|:count minute|:count minute',
'min' => 'un minut|:count minute|:count minute',
'second' => 'o secundă|:count secunde|:count secunde',
's' => 'o secundă|:count secunde|:count secunde',
'ago' => 'acum :time',
'from_now' => ':time de acum',
'after' => 'peste :time',
'before' => 'acum :time',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count год|:count года|:count лет',
'y' => ':count г|:count г|:count л',
'month' => ':count месяц|:count месяца|:count месяцев',
'm' => ':count м|:count м|:count м',
'week' => ':count неделю|:count недели|:count недель',
'w' => ':count н|:count н|:count н',
'day' => ':count день|:count дня|:count дней',
'd' => ':count д|:count д|:count д',
'hour' => ':count час|:count часа|:count часов',
'h' => ':count ч|:count ч|:count ч',
'minute' => ':count минуту|:count минуты|:count минут',
'min' => ':count мин|:count мин|:count мин',
'second' => ':count секунду|:count секунды|:count секунд',
's' => ':count с|:count с|:count с',
'ago' => ':time назад',
'from_now' => 'через :time',
'after' => ':time после',
'before' => ':time до',
);

View File

@ -0,0 +1,35 @@
<?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.
*/
\Symfony\Component\Translation\PluralizationRules::set(function ($number) {
return ((1 == $number % 10) && (11 != $number % 100)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
}, 'sh');
return array(
'year' => ':count godina|:count godine|:count godina',
'y' => ':count godina|:count godine|:count godina',
'month' => ':count mesec|:count meseca|:count meseci',
'm' => ':count mesec|:count meseca|:count meseci',
'week' => ':count nedelja|:count nedelje|:count nedelja',
'w' => ':count nedelja|:count nedelje|:count nedelja',
'day' => ':count dan|:count dana|:count dana',
'd' => ':count dan|:count dana|:count dana',
'hour' => ':count čas|:count časa|:count časova',
'h' => ':count čas|:count časa|:count časova',
'minute' => ':count minut|:count minuta|:count minuta',
'min' => ':count minut|:count minuta|:count minuta',
'second' => ':count sekund|:count sekunda|:count sekundi',
's' => ':count sekund|:count sekunda|:count sekundi',
'ago' => 'pre :time',
'from_now' => 'za :time',
'after' => 'nakon :time',
'before' => ':time raniјe',
);

View File

@ -0,0 +1,38 @@
<?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.
*/
return array(
'year' => 'rok|:count roky|:count rokov',
'y' => 'rok|:count roky|:count rokov',
'month' => 'mesiac|:count mesiace|:count mesiacov',
'm' => 'mesiac|:count mesiace|:count mesiacov',
'week' => 'týždeň|:count týždne|:count týždňov',
'w' => 'týždeň|:count týždne|:count týždňov',
'day' => 'deň|:count dni|:count dní',
'd' => 'deň|:count dni|:count dní',
'hour' => 'hodinu|:count hodiny|:count hodín',
'h' => 'hodinu|:count hodiny|:count hodín',
'minute' => 'minútu|:count minúty|:count minút',
'min' => 'minútu|:count minúty|:count minút',
'second' => 'sekundu|:count sekundy|:count sekúnd',
's' => 'sekundu|:count sekundy|:count sekúnd',
'ago' => 'pred :time',
'from_now' => 'za :time',
'after' => 'o :time neskôr',
'before' => ':time predtým',
'year_ago' => 'rokom|:count rokmi|:count rokmi',
'month_ago' => 'mesiacom|:count mesiacmi|:count mesiacmi',
'week_ago' => 'týždňom|:count týždňami|:count týždňami',
'day_ago' => 'dňom|:count dňami|:count dňami',
'hour_ago' => 'hodinou|:count hodinami|:count hodinami',
'minute_ago' => 'minútou|:count minútami|:count minútami',
'second_ago' => 'sekundou|:count sekundami|:count sekundami',
);

View File

@ -0,0 +1,43 @@
<?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.
*/
return array(
'year' => ':count leto|:count leti|:count leta|:count let',
'y' => ':count leto|:count leti|:count leta|:count let',
'month' => ':count mesec|:count meseca|:count mesece|:count mesecev',
'm' => ':count mesec|:count meseca|:count mesece|:count mesecev',
'week' => ':count teden|:count tedna|:count tedne|:count tednov',
'w' => ':count teden|:count tedna|:count tedne|:count tednov',
'day' => ':count dan|:count dni|:count dni|:count dni',
'd' => ':count dan|:count dni|:count dni|:count dni',
'hour' => ':count uro|:count uri|:count ure|:count ur',
'h' => ':count uro|:count uri|:count ure|:count ur',
'minute' => ':count minuto|:count minuti|:count minute|:count minut',
'min' => ':count minuto|:count minuti|:count minute|:count minut',
'second' => ':count sekundo|:count sekundi|:count sekunde|:count sekund',
's' => ':count sekundo|:count sekundi|:count sekunde|:count sekund',
'year_ago' => ':count letom|:count leti|:count leti|:count leti',
'month_ago' => ':count mesecem|:count meseci|:count meseci|:count meseci',
'week_ago' => ':count tednom|:count tednoma|:count tedni|:count tedni',
'day_ago' => ':count dnem|:count dnevoma|:count dnevi|:count dnevi',
'hour_ago' => ':count uro|:count urama|:count urami|:count urami',
'minute_ago' => ':count minuto|:count minutama|:count minutami|:count minutami',
'second_ago' => ':count sekundo|:count sekundama|:count sekundami|:count sekundami',
'ago' => 'pred :time',
'from_now' => 'čez :time',
'after' => 'čez :time',
'before' => 'pred :time',
'diff_now' => 'ravnokar',
'diff_yesterday' => 'včeraj',
'diff_tomorrow' => 'jutri',
'diff_before_yesterday' => 'predvčerajšnjim',
'diff_after_tomorrow' => 'pojutrišnjem',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count vit|:count vjet',
'y' => ':count vit|:count vjet',
'month' => ':count muaj|:count muaj',
'm' => ':count muaj|:count muaj',
'week' => ':count javë|:count javë',
'w' => ':count javë|:count javë',
'day' => ':count ditë|:count ditë',
'd' => ':count ditë|:count ditë',
'hour' => ':count orë|:count orë',
'h' => ':count orë|:count orë',
'minute' => ':count minutë|:count minuta',
'min' => ':count minutë|:count minuta',
'second' => ':count sekondë|:count sekonda',
's' => ':count sekondë|:count sekonda',
'ago' => ':time më parë',
'from_now' => ':time nga tani',
'after' => ':time pas',
'before' => ':time para',
);

View File

@ -0,0 +1,37 @@
<?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.
*/
return array(
'year' => ':count godina|:count godine|:count godina',
'y' => ':count godina|:count godine|:count godina',
'month' => ':count mesec|:count meseca|:count meseci',
'm' => ':count mesec|:count meseca|:count meseci',
'week' => ':count nedelja|:count nedelje|:count nedelja',
'w' => ':count nedelja|:count nedelje|:count nedelja',
'day' => ':count dan|:count dana|:count dana',
'd' => ':count dan|:count dana|:count dana',
'hour' => ':count sat|:count sata|:count sati',
'h' => ':count sat|:count sata|:count sati',
'minute' => ':count minut|:count minuta |:count minuta',
'min' => ':count minut|:count minuta |:count minuta',
'second' => ':count sekund|:count sekunde|:count sekunde',
's' => ':count sekund|:count sekunde|:count sekunde',
'ago' => 'pre :time',
'from_now' => ':time od sada',
'after' => 'nakon :time',
'before' => 'pre :time',
'year_from_now' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
'year_ago' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
'week_from_now' => '{1} :count nedelju|{2,3,4} :count nedelje|[5,Inf[ :count nedelja',
'week_ago' => '{1} :count nedelju|{2,3,4} :count nedelje|[5,Inf[ :count nedelja',
);

View File

@ -0,0 +1,43 @@
<?php
/*
* This file is part of the Carbon package.
*
* (c) Nikola Zeravcic <office@bytenet.rs>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return array(
'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[ :count година',
'y' => ':count г.',
'month' => '{1} :count месец|{2,3,4}:count месеца|[5,Inf[ :count месеци',
'm' => ':count м.',
'week' => '{1} :count недеља|{2,3,4}:count недеље|[5,Inf[ :count недеља',
'w' => ':count нед.',
'day' => '{1,21,31} :count дан|[2,Inf[ :count дана',
'd' => ':count д.',
'hour' => '{1,21} :count сат|{2,3,4,22,23,24}:count сата|[5,Inf[ :count сати',
'h' => ':count ч.',
'minute' => '{1,21,31,41,51} :count минут|[2,Inf[ :count минута',
'min' => ':count мин.',
'second' => '{1,21,31,41,51} :count секунд|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count секунде|[5,Inf[:count секунди',
's' => ':count сек.',
'ago' => 'пре :time',
'from_now' => 'за :time',
'after' => ':time након',
'before' => ':time пре',
'year_from_now' => '{1,21,31,41,51} :count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count године|[5,Inf[ :count година',
'year_ago' => '{1,21,31,41,51} :count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count године|[5,Inf[ :count година',
'week_from_now' => '{1} :count недељу|{2,3,4} :count недеље|[5,Inf[ :count недеља',
'week_ago' => '{1} :count недељу|{2,3,4} :count недеље|[5,Inf[ :count недеља',
'diff_now' => 'управо сада',
'diff_yesterday' => 'јуче',
'diff_tomorrow' => 'сутра',
'diff_before_yesterday' => 'прекјуче',
'diff_after_tomorrow' => 'прекосутра',
);

View File

@ -0,0 +1,43 @@
<?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.
*/
return array(
'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[ :count година',
'y' => ':count г.',
'month' => '{1} :count мјесец|{2,3,4}:count мјесеца|[5,Inf[ :count мјесеци',
'm' => ':count мј.',
'week' => '{1} :count недјеља|{2,3,4}:count недјеље|[5,Inf[ :count недјеља',
'w' => ':count нед.',
'day' => '{1,21,31} :count дан|[2,Inf[ :count дана',
'd' => ':count д.',
'hour' => '{1,21} :count сат|{2,3,4,22,23,24}:count сата|[5,Inf[ :count сати',
'h' => ':count ч.',
'minute' => '{1,21,31,41,51} :count минут|[2,Inf[ :count минута',
'min' => ':count мин.',
'second' => '{1,21,31,41,51} :count секунд|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count секунде|[5,Inf[:count секунди',
's' => ':count сек.',
'ago' => 'прије :time',
'from_now' => 'за :time',
'after' => ':time након',
'before' => ':time прије',
'year_from_now' => '{1,21,31,41,51} :count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count године|[5,Inf[ :count година',
'year_ago' => '{1,21,31,41,51} :count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count године|[5,Inf[ :count година',
'week_from_now' => '{1} :count недјељу|{2,3,4} :count недјеље|[5,Inf[ :count недјеља',
'week_ago' => '{1} :count недјељу|{2,3,4} :count недјеље|[5,Inf[ :count недјеља',
'diff_now' => 'управо сада',
'diff_yesterday' => 'јуче',
'diff_tomorrow' => 'сутра',
'diff_before_yesterday' => 'прекјуче',
'diff_after_tomorrow' => 'прекосјутра',
);

View File

@ -0,0 +1,43 @@
<?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.
*/
return array(
'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count godine|[0,Inf[ :count godina',
'y' => ':count g.',
'month' => '{1} :count mjesec|{2,3,4}:count mjeseca|[5,Inf[ :count mjeseci',
'm' => ':count mj.',
'week' => '{1} :count nedjelja|{2,3,4}:count nedjelje|[5,Inf[ :count nedjelja',
'w' => ':count ned.',
'day' => '{1,21,31} :count dan|[2,Inf[ :count dana',
'd' => ':count d.',
'hour' => '{1,21} :count sat|{2,3,4,22,23,24}:count sata|[5,Inf[ :count sati',
'h' => ':count č.',
'minute' => '{1,21,31,41,51} :count minut|[2,Inf[ :count minuta',
'min' => ':count min.',
'second' => '{1,21,31,41,51} :count sekund|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count sekunde|[5,Inf[:count sekundi',
's' => ':count sek.',
'ago' => 'prije :time',
'from_now' => 'za :time',
'after' => ':time nakon',
'before' => ':time prije',
'year_from_now' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
'year_ago' => '{1,21,31,41,51} :count godinu|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54} :count godine|[5,Inf[ :count godina',
'week_from_now' => '{1} :count nedjelju|{2,3,4} :count nedjelje|[5,Inf[ :count nedjelja',
'week_ago' => '{1} :count nedjelju|{2,3,4} :count nedjelje|[5,Inf[ :count nedjelja',
'diff_now' => 'upravo sada',
'diff_yesterday' => 'juče',
'diff_tomorrow' => 'sutra',
'diff_before_yesterday' => 'prekjuče',
'diff_after_tomorrow' => 'preksutra',
);

View File

@ -0,0 +1,12 @@
<?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.
*/
return require __DIR__.'/sr_Latn_ME.php';

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => ':count år|:count år',
'y' => ':count år|:count år',
'month' => ':count månad|:count månader',
'm' => ':count månad|:count månader',
'week' => ':count vecka|:count veckor',
'w' => ':count vecka|:count veckor',
'day' => ':count dag|:count dagar',
'd' => ':count dag|:count dagar',
'hour' => ':count timme|:count timmar',
'h' => ':count timme|:count timmar',
'minute' => ':count minut|:count minuter',
'min' => ':count minut|:count minuter',
'second' => ':count sekund|:count sekunder',
's' => ':count sekund|:count sekunder',
'ago' => ':time sedan',
'from_now' => 'om :time',
'after' => ':time efter',
'before' => ':time före',
);

View File

@ -0,0 +1,31 @@
<?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.
*/
return array(
'year' => 'mwaka 1|miaka :count',
'y' => 'mwaka 1|miaka :count',
'month' => 'mwezi 1|miezi :count',
'm' => 'mwezi 1|miezi :count',
'week' => 'wiki 1|wiki :count',
'w' => 'wiki 1|wiki :count',
'day' => 'siku 1|siku :count',
'd' => 'siku 1|siku :count',
'hour' => 'saa 1|masaa :count',
'h' => 'saa 1|masaa :count',
'minute' => 'dakika 1|dakika :count',
'min' => 'dakika 1|dakika :count',
'second' => 'sekunde 1|sekunde :count',
's' => 'sekunde 1|sekunde :count',
'ago' => ':time ziliyopita',
'from_now' => ':time kwanzia sasa',
'after' => ':time baada',
'before' => ':time kabla',
);

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