| 1 | /* |
| 2 | * SPDX-FileCopyrightText: 2007-2009 Petri Damstén <damu@iki.fi> |
| 3 | * SPDX-FileCopyrightText: 2014 John Layt <jlayt@kde.org> |
| 4 | * |
| 5 | * SPDX-License-Identifier: LGPL-2.0-or-later |
| 6 | */ |
| 7 | |
| 8 | #include "area_p.h" |
| 9 | #include "unit_p.h" |
| 10 | |
| 11 | #include <KLocalizedString> |
| 12 | |
| 13 | namespace KUnitConversion |
| 14 | { |
| 15 | |
| 16 | UnitCategory Area::makeCategory() |
| 17 | { |
| 18 | auto c = UnitCategoryPrivate::makeCategory(id: AreaCategory, |
| 19 | i18nc("Unit Category: two dimensional size of a surface" , "Area" ), |
| 20 | i18nc("Unit Category: two dimensional size of a surface" , "Area" )); |
| 21 | auto d = UnitCategoryPrivate::get(category: c); |
| 22 | // i18n: Used when converting to symbol string e.g. 2.34 m² |
| 23 | KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (area)" , "%1 %2" ); |
| 24 | |
| 25 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 26 | id: SquareYottameter, |
| 27 | multiplier: 1e+48, |
| 28 | // i18n: Used when unit symbol is needed. |
| 29 | i18nc("area unit symbol" , "Ym²" ), |
| 30 | // i18n: unit as it will be shown to user wherever units are to |
| 31 | // be explicitly selected (listbox, radio buttons, checkboxes...). |
| 32 | // E.g. an application may give option "Unit of wind speed: [unit-list-box]" |
| 33 | i18nc("unit description in lists" , "square yottameters" ), |
| 34 | // i18n: Messages such as this one provide synonyms for each unit, |
| 35 | // in order to guess the unit from the text that the user inputs. |
| 36 | // Synonyms are semicolon-separated, and you can add as many as |
| 37 | // you need (either equal to, more, or less than in the original). |
| 38 | // Note that any gramatical inflections of unit names |
| 39 | // (such as plural and cases) should also be listed. |
| 40 | i18nc("unit synonyms for matching user input" , "square yottameter;square yottameters;Ym²;Ym/-2;Ym^2;Ym2" ), |
| 41 | symbolString, |
| 42 | // i18n: This is used when a real-valued amount in units is given, |
| 43 | // such as "0.37 miles". |
| 44 | ki18nc("amount in units (real)" , "%1 square yottameters" ), |
| 45 | // i18n: This is used when a integer-valued amount in units is given, |
| 46 | // such as "1 mile" or "21 miles". |
| 47 | ki18ncp("amount in units (integer)" , "%1 square yottameter" , "%1 square yottameters" ))); |
| 48 | |
| 49 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 50 | id: SquareZettameter, |
| 51 | multiplier: 1e+42, |
| 52 | i18nc("area unit symbol" , "Zm²" ), |
| 53 | i18nc("unit description in lists" , "square zettameters" ), |
| 54 | i18nc("unit synonyms for matching user input" , "square zettameter;square zettameters;Zm²;Zm/-2;Zm^2;Zm2" ), |
| 55 | symbolString, |
| 56 | ki18nc("amount in units (real)" , "%1 square zettameters" ), |
| 57 | ki18ncp("amount in units (integer)" , "%1 square zettameter" , "%1 square zettameters" ))); |
| 58 | |
| 59 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 60 | id: SquareExameter, |
| 61 | multiplier: 1e+36, |
| 62 | i18nc("area unit symbol" , "Em²" ), |
| 63 | i18nc("unit description in lists" , "square exameters" ), |
| 64 | i18nc("unit synonyms for matching user input" , "square exameter;square exameters;Em²;Em/-2;Em^2;Em2" ), |
| 65 | symbolString, |
| 66 | ki18nc("amount in units (real)" , "%1 square exameters" ), |
| 67 | ki18ncp("amount in units (integer)" , "%1 square exameter" , "%1 square exameters" ))); |
| 68 | |
| 69 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 70 | id: SquarePetameter, |
| 71 | multiplier: 1e+30, |
| 72 | i18nc("area unit symbol" , "Pm²" ), |
| 73 | i18nc("unit description in lists" , "square petameters" ), |
| 74 | i18nc("unit synonyms for matching user input" , "square petameter;square petameters;Pm²;Pm/-2;Pm^2;Pm2" ), |
| 75 | symbolString, |
| 76 | ki18nc("amount in units (real)" , "%1 square petameters" ), |
| 77 | ki18ncp("amount in units (integer)" , "%1 square petameter" , "%1 square petameters" ))); |
| 78 | |
| 79 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 80 | id: SquareTerameter, |
| 81 | multiplier: 1e+24, |
| 82 | i18nc("area unit symbol" , "Tm²" ), |
| 83 | i18nc("unit description in lists" , "square terameters" ), |
| 84 | i18nc("unit synonyms for matching user input" , "square terameter;square terameters;Tm²;Tm/-2;Tm^2;Tm2" ), |
| 85 | symbolString, |
| 86 | ki18nc("amount in units (real)" , "%1 square terameters" ), |
| 87 | ki18ncp("amount in units (integer)" , "%1 square terameter" , "%1 square terameters" ))); |
| 88 | |
| 89 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 90 | id: SquareGigameter, |
| 91 | multiplier: 1e+18, |
| 92 | i18nc("area unit symbol" , "Gm²" ), |
| 93 | i18nc("unit description in lists" , "square gigameters" ), |
| 94 | i18nc("unit synonyms for matching user input" , "square gigameter;square gigameters;Gm²;Gm/-2;Gm^2;Gm2" ), |
| 95 | symbolString, |
| 96 | ki18nc("amount in units (real)" , "%1 square gigameters" ), |
| 97 | ki18ncp("amount in units (integer)" , "%1 square gigameter" , "%1 square gigameters" ))); |
| 98 | |
| 99 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 100 | id: SquareMegameter, |
| 101 | multiplier: 1e+12, |
| 102 | i18nc("area unit symbol" , "Mm²" ), |
| 103 | i18nc("unit description in lists" , "square megameters" ), |
| 104 | i18nc("unit synonyms for matching user input" , "square megameter;square megameters;Mm²;Mm/-2;Mm^2;Mm2" ), |
| 105 | symbolString, |
| 106 | ki18nc("amount in units (real)" , "%1 square megameters" ), |
| 107 | ki18ncp("amount in units (integer)" , "%1 square megameter" , "%1 square megameters" ))); |
| 108 | |
| 109 | d->addCommonUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 110 | id: SquareKilometer, |
| 111 | multiplier: 1e+06, |
| 112 | i18nc("area unit symbol" , "km²" ), |
| 113 | i18nc("unit description in lists" , "square kilometers" ), |
| 114 | i18nc("unit synonyms for matching user input" , "square kilometer;square kilometers;sq km;km²;km/-2;km^2;km2" ), |
| 115 | symbolString, |
| 116 | ki18nc("amount in units (real)" , "%1 square kilometers" ), |
| 117 | ki18ncp("amount in units (integer)" , "%1 square kilometer" , "%1 square kilometers" ))); |
| 118 | |
| 119 | d->addCommonUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 120 | id: SquareHectometer, |
| 121 | multiplier: 10000, |
| 122 | i18nc("area unit symbol" , "hm²" ), |
| 123 | i18nc("unit description in lists" , "square hectometers" ), |
| 124 | i18nc("unit synonyms for matching user input" , "square hectometer;square hectometers;hm²;hm/-2;hm^2;hm2;hectare;hectares" ), |
| 125 | symbolString, |
| 126 | ki18nc("amount in units (real)" , "%1 square hectometers" ), |
| 127 | ki18ncp("amount in units (integer)" , "%1 square hectometer" , "%1 square hectometers" ))); |
| 128 | |
| 129 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 130 | id: SquareDecameter, |
| 131 | multiplier: 100, |
| 132 | i18nc("area unit symbol" , "dam²" ), |
| 133 | i18nc("unit description in lists" , "square decameters" ), |
| 134 | i18nc("unit synonyms for matching user input" , "square decameter;square decameters;dam²;dam/-2;dam^2;dam2" ), |
| 135 | symbolString, |
| 136 | ki18nc("amount in units (real)" , "%1 square decameters" ), |
| 137 | ki18ncp("amount in units (integer)" , "%1 square decameter" , "%1 square decameters" ))); |
| 138 | |
| 139 | d->addDefaultUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 140 | id: SquareMeter, |
| 141 | multiplier: 1, |
| 142 | i18nc("area unit symbol" , "m²" ), |
| 143 | i18nc("unit description in lists" , "square meters" ), |
| 144 | i18nc("unit synonyms for matching user input" , "square meter;square meters;sq m;m²;m/-2;m^2;m2" ), |
| 145 | symbolString, |
| 146 | ki18nc("amount in units (real)" , "%1 square meters" ), |
| 147 | ki18ncp("amount in units (integer)" , "%1 square meter" , "%1 square meters" ))); |
| 148 | |
| 149 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 150 | id: SquareDecimeter, |
| 151 | multiplier: 0.01, |
| 152 | i18nc("area unit symbol" , "dm²" ), |
| 153 | i18nc("unit description in lists" , "square decimeters" ), |
| 154 | i18nc("unit synonyms for matching user input" , "square decimeter;square decimeters;dm²;dm/-2;dm^2;dm2" ), |
| 155 | symbolString, |
| 156 | ki18nc("amount in units (real)" , "%1 square decimeters" ), |
| 157 | ki18ncp("amount in units (integer)" , "%1 square decimeter" , "%1 square decimeters" ))); |
| 158 | |
| 159 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 160 | id: SquareCentimeter, |
| 161 | multiplier: 0.0001, |
| 162 | i18nc("area unit symbol" , "cm²" ), |
| 163 | i18nc("unit description in lists" , "square centimeters" ), |
| 164 | i18nc("unit synonyms for matching user input" , "square centimeter;square centimeters;sq cm;cm²;cm/-2;cm^2;cm2" ), |
| 165 | symbolString, |
| 166 | ki18nc("amount in units (real)" , "%1 square centimeters" ), |
| 167 | ki18ncp("amount in units (integer)" , "%1 square centimeter" , "%1 square centimeters" ))); |
| 168 | |
| 169 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 170 | id: SquareMillimeter, |
| 171 | multiplier: 1e-06, |
| 172 | i18nc("area unit symbol" , "mm²" ), |
| 173 | i18nc("unit description in lists" , "square millimeters" ), |
| 174 | i18nc("unit synonyms for matching user input" , "square millimeter;square millimeters;sq mm;mm²;mm/-2;mm^2;mm2" ), |
| 175 | symbolString, |
| 176 | ki18nc("amount in units (real)" , "%1 square millimeters" ), |
| 177 | ki18ncp("amount in units (integer)" , "%1 square millimeter" , "%1 square millimeters" ))); |
| 178 | |
| 179 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 180 | id: SquareMicrometer, |
| 181 | multiplier: 1e-12, |
| 182 | i18nc("area unit symbol" , "µm²" ), |
| 183 | i18nc("unit description in lists" , "square micrometers" ), |
| 184 | i18nc("unit synonyms for matching user input" , "square micrometer;square micrometers;µm²;um²;µm/-2;µm^2;µm2" ), |
| 185 | symbolString, |
| 186 | ki18nc("amount in units (real)" , "%1 square micrometers" ), |
| 187 | ki18ncp("amount in units (integer)" , "%1 square micrometer" , "%1 square micrometers" ))); |
| 188 | |
| 189 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 190 | id: SquareNanometer, |
| 191 | multiplier: 1e-18, |
| 192 | i18nc("area unit symbol" , "nm²" ), |
| 193 | i18nc("unit description in lists" , "square nanometers" ), |
| 194 | i18nc("unit synonyms for matching user input" , "square nanometer;square nanometers;nm²;nm/-2;nm^2;nm2" ), |
| 195 | symbolString, |
| 196 | ki18nc("amount in units (real)" , "%1 square nanometers" ), |
| 197 | ki18ncp("amount in units (integer)" , "%1 square nanometer" , "%1 square nanometers" ))); |
| 198 | |
| 199 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 200 | id: SquarePicometer, |
| 201 | multiplier: 1e-24, |
| 202 | i18nc("area unit symbol" , "pm²" ), |
| 203 | i18nc("unit description in lists" , "square picometers" ), |
| 204 | i18nc("unit synonyms for matching user input" , "square picometer;square picometers;pm²;pm/-2;pm^2;pm2" ), |
| 205 | symbolString, |
| 206 | ki18nc("amount in units (real)" , "%1 square picometers" ), |
| 207 | ki18ncp("amount in units (integer)" , "%1 square picometer" , "%1 square picometers" ))); |
| 208 | |
| 209 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 210 | id: SquareFemtometer, |
| 211 | multiplier: 1e-30, |
| 212 | i18nc("area unit symbol" , "fm²" ), |
| 213 | i18nc("unit description in lists" , "square femtometers" ), |
| 214 | i18nc("unit synonyms for matching user input" , "square femtometer;square femtometers;fm²;fm/-2;fm^2;fm2" ), |
| 215 | symbolString, |
| 216 | ki18nc("amount in units (real)" , "%1 square femtometers" ), |
| 217 | ki18ncp("amount in units (integer)" , "%1 square femtometer" , "%1 square femtometers" ))); |
| 218 | |
| 219 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 220 | id: SquareAttometer, |
| 221 | multiplier: 1e-36, |
| 222 | i18nc("area unit symbol" , "am²" ), |
| 223 | i18nc("unit description in lists" , "square attometers" ), |
| 224 | i18nc("unit synonyms for matching user input" , "square attometer;square attometers;am²;am/-2;am^2;am2" ), |
| 225 | symbolString, |
| 226 | ki18nc("amount in units (real)" , "%1 square attometers" ), |
| 227 | ki18ncp("amount in units (integer)" , "%1 square attometer" , "%1 square attometers" ))); |
| 228 | |
| 229 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 230 | id: SquareZeptometer, |
| 231 | multiplier: 1e-42, |
| 232 | i18nc("area unit symbol" , "zm²" ), |
| 233 | i18nc("unit description in lists" , "square zeptometers" ), |
| 234 | i18nc("unit synonyms for matching user input" , "square zeptometer;square zeptometers;zm²;zm/-2;zm^2;zm2" ), |
| 235 | symbolString, |
| 236 | ki18nc("amount in units (real)" , "%1 square zeptometers" ), |
| 237 | ki18ncp("amount in units (integer)" , "%1 square zeptometer" , "%1 square zeptometers" ))); |
| 238 | |
| 239 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 240 | id: SquareYoctometer, |
| 241 | multiplier: 1e-48, |
| 242 | i18nc("area unit symbol" , "ym²" ), |
| 243 | i18nc("unit description in lists" , "square yoctometers" ), |
| 244 | i18nc("unit synonyms for matching user input" , "square yoctometer;square yoctometers;ym²;ym/-2;ym^2;ym2" ), |
| 245 | symbolString, |
| 246 | ki18nc("amount in units (real)" , "%1 square yoctometers" ), |
| 247 | ki18ncp("amount in units (integer)" , "%1 square yoctometer" , "%1 square yoctometers" ))); |
| 248 | |
| 249 | d->addCommonUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 250 | id: Acre, |
| 251 | multiplier: 4046.86, |
| 252 | i18nc("area unit symbol" , "acre" ), |
| 253 | i18nc("unit description in lists" , "acres" ), |
| 254 | i18nc("unit synonyms for matching user input" , "acre;acres" ), |
| 255 | symbolString, |
| 256 | ki18nc("amount in units (real)" , "%1 acres" ), |
| 257 | ki18ncp("amount in units (integer)" , "%1 acre" , "%1 acres" ))); |
| 258 | |
| 259 | d->addCommonUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 260 | id: SquareFoot, |
| 261 | multiplier: 0.092903, |
| 262 | i18nc("area unit symbol" , "ft²" ), |
| 263 | i18nc("unit description in lists" , "square feet" ), |
| 264 | i18nc("unit synonyms for matching user input" , "square foot;square feet;ft²;square ft;sq foot;sq ft;sq feet;feet²" ), |
| 265 | symbolString, |
| 266 | ki18nc("amount in units (real)" , "%1 square feet" ), |
| 267 | ki18ncp("amount in units (integer)" , "%1 square foot" , "%1 square feet" ))); |
| 268 | |
| 269 | d->addUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 270 | id: SquareInch, |
| 271 | multiplier: 0.00064516, |
| 272 | i18nc("area unit symbol" , "in²" ), |
| 273 | i18nc("unit description in lists" , "square inches" ), |
| 274 | i18nc("unit synonyms for matching user input" , "square inch;square inches;in²;square inch;square in;sq inches;sq inch;sq in;inch²" ), |
| 275 | symbolString, |
| 276 | ki18nc("amount in units (real)" , "%1 square inches" ), |
| 277 | ki18ncp("amount in units (integer)" , "%1 square inch" , "%1 square inches" ))); |
| 278 | |
| 279 | d->addCommonUnit(unit: UnitPrivate::makeUnit(categoryId: AreaCategory, |
| 280 | id: SquareMile, |
| 281 | multiplier: 2.58999e+06, |
| 282 | i18nc("area unit symbol" , "mi²" ), |
| 283 | i18nc("unit description in lists" , "square miles" ), |
| 284 | i18nc("unit synonyms for matching user input" , "square mile;square miles;mi²;square mi;sq miles;sq mile;sq mi;mile²" ), |
| 285 | symbolString, |
| 286 | ki18nc("amount in units (real)" , "%1 square miles" ), |
| 287 | ki18ncp("amount in units (integer)" , "%1 square mile" , "%1 square miles" ))); |
| 288 | |
| 289 | return c; |
| 290 | } |
| 291 | |
| 292 | } // KUnitConversion namespace |
| 293 | |