File indexing completed on 2024-04-21 07:45:39

0001 /*
0002  *   SPDX-FileCopyrightText: 2009 Petri Damstén <damu@iki.fi>
0003  *   SPDX-FileCopyrightText: 2014 John Layt <jlayt@kde.org>
0004  *
0005  *   SPDX-License-Identifier: LGPL-2.0-or-later
0006  */
0007 
0008 #include "timeunit_p.h"
0009 #include "unit_p.h"
0010 
0011 #include <KLocalizedString>
0012 
0013 namespace KUnitConversion
0014 {
0015 UnitCategory Time::makeCategory()
0016 {
0017     auto c = UnitCategoryPrivate::makeCategory(TimeCategory, i18n("Time"), i18n("Time"));
0018     auto d = UnitCategoryPrivate::get(c);
0019     KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (time)", "%1 %2");
0020 
0021     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0022                        Yottasecond,
0023                        1e+24,
0024                        i18nc("time unit symbol", "Ys"),
0025                        i18nc("unit description in lists", "yottaseconds"),
0026                        i18nc("unit synonyms for matching user input", "yottasecond;yottaseconds;Ys"),
0027                        symbolString,
0028                        ki18nc("amount in units (real)", "%1 yottaseconds"),
0029                        ki18ncp("amount in units (integer)", "%1 yottasecond", "%1 yottaseconds")));
0030 
0031     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0032                        Zettasecond,
0033                        1e+21,
0034                        i18nc("time unit symbol", "Zs"),
0035                        i18nc("unit description in lists", "zettaseconds"),
0036                        i18nc("unit synonyms for matching user input", "zettasecond;zettaseconds;Zs"),
0037                        symbolString,
0038                        ki18nc("amount in units (real)", "%1 zettaseconds"),
0039                        ki18ncp("amount in units (integer)", "%1 zettasecond", "%1 zettaseconds")));
0040 
0041     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0042                        Exasecond,
0043                        1e+18,
0044                        i18nc("time unit symbol", "Es"),
0045                        i18nc("unit description in lists", "exaseconds"),
0046                        i18nc("unit synonyms for matching user input", "exasecond;exaseconds;Es"),
0047                        symbolString,
0048                        ki18nc("amount in units (real)", "%1 exaseconds"),
0049                        ki18ncp("amount in units (integer)", "%1 exasecond", "%1 exaseconds")));
0050 
0051     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0052                        Petasecond,
0053                        1e+15,
0054                        i18nc("time unit symbol", "Ps"),
0055                        i18nc("unit description in lists", "petaseconds"),
0056                        i18nc("unit synonyms for matching user input", "petasecond;petaseconds;Ps"),
0057                        symbolString,
0058                        ki18nc("amount in units (real)", "%1 petaseconds"),
0059                        ki18ncp("amount in units (integer)", "%1 petasecond", "%1 petaseconds")));
0060 
0061     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0062                        Terasecond,
0063                        1e+12,
0064                        i18nc("time unit symbol", "Ts"),
0065                        i18nc("unit description in lists", "teraseconds"),
0066                        i18nc("unit synonyms for matching user input", "terasecond;teraseconds;Ts"),
0067                        symbolString,
0068                        ki18nc("amount in units (real)", "%1 teraseconds"),
0069                        ki18ncp("amount in units (integer)", "%1 terasecond", "%1 teraseconds")));
0070 
0071     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0072                        Gigasecond,
0073                        1e+09,
0074                        i18nc("time unit symbol", "Gs"),
0075                        i18nc("unit description in lists", "gigaseconds"),
0076                        i18nc("unit synonyms for matching user input", "gigasecond;gigaseconds;Gs"),
0077                        symbolString,
0078                        ki18nc("amount in units (real)", "%1 gigaseconds"),
0079                        ki18ncp("amount in units (integer)", "%1 gigasecond", "%1 gigaseconds")));
0080 
0081     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0082                        Megasecond,
0083                        1e+06,
0084                        i18nc("time unit symbol", "Ms"),
0085                        i18nc("unit description in lists", "megaseconds"),
0086                        i18nc("unit synonyms for matching user input", "megasecond;megaseconds;Ms"),
0087                        symbolString,
0088                        ki18nc("amount in units (real)", "%1 megaseconds"),
0089                        ki18ncp("amount in units (integer)", "%1 megasecond", "%1 megaseconds")));
0090 
0091     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0092                        Kilosecond,
0093                        1000,
0094                        i18nc("time unit symbol", "ks"),
0095                        i18nc("unit description in lists", "kiloseconds"),
0096                        i18nc("unit synonyms for matching user input", "kilosecond;kiloseconds;ks"),
0097                        symbolString,
0098                        ki18nc("amount in units (real)", "%1 kiloseconds"),
0099                        ki18ncp("amount in units (integer)", "%1 kilosecond", "%1 kiloseconds")));
0100 
0101     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0102                        Hectosecond,
0103                        100,
0104                        i18nc("time unit symbol", "hs"),
0105                        i18nc("unit description in lists", "hectoseconds"),
0106                        i18nc("unit synonyms for matching user input", "hectosecond;hectoseconds;hs"),
0107                        symbolString,
0108                        ki18nc("amount in units (real)", "%1 hectoseconds"),
0109                        ki18ncp("amount in units (integer)", "%1 hectosecond", "%1 hectoseconds")));
0110 
0111     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0112                        Decasecond,
0113                        10,
0114                        i18nc("time unit symbol", "das"),
0115                        i18nc("unit description in lists", "decaseconds"),
0116                        i18nc("unit synonyms for matching user input", "decasecond;decaseconds;das"),
0117                        symbolString,
0118                        ki18nc("amount in units (real)", "%1 decaseconds"),
0119                        ki18ncp("amount in units (integer)", "%1 decasecond", "%1 decaseconds")));
0120 
0121     d->addDefaultUnit(UnitPrivate::makeUnit(TimeCategory,
0122                               Second,
0123                               1,
0124                               i18nc("time unit symbol", "s"),
0125                               i18nc("unit description in lists", "seconds"),
0126                               i18nc("unit synonyms for matching user input", "second;seconds;s"),
0127                               symbolString,
0128                               ki18nc("amount in units (real)", "%1 seconds"),
0129                               ki18ncp("amount in units (integer)", "%1 second", "%1 seconds")));
0130 
0131     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0132                        Decisecond,
0133                        0.1,
0134                        i18nc("time unit symbol", "ds"),
0135                        i18nc("unit description in lists", "deciseconds"),
0136                        i18nc("unit synonyms for matching user input", "decisecond;deciseconds;ds"),
0137                        symbolString,
0138                        ki18nc("amount in units (real)", "%1 deciseconds"),
0139                        ki18ncp("amount in units (integer)", "%1 decisecond", "%1 deciseconds")));
0140 
0141     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0142                        Centisecond,
0143                        0.01,
0144                        i18nc("time unit symbol", "cs"),
0145                        i18nc("unit description in lists", "centiseconds"),
0146                        i18nc("unit synonyms for matching user input", "centisecond;centiseconds;cs"),
0147                        symbolString,
0148                        ki18nc("amount in units (real)", "%1 centiseconds"),
0149                        ki18ncp("amount in units (integer)", "%1 centisecond", "%1 centiseconds")));
0150 
0151     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0152                        Millisecond,
0153                        0.001,
0154                        i18nc("time unit symbol", "ms"),
0155                        i18nc("unit description in lists", "milliseconds"),
0156                        i18nc("unit synonyms for matching user input", "millisecond;milliseconds;ms"),
0157                        symbolString,
0158                        ki18nc("amount in units (real)", "%1 milliseconds"),
0159                        ki18ncp("amount in units (integer)", "%1 millisecond", "%1 milliseconds")));
0160 
0161     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0162                        Microsecond,
0163                        1e-06,
0164                        i18nc("time unit symbol", "µs"),
0165                        i18nc("unit description in lists", "microseconds"),
0166                        i18nc("unit synonyms for matching user input", "microsecond;microseconds;µs;us"),
0167                        symbolString,
0168                        ki18nc("amount in units (real)", "%1 microseconds"),
0169                        ki18ncp("amount in units (integer)", "%1 microsecond", "%1 microseconds")));
0170 
0171     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0172                        Nanosecond,
0173                        1e-09,
0174                        i18nc("time unit symbol", "ns"),
0175                        i18nc("unit description in lists", "nanoseconds"),
0176                        i18nc("unit synonyms for matching user input", "nanosecond;nanoseconds;ns"),
0177                        symbolString,
0178                        ki18nc("amount in units (real)", "%1 nanoseconds"),
0179                        ki18ncp("amount in units (integer)", "%1 nanosecond", "%1 nanoseconds")));
0180 
0181     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0182                        Picosecond,
0183                        1e-12,
0184                        i18nc("time unit symbol", "ps"),
0185                        i18nc("unit description in lists", "picoseconds"),
0186                        i18nc("unit synonyms for matching user input", "picosecond;picoseconds;ps"),
0187                        symbolString,
0188                        ki18nc("amount in units (real)", "%1 picoseconds"),
0189                        ki18ncp("amount in units (integer)", "%1 picosecond", "%1 picoseconds")));
0190 
0191     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0192                        Femtosecond,
0193                        1e-15,
0194                        i18nc("time unit symbol", "fs"),
0195                        i18nc("unit description in lists", "femtoseconds"),
0196                        i18nc("unit synonyms for matching user input", "femtosecond;femtoseconds;fs"),
0197                        symbolString,
0198                        ki18nc("amount in units (real)", "%1 femtoseconds"),
0199                        ki18ncp("amount in units (integer)", "%1 femtosecond", "%1 femtoseconds")));
0200 
0201     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0202                        Attosecond,
0203                        1e-18,
0204                        i18nc("time unit symbol", "as"),
0205                        i18nc("unit description in lists", "attoseconds"),
0206                        i18nc("unit synonyms for matching user input", "attosecond;attoseconds;as"),
0207                        symbolString,
0208                        ki18nc("amount in units (real)", "%1 attoseconds"),
0209                        ki18ncp("amount in units (integer)", "%1 attosecond", "%1 attoseconds")));
0210 
0211     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0212                        Zeptosecond,
0213                        1e-21,
0214                        i18nc("time unit symbol", "zs"),
0215                        i18nc("unit description in lists", "zeptoseconds"),
0216                        i18nc("unit synonyms for matching user input", "zeptosecond;zeptoseconds;zs"),
0217                        symbolString,
0218                        ki18nc("amount in units (real)", "%1 zeptoseconds"),
0219                        ki18ncp("amount in units (integer)", "%1 zeptosecond", "%1 zeptoseconds")));
0220 
0221     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0222                        Yoctosecond,
0223                        1e-24,
0224                        i18nc("time unit symbol", "ys"),
0225                        i18nc("unit description in lists", "yoctoseconds"),
0226                        i18nc("unit synonyms for matching user input", "yoctosecond;yoctoseconds;ys"),
0227                        symbolString,
0228                        ki18nc("amount in units (real)", "%1 yoctoseconds"),
0229                        ki18ncp("amount in units (integer)", "%1 yoctosecond", "%1 yoctoseconds")));
0230 
0231     d->addCommonUnit(UnitPrivate::makeUnit(TimeCategory,
0232                              Minute,
0233                              60,
0234                              i18nc("time unit symbol", "min"),
0235                              i18nc("unit description in lists", "minutes"),
0236                              i18nc("unit synonyms for matching user input", "minute;minutes;min"),
0237                              symbolString,
0238                              ki18nc("amount in units (real)", "%1 minutes"),
0239                              ki18ncp("amount in units (integer)", "%1 minute", "%1 minutes")));
0240 
0241     d->addCommonUnit(UnitPrivate::makeUnit(TimeCategory,
0242                              Hour,
0243                              3600,
0244                              i18nc("time unit symbol", "h"),
0245                              i18nc("unit description in lists", "hours"),
0246                              i18nc("unit synonyms for matching user input", "hour;hours;h"),
0247                              symbolString,
0248                              ki18nc("amount in units (real)", "%1 hours"),
0249                              ki18ncp("amount in units (integer)", "%1 hour", "%1 hours")));
0250 
0251     d->addCommonUnit(UnitPrivate::makeUnit(TimeCategory,
0252                              Day,
0253                              86400,
0254                              i18nc("time unit symbol", "d"),
0255                              i18nc("unit description in lists", "days"),
0256                              i18nc("unit synonyms for matching user input", "day;days;d"),
0257                              symbolString,
0258                              ki18nc("amount in units (real)", "%1 days"),
0259                              ki18ncp("amount in units (integer)", "%1 day", "%1 days")));
0260 
0261     d->addCommonUnit(UnitPrivate::makeUnit(TimeCategory,
0262                              Week,
0263                              604800,
0264                              i18nc("time unit symbol", "w"),
0265                              i18nc("unit description in lists", "weeks"),
0266                              i18nc("unit synonyms for matching user input", "week;weeks"),
0267                              symbolString,
0268                              ki18nc("amount in units (real)", "%1 weeks"),
0269                              ki18ncp("amount in units (integer)", "%1 week", "%1 weeks")));
0270 
0271     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0272                        JulianYear,
0273                        3.15576e+07,
0274                        i18nc("time unit symbol", "a"),
0275                        i18nc("unit description in lists", "Julian years"),
0276                        i18nc("unit synonyms for matching user input", "Julian year;Julian years;a"),
0277                        symbolString,
0278                        ki18nc("amount in units (real)", "%1 Julian years"),
0279                        ki18ncp("amount in units (integer)", "%1 Julian year", "%1 Julian years")));
0280 
0281     d->addUnit(UnitPrivate::makeUnit(TimeCategory,
0282                        LeapYear,
0283                        3.16224e+07,
0284                        i18nc("time unit symbol", "lpy"),
0285                        i18nc("unit description in lists", "leap years"),
0286                        i18nc("unit synonyms for matching user input", "leap year;leap years"),
0287                        symbolString,
0288                        ki18nc("amount in units (real)", "%1 leap years"),
0289                        ki18ncp("amount in units (integer)", "%1 leap year", "%1 leap years")));
0290 
0291     // Let's say we call that a normal year
0292     d->addCommonUnit(UnitPrivate::makeUnit(TimeCategory,
0293                              Year,
0294                              3.1536e+07,
0295                              i18nc("time unit symbol", "y"),
0296                              i18nc("unit description in lists", "year"),
0297                              i18nc("unit synonyms for matching user input", "year;years;y"),
0298                              symbolString,
0299                              ki18nc("amount in units (real)", "%1 year"),
0300                              ki18ncp("amount in units (integer)", "%1 year", "%1 years")));
0301 
0302     return c;
0303 }
0304 
0305 } // KUnitConversion namespace