123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?php
- declare(strict_types=1);
- /**
- * 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 Tests\Jenssegers;
- use Carbon\Translator;
- use Symfony\Component\Translation\Loader\ArrayLoader;
- class TranslationTest extends TestCaseBase
- {
- public function testGetsAndSetsTranslator()
- {
- $translator = new Translator('nl');
- $translator->addLoader('array', new ArrayLoader());
- $this->assertNotEquals($translator, JenssegersDate::getTranslator());
- JenssegersDate::setTranslator($translator);
- $this->assertEquals($translator, JenssegersDate::getTranslator());
- }
- public function testFallback()
- {
- JenssegersDate::setLocale('xx');
- $date = JenssegersDate::parse('-5 years');
- $this->assertSame('5 years ago', $date->ago());
- }
- public function testFallbackWithRegion()
- {
- JenssegersDate::setFallbackLocale('en_US');
- JenssegersDate::setLocale('xx');
- $date = JenssegersDate::parse('-5 years');
- $this->assertSame('5 years ago', $date->ago());
- }
- public function testMultiplePluralForms()
- {
- JenssegersDate::setLocale('hr');
- $date = JenssegersDate::parse('-1 years');
- $this->assertSame('prije 1 godinu', $date->ago());
- $date = JenssegersDate::parse('-2 years');
- $this->assertSame('prije 2 godine', $date->ago());
- $date = JenssegersDate::parse('-3 years');
- $this->assertSame('prije 3 godine', $date->ago());
- $date = JenssegersDate::parse('-5 years');
- $this->assertSame('prije 5 godina', $date->ago());
- }
- public function testCustomSuffix()
- {
- JenssegersDate::setLocale('de');
- // If we use -1 month, we have the chance of it being converted to 4 weeks.
- $date = JenssegersDate::parse('-40 days');
- $this->assertSame('vor 1 Monat', $date->ago());
- $date = JenssegersDate::now()->subMonthsNoOverflow(5);
- $this->assertSame('vor 5 Monaten', $date->ago());
- $date = JenssegersDate::parse('-5 seconds');
- $this->assertSame('vor 5 Sekunden', $date->ago());
- }
- public function testTimespanTranslated()
- {
- JenssegersDate::setLocale('nl');
- $date = new JenssegersDate(1403619368);
- $date = $date->sub('-100 days -3 hours -20 minutes');
- $this->assertSame('3 maanden, 1 week, 1 dag, 3 uur, 20 minuten', $date->timespan(1403619368));
- }
- public function testParse()
- {
- JenssegersDate::setLocale('nl');
- $date = JenssegersDate::parse('1 januari 2015');
- $this->assertSame('2015-01-01', $date->format('Y-m-d'));
- JenssegersDate::setLocale('nl');
- $date = JenssegersDate::parse('zaterdag 21 maart 2015');
- $this->assertSame('2015-03-21', $date->format('Y-m-d'));
- }
- public function testCreateFromFormat()
- {
- JenssegersDate::setLocale('nl');
- $date = JenssegersDate::createFromFormat('d F Y', '1 januari 2015');
- $this->assertSame('2015-01-01', $date->format('Y-m-d'));
- JenssegersDate::setLocale('nl');
- $date = JenssegersDate::createFromFormat('D d F Y', 'zaterdag 21 maart 2015');
- $this->assertSame('2015-03-21', $date->format('Y-m-d'));
- }
- public function testAgoTranslated()
- {
- JenssegersDate::setLocale('nl');
- JenssegersDate::setTestNow(JenssegersDate::now());
- $date = JenssegersDate::parse('-5 years');
- $this->assertSame('5 jaar geleden', $date->ago());
- $date = JenssegersDate::now()->subMonthsNoOverflow(5);
- $this->assertSame('5 maanden geleden', $date->ago());
- $date = JenssegersDate::parse('-32 days');
- $this->assertSame('1 maand geleden', $date->ago());
- $date = JenssegersDate::parse('-4 days');
- $this->assertSame('4 dagen geleden', $date->ago());
- $date = JenssegersDate::parse('-1 day');
- $this->assertSame('1 dag geleden', $date->ago());
- $date = JenssegersDate::parse('-3 hours');
- $this->assertSame('3 uur geleden', $date->ago());
- $date = JenssegersDate::parse('-1 hour');
- $this->assertSame('1 uur geleden', $date->ago());
- $date = JenssegersDate::parse('-2 minutes');
- $this->assertSame('2 minuten geleden', $date->ago());
- $date = JenssegersDate::parse('-1 minute');
- $this->assertSame('1 minuut geleden', $date->ago());
- $date = JenssegersDate::parse('-50 second');
- $this->assertSame('50 seconden geleden', $date->ago());
- $date = JenssegersDate::parse('-1 second');
- $this->assertSame('1 seconde geleden', $date->ago());
- $date = JenssegersDate::parse('+5 days');
- $this->assertSame('over 5 dagen', $date->ago());
- $date = JenssegersDate::parse('+5 days');
- $this->assertSame('5 dagen later', $date->ago(JenssegersDate::now()));
- $date = JenssegersDate::parse('-5 days');
- $this->assertSame('5 dagen eerder', $date->ago(JenssegersDate::now()));
- JenssegersDate::setLocale('ru');
- $date = JenssegersDate::parse('-21 hours');
- $this->assertSame('21 час до', $date->ago(JenssegersDate::now()));
- $date = JenssegersDate::parse('-11 hours');
- $this->assertSame('11 часов до', $date->ago(JenssegersDate::now()));
- }
- public function testFormatTranslated()
- {
- JenssegersDate::setLocale('nl');
- $date = new JenssegersDate(1367186296);
- $this->assertSame('zondag 28 april 2013 21:58:16', $date->format('l j F Y H:i:s'));
- $date = new JenssegersDate(1367186296);
- $this->assertSame('l 28 F 2013 21:58:16', $date->format('\l j \F Y H:i:s'));
- $date = new JenssegersDate(1367186296);
- $this->assertSame('zo. 28 apr. 2013 21:58:16', $date->format('D j M Y H:i:s'));
- }
- public function testFormatDeclensions()
- {
- JenssegersDate::setLocale('ru');
- $date = new JenssegersDate('10 march 2015');
- $this->assertSame('март 2015', $date->format('F Y'));
- $date = new JenssegersDate('10 march 2015');
- $this->assertSame('10 марта 2015', $date->format('j F Y'));
- $date = new JenssegersDate('10 march 2015');
- $this->assertSame('10. марта 2015', $date->format('j. F Y'));
- }
- public function testTranslateTimeString()
- {
- JenssegersDate::setLocale('ru');
- $date = JenssegersDate::translateTimeString('понедельник 21 март 2015');
- $this->assertSame('monday 21 march 2015', mb_strtolower($date));
- JenssegersDate::setLocale('de');
- $date = JenssegersDate::translateTimeString('Montag 21 März 2015');
- $this->assertSame('monday 21 march 2015', mb_strtolower($date));
- }
- }
|