xref: /webtrees/app/Statistics/Service/CenturyService.php (revision d11be7027e34e3121be11cc025421873364403f9)
193ccd686SRico Sonntag<?php
23976b470SGreg Roach
393ccd686SRico Sonntag/**
493ccd686SRico Sonntag * webtrees: online genealogy
5*d11be702SGreg Roach * Copyright (C) 2023 webtrees development team
693ccd686SRico Sonntag * This program is free software: you can redistribute it and/or modify
793ccd686SRico Sonntag * it under the terms of the GNU General Public License as published by
893ccd686SRico Sonntag * the Free Software Foundation, either version 3 of the License, or
993ccd686SRico Sonntag * (at your option) any later version.
1093ccd686SRico Sonntag * This program is distributed in the hope that it will be useful,
1193ccd686SRico Sonntag * but WITHOUT ANY WARRANTY; without even the implied warranty of
1293ccd686SRico Sonntag * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1393ccd686SRico Sonntag * GNU General Public License for more details.
1493ccd686SRico Sonntag * You should have received a copy of the GNU General Public License
1589f7189bSGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>.
1693ccd686SRico Sonntag */
17fcfa147eSGreg Roach
1893ccd686SRico Sonntagdeclare(strict_types=1);
1993ccd686SRico Sonntag
2093ccd686SRico Sonntagnamespace Fisharebest\Webtrees\Statistics\Service;
2193ccd686SRico Sonntag
2293ccd686SRico Sonntaguse Fisharebest\Webtrees\I18N;
2393ccd686SRico Sonntag
2493ccd686SRico Sonntag/**
2593ccd686SRico Sonntag * Functions for managing centuries.
2693ccd686SRico Sonntag */
2793ccd686SRico Sonntagclass CenturyService
2893ccd686SRico Sonntag{
2993ccd686SRico Sonntag    /**
3093ccd686SRico Sonntag     * Century name, English => 21st, Polish => XXI, etc.
3193ccd686SRico Sonntag     *
3293ccd686SRico Sonntag     * @param int $century
3393ccd686SRico Sonntag     *
3493ccd686SRico Sonntag     * @return string
3593ccd686SRico Sonntag     */
3693ccd686SRico Sonntag    public function centuryName(int $century): string
3793ccd686SRico Sonntag    {
3893ccd686SRico Sonntag        if ($century < 0) {
3993ccd686SRico Sonntag            return I18N::translate('%s BCE', $this->centuryName(-$century));
4093ccd686SRico Sonntag        }
4193ccd686SRico Sonntag
4293ccd686SRico Sonntag        // The current chart engine (Google charts) can't handle <sup></sup> markup
4393ccd686SRico Sonntag        switch ($century) {
4493ccd686SRico Sonntag            case 21:
4593ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '21st'));
4693ccd686SRico Sonntag            case 20:
4793ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '20th'));
4893ccd686SRico Sonntag            case 19:
4993ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '19th'));
5093ccd686SRico Sonntag            case 18:
5193ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '18th'));
5293ccd686SRico Sonntag            case 17:
5393ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '17th'));
5493ccd686SRico Sonntag            case 16:
5593ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '16th'));
5693ccd686SRico Sonntag            case 15:
5793ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '15th'));
5893ccd686SRico Sonntag            case 14:
5993ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '14th'));
6093ccd686SRico Sonntag            case 13:
6193ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '13th'));
6293ccd686SRico Sonntag            case 12:
6393ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '12th'));
6493ccd686SRico Sonntag            case 11:
6593ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '11th'));
6693ccd686SRico Sonntag            case 10:
6793ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '10th'));
6893ccd686SRico Sonntag            case 9:
6993ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '9th'));
7093ccd686SRico Sonntag            case 8:
7193ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '8th'));
7293ccd686SRico Sonntag            case 7:
7393ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '7th'));
7493ccd686SRico Sonntag            case 6:
7593ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '6th'));
7693ccd686SRico Sonntag            case 5:
7793ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '5th'));
7893ccd686SRico Sonntag            case 4:
7993ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '4th'));
8093ccd686SRico Sonntag            case 3:
8193ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '3rd'));
8293ccd686SRico Sonntag            case 2:
8393ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '2nd'));
8493ccd686SRico Sonntag            case 1:
8593ccd686SRico Sonntag                return strip_tags(I18N::translateContext('CENTURY', '1st'));
8693ccd686SRico Sonntag            default:
8793ccd686SRico Sonntag                return ($century - 1) . '01-' . $century . '00';
8893ccd686SRico Sonntag        }
8993ccd686SRico Sonntag    }
9093ccd686SRico Sonntag}
91