File indexing completed on 2024-04-21 03:58:31

0001 /*
0002  *   SPDX-FileCopyrightText: 2008-2009 Petri Damstén <damu@iki.fi>
0003  *   SPDX-FileCopyrightText: 2008 Kristof Bal <kristof.bal@gmail.com>
0004  *   SPDX-FileCopyrightText: 2014 John Layt <jlayt@kde.org>
0005  *
0006  *   SPDX-License-Identifier: LGPL-2.0-or-later
0007  */
0008 
0009 #include "mass_p.h"
0010 #include "unit_p.h"
0011 
0012 #include <KLocalizedString>
0013 
0014 namespace KUnitConversion
0015 {
0016 UnitCategory Mass::makeCategory()
0017 {
0018     auto c = UnitCategoryPrivate::makeCategory(MassCategory, i18n("Mass"), i18n("Mass"));
0019     auto d = UnitCategoryPrivate::get(c);
0020     KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (mass)", "%1 %2");
0021 
0022     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0023                        Yottagram,
0024                        1e+24,
0025                        i18nc("mass unit symbol", "Yg"),
0026                        i18nc("unit description in lists", "yottagrams"),
0027                        i18nc("unit synonyms for matching user input", "yottagram;yottagrams;Yg"),
0028                        symbolString,
0029                        ki18nc("amount in units (real)", "%1 yottagrams"),
0030                        ki18ncp("amount in units (integer)", "%1 yottagram", "%1 yottagrams")));
0031 
0032     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0033                        Zettagram,
0034                        1e+21,
0035                        i18nc("mass unit symbol", "Zg"),
0036                        i18nc("unit description in lists", "zettagrams"),
0037                        i18nc("unit synonyms for matching user input", "zettagram;zettagrams;Zg"),
0038                        symbolString,
0039                        ki18nc("amount in units (real)", "%1 zettagrams"),
0040                        ki18ncp("amount in units (integer)", "%1 zettagram", "%1 zettagrams")));
0041 
0042     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0043                        Exagram,
0044                        1e+18,
0045                        i18nc("mass unit symbol", "Eg"),
0046                        i18nc("unit description in lists", "exagrams"),
0047                        i18nc("unit synonyms for matching user input", "exagram;exagrams;Eg"),
0048                        symbolString,
0049                        ki18nc("amount in units (real)", "%1 exagrams"),
0050                        ki18ncp("amount in units (integer)", "%1 exagram", "%1 exagrams")));
0051 
0052     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0053                        Petagram,
0054                        1e+15,
0055                        i18nc("mass unit symbol", "Pg"),
0056                        i18nc("unit description in lists", "petagrams"),
0057                        i18nc("unit synonyms for matching user input", "petagram;petagrams;Pg"),
0058                        symbolString,
0059                        ki18nc("amount in units (real)", "%1 petagrams"),
0060                        ki18ncp("amount in units (integer)", "%1 petagram", "%1 petagrams")));
0061 
0062     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0063                        Teragram,
0064                        1e+12,
0065                        i18nc("mass unit symbol", "Tg"),
0066                        i18nc("unit description in lists", "teragrams"),
0067                        i18nc("unit synonyms for matching user input", "teragram;teragrams;Tg"),
0068                        symbolString,
0069                        ki18nc("amount in units (real)", "%1 teragrams"),
0070                        ki18ncp("amount in units (integer)", "%1 teragram", "%1 teragrams")));
0071 
0072     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0073                        Gigagram,
0074                        1e+09,
0075                        i18nc("mass unit symbol", "Gg"),
0076                        i18nc("unit description in lists", "gigagrams"),
0077                        i18nc("unit synonyms for matching user input", "gigagram;gigagrams;Gg"),
0078                        symbolString,
0079                        ki18nc("amount in units (real)", "%1 gigagrams"),
0080                        ki18ncp("amount in units (integer)", "%1 gigagram", "%1 gigagrams")));
0081 
0082     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0083                        Megagram,
0084                        1e+06,
0085                        i18nc("mass unit symbol", "Mg"),
0086                        i18nc("unit description in lists", "megagrams"),
0087                        i18nc("unit synonyms for matching user input", "megagram;megagrams;Mg"),
0088                        symbolString,
0089                        ki18nc("amount in units (real)", "%1 megagrams"),
0090                        ki18ncp("amount in units (integer)", "%1 megagram", "%1 megagrams")));
0091 
0092     d->addDefaultUnit(UnitPrivate::makeUnit(MassCategory,
0093                               Kilogram,
0094                               1000,
0095                               i18nc("mass unit symbol", "kg"),
0096                               i18nc("unit description in lists", "kilograms"),
0097                               i18nc("unit synonyms for matching user input", "kilogram;kilograms;kg"),
0098                               symbolString,
0099                               ki18nc("amount in units (real)", "%1 kilograms"),
0100                               ki18ncp("amount in units (integer)", "%1 kilogram", "%1 kilograms")));
0101 
0102     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0103                        Hectogram,
0104                        100,
0105                        i18nc("mass unit symbol", "hg"),
0106                        i18nc("unit description in lists", "hectograms"),
0107                        i18nc("unit synonyms for matching user input", "hectogram;hectograms;hg"),
0108                        symbolString,
0109                        ki18nc("amount in units (real)", "%1 hectograms"),
0110                        ki18ncp("amount in units (integer)", "%1 hectogram", "%1 hectograms")));
0111 
0112     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0113                        Decagram,
0114                        10,
0115                        i18nc("mass unit symbol", "dag"),
0116                        i18nc("unit description in lists", "decagrams"),
0117                        i18nc("unit synonyms for matching user input", "decagram;decagrams;dag"),
0118                        symbolString,
0119                        ki18nc("amount in units (real)", "%1 decagrams"),
0120                        ki18ncp("amount in units (integer)", "%1 decagram", "%1 decagrams")));
0121 
0122     d->addCommonUnit(UnitPrivate::makeUnit(MassCategory,
0123                              Gram,
0124                              1,
0125                              i18nc("mass unit symbol", "g"),
0126                              i18nc("unit description in lists", "grams"),
0127                              i18nc("unit synonyms for matching user input", "gram;grams;g"),
0128                              symbolString,
0129                              ki18nc("amount in units (real)", "%1 grams"),
0130                              ki18ncp("amount in units (integer)", "%1 gram", "%1 grams")));
0131 
0132     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0133                        Decigram,
0134                        0.1,
0135                        i18nc("mass unit symbol", "dg"),
0136                        i18nc("unit description in lists", "decigrams"),
0137                        i18nc("unit synonyms for matching user input", "decigram;decigrams;dg"),
0138                        symbolString,
0139                        ki18nc("amount in units (real)", "%1 decigrams"),
0140                        ki18ncp("amount in units (integer)", "%1 decigram", "%1 decigrams")));
0141 
0142     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0143                        Centigram,
0144                        0.01,
0145                        i18nc("mass unit symbol", "cg"),
0146                        i18nc("unit description in lists", "centigrams"),
0147                        i18nc("unit synonyms for matching user input", "centigram;centigrams;cg"),
0148                        symbolString,
0149                        ki18nc("amount in units (real)", "%1 centigrams"),
0150                        ki18ncp("amount in units (integer)", "%1 centigram", "%1 centigrams")));
0151 
0152     d->addCommonUnit(UnitPrivate::makeUnit(MassCategory,
0153                              Milligram,
0154                              0.001,
0155                              i18nc("mass unit symbol", "mg"),
0156                              i18nc("unit description in lists", "milligrams"),
0157                              i18nc("unit synonyms for matching user input", "milligram;milligrams;mg"),
0158                              symbolString,
0159                              ki18nc("amount in units (real)", "%1 milligrams"),
0160                              ki18ncp("amount in units (integer)", "%1 milligram", "%1 milligrams")));
0161 
0162     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0163                        Microgram,
0164                        1e-06,
0165                        i18nc("mass unit symbol", "µg"),
0166                        i18nc("unit description in lists", "micrograms"),
0167                        i18nc("unit synonyms for matching user input", "microgram;micrograms;µg;ug"),
0168                        symbolString,
0169                        ki18nc("amount in units (real)", "%1 micrograms"),
0170                        ki18ncp("amount in units (integer)", "%1 microgram", "%1 micrograms")));
0171 
0172     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0173                        Nanogram,
0174                        1e-09,
0175                        i18nc("mass unit symbol", "ng"),
0176                        i18nc("unit description in lists", "nanograms"),
0177                        i18nc("unit synonyms for matching user input", "nanogram;nanograms;ng"),
0178                        symbolString,
0179                        ki18nc("amount in units (real)", "%1 nanograms"),
0180                        ki18ncp("amount in units (integer)", "%1 nanogram", "%1 nanograms")));
0181 
0182     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0183                        Picogram,
0184                        1e-12,
0185                        i18nc("mass unit symbol", "pg"),
0186                        i18nc("unit description in lists", "picograms"),
0187                        i18nc("unit synonyms for matching user input", "picogram;picograms;pg"),
0188                        symbolString,
0189                        ki18nc("amount in units (real)", "%1 picograms"),
0190                        ki18ncp("amount in units (integer)", "%1 picogram", "%1 picograms")));
0191 
0192     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0193                        Femtogram,
0194                        1e-15,
0195                        i18nc("mass unit symbol", "fg"),
0196                        i18nc("unit description in lists", "femtograms"),
0197                        i18nc("unit synonyms for matching user input", "femtogram;femtograms;fg"),
0198                        symbolString,
0199                        ki18nc("amount in units (real)", "%1 femtograms"),
0200                        ki18ncp("amount in units (integer)", "%1 femtogram", "%1 femtograms")));
0201 
0202     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0203                        Attogram,
0204                        1e-18,
0205                        i18nc("mass unit symbol", "ag"),
0206                        i18nc("unit description in lists", "attograms"),
0207                        i18nc("unit synonyms for matching user input", "attogram;attograms;ag"),
0208                        symbolString,
0209                        ki18nc("amount in units (real)", "%1 attograms"),
0210                        ki18ncp("amount in units (integer)", "%1 attogram", "%1 attograms")));
0211 
0212     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0213                        Zeptogram,
0214                        1e-21,
0215                        i18nc("mass unit symbol", "zg"),
0216                        i18nc("unit description in lists", "zeptograms"),
0217                        i18nc("unit synonyms for matching user input", "zeptogram;zeptograms;zg"),
0218                        symbolString,
0219                        ki18nc("amount in units (real)", "%1 zeptograms"),
0220                        ki18ncp("amount in units (integer)", "%1 zeptogram", "%1 zeptograms")));
0221 
0222     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0223                        Yoctogram,
0224                        1e-24,
0225                        i18nc("mass unit symbol", "yg"),
0226                        i18nc("unit description in lists", "yoctograms"),
0227                        i18nc("unit synonyms for matching user input", "yoctogram;yoctograms;yg"),
0228                        symbolString,
0229                        ki18nc("amount in units (real)", "%1 yoctograms"),
0230                        ki18ncp("amount in units (integer)", "%1 yoctogram", "%1 yoctograms")));
0231 
0232     d->addCommonUnit(UnitPrivate::makeUnit(MassCategory,
0233                              Ton,
0234                              1e+06,
0235                              i18nc("mass unit symbol", "t"),
0236                              i18nc("unit description in lists", "tons"),
0237                              i18nc("unit synonyms for matching user input", "ton;tons;t;tonne;tonnes"), // TODO Fix! Tonne == Metric Ton == Mg
0238                              symbolString,
0239                              ki18nc("amount in units (real)", "%1 tons"),
0240                              ki18ncp("amount in units (integer)", "%1 ton", "%1 tons")));
0241 
0242     // I guess it's useful...
0243     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0244                        Carat,
0245                        0.2,
0246                        i18nc("mass unit symbol", "CD"),
0247                        i18nc("unit description in lists", "carats"),
0248                        i18nc("unit synonyms for matching user input", "carat;carats;CD;ct"),
0249                        symbolString,
0250                        ki18nc("amount in units (real)", "%1 carats"),
0251                        ki18ncp("amount in units (integer)", "%1 carat", "%1 carats")));
0252 
0253     // http://en.wikipedia.org/wiki/Pound_(mass)#International_pound
0254     d->addCommonUnit(UnitPrivate::makeUnit(MassCategory,
0255                              Pound,
0256                              453.592,
0257                              i18nc("mass unit symbol", "lb"),
0258                              i18nc("unit description in lists", "pounds"),
0259                              i18nc("unit synonyms for matching user input", "pound;pounds;lb;lbs"),
0260                              symbolString,
0261                              ki18nc("amount in units (real)", "%1 pounds"),
0262                              ki18ncp("amount in units (integer)", "%1 pound", "%1 pounds")));
0263 
0264     // International avoirdupois ounce
0265     d->addCommonUnit(UnitPrivate::makeUnit(MassCategory,
0266                              Ounce,
0267                              28.3495,
0268                              i18nc("mass unit symbol", "oz"),
0269                              i18nc("unit description in lists", "ounces"),
0270                              i18nc("unit synonyms for matching user input", "ounce;ounces;oz"),
0271                              symbolString,
0272                              ki18nc("amount in units (real)", "%1 ounces"),
0273                              ki18ncp("amount in units (integer)", "%1 ounce", "%1 ounces")));
0274 
0275     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0276                        TroyOunce,
0277                        31.1035,
0278                        i18nc("mass unit symbol", "t oz"),
0279                        i18nc("unit description in lists", "troy ounces"),
0280                        i18nc("unit synonyms for matching user input", "troy ounce;troy ounces;t oz"),
0281                        symbolString,
0282                        ki18nc("amount in units (real)", "%1 troy ounces"),
0283                        ki18ncp("amount in units (integer)", "%1 troy ounce", "%1 troy ounces")));
0284 
0285     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0286                        MassNewton,
0287                        101.937,
0288                        i18nc("mass unit symbol", "N"),
0289                        i18nc("unit description in lists", "newtons"),
0290                        i18nc("unit synonyms for matching user input", "newton;newtons;N"),
0291                        symbolString,
0292                        ki18nc("amount in units (real)", "%1 newtons"),
0293                        ki18ncp("amount in units (integer)", "%1 newton", "%1 newtons")));
0294 
0295     // used a lot in industry (aircraft engines for example)
0296     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0297                        Kilonewton,
0298                        101937,
0299                        i18nc("mass unit symbol", "kN"),
0300                        i18nc("unit description in lists", "kilonewton"),
0301                        i18nc("unit synonyms for matching user input", "kilonewton;kilonewton;kN"),
0302                        symbolString,
0303                        ki18nc("amount in units (real)", "%1 kilonewton"),
0304                        ki18ncp("amount in units (integer)", "%1 kilonewton", "%1 kilonewton")));
0305 
0306     d->addUnit(UnitPrivate::makeUnit(MassCategory,
0307                        Stone,
0308                        6350.29318,
0309                        i18nc("mass unit symbol", "st"),
0310                        i18nc("unit description in lists", "stone"),
0311                        i18nc("unit synonyms for matching user input", "stone;st"),
0312                        symbolString,
0313                        ki18nc("amount in units (real)", "%1 stone"),
0314                        ki18ncp("amount in units (integer)", "%1 stone", "%1 stone")));
0315 
0316     return c;
0317 }
0318 
0319 } // KUnitConversion namespace