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