File indexing completed on 2024-04-21 15:04:35

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 "area_p.h"
0009 #include "unit_p.h"
0010 
0011 #include <KLocalizedString>
0012 
0013 namespace KUnitConversion
0014 {
0015 
0016 UnitCategory Area::makeCategory()
0017 {
0018     auto c = UnitCategoryPrivate::makeCategory(AreaCategory,
0019                      i18nc("Unit Category: two dimensional size of a surface", "Area"),
0020                      i18nc("Unit Category: two dimensional size of a surface", "Area"));
0021     auto d = UnitCategoryPrivate::get(c);
0022     // i18n: Used when converting to symbol string e.g. 2.34 m²
0023     KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (area)", "%1 %2");
0024 
0025     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0026                        SquareYottameter,
0027                        1e+48,
0028                        // i18n: Used when unit symbol is needed.
0029                        i18nc("area unit symbol", "Ym²"),
0030                        // i18n: unit as it will be shown to user wherever units are to
0031                        // be explicitly selected (listbox, radio buttons, checkboxes...).
0032                        // E.g. an application may give option "Unit of wind speed: [unit-list-box]"
0033                        i18nc("unit description in lists", "square yottameters"),
0034                        // i18n: Messages such as this one provide synonyms for each unit,
0035                        // in order to guess the unit from the text that the user inputs.
0036                        // Synonyms are semicolon-separated, and you can add as many as
0037                        // you need (either equal to, more, or less than in the original).
0038                        // Note that any gramatical inflections of unit names
0039                        // (such as plural and cases) should also be listed.
0040                        i18nc("unit synonyms for matching user input", "square yottameter;square yottameters;Ym²;Ym/-2;Ym^2;Ym2"),
0041                        symbolString,
0042                        // i18n: This is used when a real-valued amount in units is given,
0043                        // such as "0.37 miles".
0044                        ki18nc("amount in units (real)", "%1 square yottameters"),
0045                        // i18n: This is used when a integer-valued amount in units is given,
0046                        // such as "1 mile" or "21 miles".
0047                        ki18ncp("amount in units (integer)", "%1 square yottameter", "%1 square yottameters")));
0048 
0049     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0050                        SquareZettameter,
0051                        1e+42,
0052                        i18nc("area unit symbol", "Zm²"),
0053                        i18nc("unit description in lists", "square zettameters"),
0054                        i18nc("unit synonyms for matching user input", "square zettameter;square zettameters;Zm²;Zm/-2;Zm^2;Zm2"),
0055                        symbolString,
0056                        ki18nc("amount in units (real)", "%1 square zettameters"),
0057                        ki18ncp("amount in units (integer)", "%1 square zettameter", "%1 square zettameters")));
0058 
0059     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0060                        SquareExameter,
0061                        1e+36,
0062                        i18nc("area unit symbol", "Em²"),
0063                        i18nc("unit description in lists", "square exameters"),
0064                        i18nc("unit synonyms for matching user input", "square exameter;square exameters;Em²;Em/-2;Em^2;Em2"),
0065                        symbolString,
0066                        ki18nc("amount in units (real)", "%1 square exameters"),
0067                        ki18ncp("amount in units (integer)", "%1 square exameter", "%1 square exameters")));
0068 
0069     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0070                        SquarePetameter,
0071                        1e+30,
0072                        i18nc("area unit symbol", "Pm²"),
0073                        i18nc("unit description in lists", "square petameters"),
0074                        i18nc("unit synonyms for matching user input", "square petameter;square petameters;Pm²;Pm/-2;Pm^2;Pm2"),
0075                        symbolString,
0076                        ki18nc("amount in units (real)", "%1 square petameters"),
0077                        ki18ncp("amount in units (integer)", "%1 square petameter", "%1 square petameters")));
0078 
0079     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0080                        SquareTerameter,
0081                        1e+24,
0082                        i18nc("area unit symbol", "Tm²"),
0083                        i18nc("unit description in lists", "square terameters"),
0084                        i18nc("unit synonyms for matching user input", "square terameter;square terameters;Tm²;Tm/-2;Tm^2;Tm2"),
0085                        symbolString,
0086                        ki18nc("amount in units (real)", "%1 square terameters"),
0087                        ki18ncp("amount in units (integer)", "%1 square terameter", "%1 square terameters")));
0088 
0089     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0090                        SquareGigameter,
0091                        1e+18,
0092                        i18nc("area unit symbol", "Gm²"),
0093                        i18nc("unit description in lists", "square gigameters"),
0094                        i18nc("unit synonyms for matching user input", "square gigameter;square gigameters;Gm²;Gm/-2;Gm^2;Gm2"),
0095                        symbolString,
0096                        ki18nc("amount in units (real)", "%1 square gigameters"),
0097                        ki18ncp("amount in units (integer)", "%1 square gigameter", "%1 square gigameters")));
0098 
0099     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0100                        SquareMegameter,
0101                        1e+12,
0102                        i18nc("area unit symbol", "Mm²"),
0103                        i18nc("unit description in lists", "square megameters"),
0104                        i18nc("unit synonyms for matching user input", "square megameter;square megameters;Mm²;Mm/-2;Mm^2;Mm2"),
0105                        symbolString,
0106                        ki18nc("amount in units (real)", "%1 square megameters"),
0107                        ki18ncp("amount in units (integer)", "%1 square megameter", "%1 square megameters")));
0108 
0109     d->addCommonUnit(UnitPrivate::makeUnit(AreaCategory,
0110                              SquareKilometer,
0111                              1e+06,
0112                              i18nc("area unit symbol", "km²"),
0113                              i18nc("unit description in lists", "square kilometers"),
0114                              i18nc("unit synonyms for matching user input", "square kilometer;square kilometers;sq km;km²;km/-2;km^2;km2"),
0115                              symbolString,
0116                              ki18nc("amount in units (real)", "%1 square kilometers"),
0117                              ki18ncp("amount in units (integer)", "%1 square kilometer", "%1 square kilometers")));
0118 
0119     d->addCommonUnit(UnitPrivate::makeUnit(AreaCategory,
0120                              SquareHectometer,
0121                              10000,
0122                              i18nc("area unit symbol", "hm²"),
0123                              i18nc("unit description in lists", "square hectometers"),
0124                              i18nc("unit synonyms for matching user input", "square hectometer;square hectometers;hm²;hm/-2;hm^2;hm2;hectare;hectares"),
0125                              symbolString,
0126                              ki18nc("amount in units (real)", "%1 square hectometers"),
0127                              ki18ncp("amount in units (integer)", "%1 square hectometer", "%1 square hectometers")));
0128 
0129     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0130                        SquareDecameter,
0131                        100,
0132                        i18nc("area unit symbol", "dam²"),
0133                        i18nc("unit description in lists", "square decameters"),
0134                        i18nc("unit synonyms for matching user input", "square decameter;square decameters;dam²;dam/-2;dam^2;dam2"),
0135                        symbolString,
0136                        ki18nc("amount in units (real)", "%1 square decameters"),
0137                        ki18ncp("amount in units (integer)", "%1 square decameter", "%1 square decameters")));
0138 
0139     d->addDefaultUnit(UnitPrivate::makeUnit(AreaCategory,
0140                               SquareMeter,
0141                               1,
0142                               i18nc("area unit symbol", "m²"),
0143                               i18nc("unit description in lists", "square meters"),
0144                               i18nc("unit synonyms for matching user input", "square meter;square meters;sq m;m²;m/-2;m^2;m2"),
0145                               symbolString,
0146                               ki18nc("amount in units (real)", "%1 square meters"),
0147                               ki18ncp("amount in units (integer)", "%1 square meter", "%1 square meters")));
0148 
0149     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0150                        SquareDecimeter,
0151                        0.01,
0152                        i18nc("area unit symbol", "dm²"),
0153                        i18nc("unit description in lists", "square decimeters"),
0154                        i18nc("unit synonyms for matching user input", "square decimeter;square decimeters;dm²;dm/-2;dm^2;dm2"),
0155                        symbolString,
0156                        ki18nc("amount in units (real)", "%1 square decimeters"),
0157                        ki18ncp("amount in units (integer)", "%1 square decimeter", "%1 square decimeters")));
0158 
0159     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0160                        SquareCentimeter,
0161                        0.0001,
0162                        i18nc("area unit symbol", "cm²"),
0163                        i18nc("unit description in lists", "square centimeters"),
0164                        i18nc("unit synonyms for matching user input", "square centimeter;square centimeters;sq cm;cm²;cm/-2;cm^2;cm2"),
0165                        symbolString,
0166                        ki18nc("amount in units (real)", "%1 square centimeters"),
0167                        ki18ncp("amount in units (integer)", "%1 square centimeter", "%1 square centimeters")));
0168 
0169     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0170                        SquareMillimeter,
0171                        1e-06,
0172                        i18nc("area unit symbol", "mm²"),
0173                        i18nc("unit description in lists", "square millimeters"),
0174                        i18nc("unit synonyms for matching user input", "square millimeter;square millimeters;sq mm;mm²;mm/-2;mm^2;mm2"),
0175                        symbolString,
0176                        ki18nc("amount in units (real)", "%1 square millimeters"),
0177                        ki18ncp("amount in units (integer)", "%1 square millimeter", "%1 square millimeters")));
0178 
0179     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0180                        SquareMicrometer,
0181                        1e-12,
0182                        i18nc("area unit symbol", "µm²"),
0183                        i18nc("unit description in lists", "square micrometers"),
0184                        i18nc("unit synonyms for matching user input", "square micrometer;square micrometers;µm²;um²;µm/-2;µm^2;µm2"),
0185                        symbolString,
0186                        ki18nc("amount in units (real)", "%1 square micrometers"),
0187                        ki18ncp("amount in units (integer)", "%1 square micrometer", "%1 square micrometers")));
0188 
0189     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0190                        SquareNanometer,
0191                        1e-18,
0192                        i18nc("area unit symbol", "nm²"),
0193                        i18nc("unit description in lists", "square nanometers"),
0194                        i18nc("unit synonyms for matching user input", "square nanometer;square nanometers;nm²;nm/-2;nm^2;nm2"),
0195                        symbolString,
0196                        ki18nc("amount in units (real)", "%1 square nanometers"),
0197                        ki18ncp("amount in units (integer)", "%1 square nanometer", "%1 square nanometers")));
0198 
0199     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0200                        SquarePicometer,
0201                        1e-24,
0202                        i18nc("area unit symbol", "pm²"),
0203                        i18nc("unit description in lists", "square picometers"),
0204                        i18nc("unit synonyms for matching user input", "square picometer;square picometers;pm²;pm/-2;pm^2;pm2"),
0205                        symbolString,
0206                        ki18nc("amount in units (real)", "%1 square picometers"),
0207                        ki18ncp("amount in units (integer)", "%1 square picometer", "%1 square picometers")));
0208 
0209     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0210                        SquareFemtometer,
0211                        1e-30,
0212                        i18nc("area unit symbol", "fm²"),
0213                        i18nc("unit description in lists", "square femtometers"),
0214                        i18nc("unit synonyms for matching user input", "square femtometer;square femtometers;fm²;fm/-2;fm^2;fm2"),
0215                        symbolString,
0216                        ki18nc("amount in units (real)", "%1 square femtometers"),
0217                        ki18ncp("amount in units (integer)", "%1 square femtometer", "%1 square femtometers")));
0218 
0219     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0220                        SquareAttometer,
0221                        1e-36,
0222                        i18nc("area unit symbol", "am²"),
0223                        i18nc("unit description in lists", "square attometers"),
0224                        i18nc("unit synonyms for matching user input", "square attometer;square attometers;am²;am/-2;am^2;am2"),
0225                        symbolString,
0226                        ki18nc("amount in units (real)", "%1 square attometers"),
0227                        ki18ncp("amount in units (integer)", "%1 square attometer", "%1 square attometers")));
0228 
0229     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0230                        SquareZeptometer,
0231                        1e-42,
0232                        i18nc("area unit symbol", "zm²"),
0233                        i18nc("unit description in lists", "square zeptometers"),
0234                        i18nc("unit synonyms for matching user input", "square zeptometer;square zeptometers;zm²;zm/-2;zm^2;zm2"),
0235                        symbolString,
0236                        ki18nc("amount in units (real)", "%1 square zeptometers"),
0237                        ki18ncp("amount in units (integer)", "%1 square zeptometer", "%1 square zeptometers")));
0238 
0239     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0240                        SquareYoctometer,
0241                        1e-48,
0242                        i18nc("area unit symbol", "ym²"),
0243                        i18nc("unit description in lists", "square yoctometers"),
0244                        i18nc("unit synonyms for matching user input", "square yoctometer;square yoctometers;ym²;ym/-2;ym^2;ym2"),
0245                        symbolString,
0246                        ki18nc("amount in units (real)", "%1 square yoctometers"),
0247                        ki18ncp("amount in units (integer)", "%1 square yoctometer", "%1 square yoctometers")));
0248 
0249     d->addCommonUnit(UnitPrivate::makeUnit(AreaCategory,
0250                              Acre,
0251                              4046.86,
0252                              i18nc("area unit symbol", "acre"),
0253                              i18nc("unit description in lists", "acres"),
0254                              i18nc("unit synonyms for matching user input", "acre;acres"),
0255                              symbolString,
0256                              ki18nc("amount in units (real)", "%1 acres"),
0257                              ki18ncp("amount in units (integer)", "%1 acre", "%1 acres")));
0258 
0259     d->addCommonUnit(UnitPrivate::makeUnit(AreaCategory,
0260                              SquareFoot,
0261                              0.092903,
0262                              i18nc("area unit symbol", "ft²"),
0263                              i18nc("unit description in lists", "square feet"),
0264                              i18nc("unit synonyms for matching user input", "square foot;square feet;ft²;square ft;sq foot;sq ft;sq feet;feet²"),
0265                              symbolString,
0266                              ki18nc("amount in units (real)", "%1 square feet"),
0267                              ki18ncp("amount in units (integer)", "%1 square foot", "%1 square feet")));
0268 
0269     d->addUnit(UnitPrivate::makeUnit(AreaCategory,
0270                        SquareInch,
0271                        0.00064516,
0272                        i18nc("area unit symbol", "in²"),
0273                        i18nc("unit description in lists", "square inches"),
0274                        i18nc("unit synonyms for matching user input", "square inch;square inches;in²;square inch;square in;sq inches;sq inch;sq in;inch²"),
0275                        symbolString,
0276                        ki18nc("amount in units (real)", "%1 square inches"),
0277                        ki18ncp("amount in units (integer)", "%1 square inch", "%1 square inches")));
0278 
0279     d->addCommonUnit(UnitPrivate::makeUnit(AreaCategory,
0280                              SquareMile,
0281                              2.58999e+06,
0282                              i18nc("area unit symbol", "mi²"),
0283                              i18nc("unit description in lists", "square miles"),
0284                              i18nc("unit synonyms for matching user input", "square mile;square miles;mi²;square mi;sq miles;sq mile;sq mi;mile²"),
0285                              symbolString,
0286                              ki18nc("amount in units (real)", "%1 square miles"),
0287                              ki18ncp("amount in units (integer)", "%1 square mile", "%1 square miles")));
0288 
0289     return c;
0290 }
0291 
0292 } // KUnitConversion namespace