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

0001 /*
0002  *   SPDX-FileCopyrightText: 2007-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 "length_p.h"
0009 #include "unit_p.h"
0010 
0011 #include <KLocalizedString>
0012 
0013 namespace KUnitConversion
0014 {
0015 
0016 UnitCategory Length::makeCategory()
0017 {
0018     auto c = UnitCategoryPrivate::makeCategory(LengthCategory, i18n("Length"), i18n("Length"));
0019     auto d = UnitCategoryPrivate::get(c);
0020     KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (length", "%1 %2");
0021 
0022     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0023                        Yottameter,
0024                        1e+24,
0025                        i18nc("length unit symbol", "Ym"),
0026                        i18nc("unit description in lists", "yottameters"),
0027                        i18nc("unit synonyms for matching user input", "yottameter;yottameters;Ym"),
0028                        symbolString,
0029                        ki18nc("amount in units (real)", "%1 yottameters"),
0030                        ki18ncp("amount in units (integer)", "%1 yottameter", "%1 yottameters")));
0031 
0032     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0033                        Zettameter,
0034                        1e+21,
0035                        i18nc("length unit symbol", "Zm"),
0036                        i18nc("unit description in lists", "zettameters"),
0037                        i18nc("unit synonyms for matching user input", "zettameter;zettameters;Zm"),
0038                        symbolString,
0039                        ki18nc("amount in units (real)", "%1 zettameters"),
0040                        ki18ncp("amount in units (integer)", "%1 zettameter", "%1 zettameters")));
0041 
0042     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0043                        Exameter,
0044                        1e+18,
0045                        i18nc("length unit symbol", "Em"),
0046                        i18nc("unit description in lists", "exameters"),
0047                        i18nc("unit synonyms for matching user input", "exameter;exameters;Em"),
0048                        symbolString,
0049                        ki18nc("amount in units (real)", "%1 exameters"),
0050                        ki18ncp("amount in units (integer)", "%1 exameter", "%1 exameters")));
0051 
0052     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0053                        Petameter,
0054                        1e+15,
0055                        i18nc("length unit symbol", "Pm"),
0056                        i18nc("unit description in lists", "petameters"),
0057                        i18nc("unit synonyms for matching user input", "petameter;petameters;Pm"),
0058                        symbolString,
0059                        ki18nc("amount in units (real)", "%1 petameters"),
0060                        ki18ncp("amount in units (integer)", "%1 petameter", "%1 petameters")));
0061 
0062     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0063                        Terameter,
0064                        1e+12,
0065                        i18nc("length unit symbol", "Tm"),
0066                        i18nc("unit description in lists", "terameters"),
0067                        i18nc("unit synonyms for matching user input", "terameter;terameters;Tm"),
0068                        symbolString,
0069                        ki18nc("amount in units (real)", "%1 terameters"),
0070                        ki18ncp("amount in units (integer)", "%1 terameter", "%1 terameters")));
0071 
0072     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0073                        Gigameter,
0074                        1e+09,
0075                        i18nc("length unit symbol", "Gm"),
0076                        i18nc("unit description in lists", "gigameters"),
0077                        i18nc("unit synonyms for matching user input", "gigameter;gigameters;Gm"),
0078                        symbolString,
0079                        ki18nc("amount in units (real)", "%1 gigameters"),
0080                        ki18ncp("amount in units (integer)", "%1 gigameter", "%1 gigameters")));
0081 
0082     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0083                        Megameter,
0084                        1e+06,
0085                        i18nc("length unit symbol", "Mm"),
0086                        i18nc("unit description in lists", "megameters"),
0087                        i18nc("unit synonyms for matching user input", "megameter;megameters;Mm"),
0088                        symbolString,
0089                        ki18nc("amount in units (real)", "%1 megameters"),
0090                        ki18ncp("amount in units (integer)", "%1 megameter", "%1 megameters")));
0091 
0092     d->addCommonUnit(UnitPrivate::makeUnit(LengthCategory,
0093                              Kilometer,
0094                              1000,
0095                              i18nc("length unit symbol", "km"),
0096                              i18nc("unit description in lists", "kilometers"),
0097                              i18nc("unit synonyms for matching user input", "kilometer;kilometers;km"),
0098                              symbolString,
0099                              ki18nc("amount in units (real)", "%1 kilometers"),
0100                              ki18ncp("amount in units (integer)", "%1 kilometer", "%1 kilometers")));
0101 
0102     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0103                        Hectometer,
0104                        100,
0105                        i18nc("length unit symbol", "hm"),
0106                        i18nc("unit description in lists", "hectometers"),
0107                        i18nc("unit synonyms for matching user input", "hectometer;hectometers;hm"),
0108                        symbolString,
0109                        ki18nc("amount in units (real)", "%1 hectometers"),
0110                        ki18ncp("amount in units (integer)", "%1 hectometer", "%1 hectometers")));
0111 
0112     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0113                        Decameter,
0114                        10,
0115                        i18nc("length unit symbol", "dam"),
0116                        i18nc("unit description in lists", "decameters"),
0117                        i18nc("unit synonyms for matching user input", "decameter;decameters;dam"),
0118                        symbolString,
0119                        ki18nc("amount in units (real)", "%1 decameters"),
0120                        ki18ncp("amount in units (integer)", "%1 decameter", "%1 decameters")));
0121 
0122     d->addDefaultUnit(UnitPrivate::makeUnit(LengthCategory,
0123                               Meter,
0124                               1,
0125                               i18nc("length unit symbol", "m"),
0126                               i18nc("unit description in lists", "meters"),
0127                               i18nc("unit synonyms for matching user input", "meter;meters;m"),
0128                               symbolString,
0129                               ki18nc("amount in units (real)", "%1 meters"),
0130                               ki18ncp("amount in units (integer)", "%1 meter", "%1 meters")));
0131 
0132     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0133                        Decimeter,
0134                        0.1,
0135                        i18nc("length unit symbol", "dm"),
0136                        i18nc("unit description in lists", "decimeters"),
0137                        i18nc("unit synonyms for matching user input", "decimeter;decimeters;dm"),
0138                        symbolString,
0139                        ki18nc("amount in units (real)", "%1 decimeters"),
0140                        ki18ncp("amount in units (integer)", "%1 decimeter", "%1 decimeters")));
0141 
0142     d->addCommonUnit(UnitPrivate::makeUnit(LengthCategory,
0143                              Centimeter,
0144                              0.01,
0145                              i18nc("length unit symbol", "cm"),
0146                              i18nc("unit description in lists", "centimeters"),
0147                              i18nc("unit synonyms for matching user input", "centimeter;centimeters;cm"),
0148                              symbolString,
0149                              ki18nc("amount in units (real)", "%1 centimeters"),
0150                              ki18ncp("amount in units (integer)", "%1 centimeter", "%1 centimeters")));
0151 
0152     d->addCommonUnit(UnitPrivate::makeUnit(LengthCategory,
0153                              Millimeter,
0154                              0.001,
0155                              i18nc("length unit symbol", "mm"),
0156                              i18nc("unit description in lists", "millimeters"),
0157                              i18nc("unit synonyms for matching user input", "millimeter;millimeters;mm"),
0158                              symbolString,
0159                              ki18nc("amount in units (real)", "%1 millimeters"),
0160                              ki18ncp("amount in units (integer)", "%1 millimeter", "%1 millimeters")));
0161 
0162     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0163                        Micrometer,
0164                        1e-06,
0165                        i18nc("length unit symbol", "µm"),
0166                        i18nc("unit description in lists", "micrometers"),
0167                        i18nc("unit synonyms for matching user input", "micrometer;micrometers;µm;um"),
0168                        symbolString,
0169                        ki18nc("amount in units (real)", "%1 micrometers"),
0170                        ki18ncp("amount in units (integer)", "%1 micrometer", "%1 micrometers")));
0171 
0172     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0173                        Nanometer,
0174                        1e-09,
0175                        i18nc("length unit symbol", "nm"),
0176                        i18nc("unit description in lists", "nanometers"),
0177                        i18nc("unit synonyms for matching user input", "nanometer;nanometers;nm"),
0178                        symbolString,
0179                        ki18nc("amount in units (real)", "%1 nanometers"),
0180                        ki18ncp("amount in units (integer)", "%1 nanometer", "%1 nanometers")));
0181 
0182     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0183                        Angstrom,
0184                        1e-10,
0185                        i18nc("length unit symbol", "Å"),
0186                        i18nc("unit description in lists", "Ångström"),
0187                        i18nc("unit synonyms for matching user input", "Ångström;Ångstrom;Angström;Angstrom;Ångströms;Ångstroms;Angströms;Angstroms;Å"),
0188                        symbolString,
0189                        ki18nc("amount in units (real)", "%1 Ångströms"),
0190                        ki18ncp("amount in units (integer)", "%1 Ångström", "%1 Ångströms")));
0191 
0192     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0193                        Picometer,
0194                        1e-12,
0195                        i18nc("length unit symbol", "pm"),
0196                        i18nc("unit description in lists", "picometers"),
0197                        i18nc("unit synonyms for matching user input", "picometer;picometers;pm"),
0198                        symbolString,
0199                        ki18nc("amount in units (real)", "%1 picometers"),
0200                        ki18ncp("amount in units (integer)", "%1 picometer", "%1 picometers")));
0201 
0202     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0203                        Femtometer,
0204                        1e-15,
0205                        i18nc("length unit symbol", "fm"),
0206                        i18nc("unit description in lists", "femtometers"),
0207                        i18nc("unit synonyms for matching user input", "femtometer;femtometers;fm"),
0208                        symbolString,
0209                        ki18nc("amount in units (real)", "%1 femtometers"),
0210                        ki18ncp("amount in units (integer)", "%1 femtometer", "%1 femtometers")));
0211 
0212     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0213                        Attometer,
0214                        1e-18,
0215                        i18nc("length unit symbol", "am"),
0216                        i18nc("unit description in lists", "attometers"),
0217                        i18nc("unit synonyms for matching user input", "attometer;attometers;am"),
0218                        symbolString,
0219                        ki18nc("amount in units (real)", "%1 attometers"),
0220                        ki18ncp("amount in units (integer)", "%1 attometer", "%1 attometers")));
0221 
0222     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0223                        Zeptometer,
0224                        1e-21,
0225                        i18nc("length unit symbol", "zm"),
0226                        i18nc("unit description in lists", "zeptometers"),
0227                        i18nc("unit synonyms for matching user input", "zeptometer;zeptometers;zm"),
0228                        symbolString,
0229                        ki18nc("amount in units (real)", "%1 zeptometers"),
0230                        ki18ncp("amount in units (integer)", "%1 zeptometer", "%1 zeptometers")));
0231 
0232     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0233                        Yoctometer,
0234                        1e-24,
0235                        i18nc("length unit symbol", "ym"),
0236                        i18nc("unit description in lists", "yoctometers"),
0237                        i18nc("unit synonyms for matching user input", "yoctometer;yoctometers;ym"),
0238                        symbolString,
0239                        ki18nc("amount in units (real)", "%1 yoctometers"),
0240                        ki18ncp("amount in units (integer)", "%1 yoctometer", "%1 yoctometers")));
0241 
0242     d->addCommonUnit(UnitPrivate::makeUnit(LengthCategory,
0243                              Inch,
0244                              0.0254,
0245                              i18nc("length unit symbol", "in"),
0246                              i18nc("unit description in lists", "inches"),
0247                              i18nc("unit synonyms for matching user input", "inch;inches;in;\""),
0248                              symbolString,
0249                              ki18nc("amount in units (real)", "%1 inches"),
0250                              ki18ncp("amount in units (integer)", "%1 inch", "%1 inches")));
0251 
0252     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0253                        Thou,
0254                        0.0000254,
0255                        i18nc("length unit symbol", "thou"),
0256                        i18nc("unit description in lists", "thousandths of an inch"),
0257                        i18nc("unit synonyms for matching user input", "thou;mil;point;thousandth of an inch;thousandths of an inch"),
0258                        symbolString,
0259                        ki18nc("amount in units (real)", "%1 thousandths of an inch"),
0260                        ki18ncp("amount in units (integer)", "%1 thousandth of an inch", "%1 thousandths of an inch")));
0261 
0262     d->addCommonUnit(UnitPrivate::makeUnit(LengthCategory,
0263                              Foot,
0264                              0.3048,
0265                              i18nc("length unit symbol", "ft"),
0266                              i18nc("unit description in lists", "feet"),
0267                              i18nc("unit synonyms for matching user input", "foot;feet;ft"),
0268                              symbolString,
0269                              ki18nc("amount in units (real)", "%1 feet"),
0270                              ki18ncp("amount in units (integer)", "%1 foot", "%1 feet")));
0271 
0272     d->addCommonUnit(UnitPrivate::makeUnit(LengthCategory,
0273                              Yard,
0274                              0.9144,
0275                              i18nc("length unit symbol", "yd"),
0276                              i18nc("unit description in lists", "yards"),
0277                              i18nc("unit synonyms for matching user input", "yard;yards;yd"),
0278                              symbolString,
0279                              ki18nc("amount in units (real)", "%1 yards"),
0280                              ki18ncp("amount in units (integer)", "%1 yard", "%1 yards")));
0281 
0282     d->addCommonUnit(UnitPrivate::makeUnit(LengthCategory,
0283                              Mile,
0284                              1609.34,
0285                              i18nc("length unit symbol", "mi"),
0286                              i18nc("unit description in lists", "miles"),
0287                              i18nc("unit synonyms for matching user input", "mile;miles;mi"),
0288                              symbolString,
0289                              ki18nc("amount in units (real)", "%1 miles"),
0290                              ki18ncp("amount in units (integer)", "%1 mile", "%1 miles")));
0291 
0292     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0293                        NauticalMile,
0294                        1852,
0295                        i18nc("length unit symbol", "nmi"),
0296                        i18nc("unit description in lists", "nautical miles"),
0297                        i18nc("unit synonyms for matching user input", "nautical mile;nautical miles;nmi"),
0298                        symbolString,
0299                        ki18nc("amount in units (real)", "%1 nautical miles"),
0300                        ki18ncp("amount in units (integer)", "%1 nautical mile", "%1 nautical miles")));
0301 
0302     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0303                        LightYear,
0304                        9.46073e+15,
0305                        i18nc("length unit symbol", "ly"),
0306                        i18nc("unit description in lists", "light-years"),
0307                        i18nc("unit synonyms for matching user input", "light-year;light-years;ly;lightyear;lightyears"),
0308                        symbolString,
0309                        ki18nc("amount in units (real)", "%1 light-years"),
0310                        ki18ncp("amount in units (integer)", "%1 light-year", "%1 light-years")));
0311 
0312     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0313                        Parsec,
0314                        3.08568e+16,
0315                        i18nc("length unit symbol", "pc"),
0316                        i18nc("unit description in lists", "parsecs"),
0317                        i18nc("unit synonyms for matching user input", "parsec;parsecs;pc"),
0318                        symbolString,
0319                        ki18nc("amount in units (real)", "%1 parsecs"),
0320                        ki18ncp("amount in units (integer)", "%1 parsec", "%1 parsecs")));
0321 
0322     d->addUnit(UnitPrivate::makeUnit(LengthCategory,
0323                        AstronomicalUnit,
0324                        1.49598e+11,
0325                        i18nc("length unit symbol", "au"),
0326                        i18nc("unit description in lists", "astronomical units"),
0327                        i18nc("unit synonyms for matching user input", "astronomical unit;astronomical units;au"),
0328                        symbolString,
0329                        ki18nc("amount in units (real)", "%1 astronomical units"),
0330                        ki18ncp("amount in units (integer)", "%1 astronomical unit", "%1 astronomical units")));
0331 
0332     return c;
0333 }
0334 
0335 } // KUnitConversion namespace