1/*
2 * Copyright (C) 2007-2009 Petri Damstén <damu@iki.fi>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Library General Public License as
6 * published by the Free Software Foundation; either version 2, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details
13 *
14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the
16 * Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19
20#include "area.h"
21#include "converter.h"
22#include <klocale.h>
23
24using namespace KUnitConversion;
25
26Area::Area() : UnitCategory(AreaCategory)
27{
28 setName(i18nc("Unit Category: two dimensional size of a surface", "Area"));
29 // i18n: Used when converting to symbol string e.g. 2.34 m²
30 setSymbolStringFormat(ki18nc("%1 value, %2 unit symbol (area)", "%1 %2"));
31
32 U(SquareYottameter, 1e+48,
33 // i18n: Used when unit symbol is needed.
34 i18nc("area unit symbol", "Ym²"),
35 // i18n: unit as it will be shown to user wherever units are to
36 // be explicitly selected (listbox, radio buttons, checkboxes...).
37 // E.g. an application may give option "Unit of wind speed: [unit-list-box]"
38 i18nc("unit description in lists", "square yottameters"),
39 // i18n: Messages such as this one provide synonyms for each unit,
40 // in order to guess the unit from the text that the user inputs.
41 // Synonyms are semicolon-separated, and you can add as many as
42 // you need (either equal to, more, or less than in the original).
43 // Note that any gramatical inflections of unit names
44 // (such as plural and cases) should also be listed.
45 i18nc("unit synonyms for matching user input",
46 "square yottameter;square yottameters;Ym²;Ym/-2;Ym^2;Ym2"),
47 // i18n: This is used when a real-valued amount in units is given,
48 // such as "0.37 miles".
49 ki18nc("amount in units (real)", "%1 square yottameters"),
50 // i18n: This is used when a integer-valued amount in units is given,
51 // such as "1 mile" or "21 miles".
52 ki18ncp("amount in units (integer)", "%1 square yottameter", "%1 square yottameters")
53 );
54 U(SquareZettameter, 1e+42,
55 i18nc("area unit symbol", "Zm²"),
56 i18nc("unit description in lists", "square zettameters"),
57 i18nc("unit synonyms for matching user input",
58 "square zettameter;square zettameters;Zm²;Zm/-2;Zm^2;Zm2"),
59 ki18nc("amount in units (real)", "%1 square zettameters"),
60 ki18ncp("amount in units (integer)", "%1 square zettameter", "%1 square zettameters")
61 );
62 U(SquareExameter, 1e+36,
63 i18nc("area unit symbol", "Em²"),
64 i18nc("unit description in lists", "square exameters"),
65 i18nc("unit synonyms for matching user input",
66 "square exameter;square exameters;Em²;Em/-2;Em^2;Em2"),
67 ki18nc("amount in units (real)", "%1 square exameters"),
68 ki18ncp("amount in units (integer)", "%1 square exameter", "%1 square exameters")
69 );
70 U(SquarePetameter, 1e+30,
71 i18nc("area unit symbol", "Pm²"),
72 i18nc("unit description in lists", "square petameters"),
73 i18nc("unit synonyms for matching user input",
74 "square petameter;square petameters;Pm²;Pm/-2;Pm^2;Pm2"),
75 ki18nc("amount in units (real)", "%1 square petameters"),
76 ki18ncp("amount in units (integer)", "%1 square petameter", "%1 square petameters")
77 );
78 U(SquareTerameter, 1e+24,
79 i18nc("area unit symbol", "Tm²"),
80 i18nc("unit description in lists", "square terameters"),
81 i18nc("unit synonyms for matching user input",
82 "square terameter;square terameters;Tm²;Tm/-2;Tm^2;Tm2"),
83 ki18nc("amount in units (real)", "%1 square terameters"),
84 ki18ncp("amount in units (integer)", "%1 square terameter", "%1 square terameters")
85 );
86 U(SquareGigameter, 1e+18,
87 i18nc("area unit symbol", "Gm²"),
88 i18nc("unit description in lists", "square gigameters"),
89 i18nc("unit synonyms for matching user input",
90 "square gigameter;square gigameters;Gm²;Gm/-2;Gm^2;Gm2"),
91 ki18nc("amount in units (real)", "%1 square gigameters"),
92 ki18ncp("amount in units (integer)", "%1 square gigameter", "%1 square gigameters")
93 );
94 U(SquareMegameter, 1e+12,
95 i18nc("area unit symbol", "Mm²"),
96 i18nc("unit description in lists", "square megameters"),
97 i18nc("unit synonyms for matching user input",
98 "square megameter;square megameters;Mm²;Mm/-2;Mm^2;Mm2"),
99 ki18nc("amount in units (real)", "%1 square megameters"),
100 ki18ncp("amount in units (integer)", "%1 square megameter", "%1 square megameters")
101 );
102 U(SquareKilometer, 1e+06,
103 i18nc("area unit symbol", "km²"),
104 i18nc("unit description in lists", "square kilometers"),
105 i18nc("unit synonyms for matching user input",
106 "square kilometer;square kilometers;km²;km/-2;km^2;km2"),
107 ki18nc("amount in units (real)", "%1 square kilometers"),
108 ki18ncp("amount in units (integer)", "%1 square kilometer", "%1 square kilometers")
109 );
110 U(SquareHectometer, 10000,
111 i18nc("area unit symbol", "hm²"),
112 i18nc("unit description in lists", "square hectometers"),
113 i18nc("unit synonyms for matching user input",
114 "square hectometer;square hectometers;hm²;hm/-2;hm^2;hm2;hectare;hectares"),
115 ki18nc("amount in units (real)", "%1 square hectometers"),
116 ki18ncp("amount in units (integer)", "%1 square hectometer", "%1 square hectometers")
117 );
118 U(SquareDecameter, 100,
119 i18nc("area unit symbol", "dam²"),
120 i18nc("unit description in lists", "square decameters"),
121 i18nc("unit synonyms for matching user input",
122 "square decameter;square decameters;dam²;dam/-2;dam^2;dam2"),
123 ki18nc("amount in units (real)", "%1 square decameters"),
124 ki18ncp("amount in units (integer)", "%1 square decameter", "%1 square decameters")
125 );
126 setDefaultUnit(UP(SquareMeter, 1,
127 i18nc("area unit symbol", "m²"),
128 i18nc("unit description in lists", "square meters"),
129 i18nc("unit synonyms for matching user input", "square meter;square meters;m²;m/-2;m^2;m2"),
130 ki18nc("amount in units (real)", "%1 square meters"),
131 ki18ncp("amount in units (integer)", "%1 square meter", "%1 square meters")
132 ));
133 U(SquareDecimeter, 0.01,
134 i18nc("area unit symbol", "dm²"),
135 i18nc("unit description in lists", "square decimeters"),
136 i18nc("unit synonyms for matching user input",
137 "square decimeter;square decimeters;dm²;dm/-2;dm^2;dm2"),
138 ki18nc("amount in units (real)", "%1 square decimeters"),
139 ki18ncp("amount in units (integer)", "%1 square decimeter", "%1 square decimeters")
140 );
141 U(SquareCentimeter, 0.0001,
142 i18nc("area unit symbol", "cm²"),
143 i18nc("unit description in lists", "square centimeters"),
144 i18nc("unit synonyms for matching user input",
145 "square centimeter;square centimeters;cm²;cm/-2;cm^2;cm2"),
146 ki18nc("amount in units (real)", "%1 square centimeters"),
147 ki18ncp("amount in units (integer)", "%1 square centimeter", "%1 square centimeters")
148 );
149 U(SquareMillimeter, 1e-06,
150 i18nc("area unit symbol", "mm²"),
151 i18nc("unit description in lists", "square millimeters"),
152 i18nc("unit synonyms for matching user input",
153 "square millimeter;square millimeters;mm²;mm/-2;mm^2;mm2"),
154 ki18nc("amount in units (real)", "%1 square millimeters"),
155 ki18ncp("amount in units (integer)", "%1 square millimeter", "%1 square millimeters")
156 );
157 U(SquareMicrometer, 1e-12,
158 i18nc("area unit symbol", "µm²"),
159 i18nc("unit description in lists", "square micrometers"),
160 i18nc("unit synonyms for matching user input",
161 "square micrometer;square micrometers;µm²;um²;µm/-2;µm^2;µm2"),
162 ki18nc("amount in units (real)", "%1 square micrometers"),
163 ki18ncp("amount in units (integer)", "%1 square micrometer", "%1 square micrometers")
164 );
165 U(SquareNanometer, 1e-18,
166 i18nc("area unit symbol", "nm²"),
167 i18nc("unit description in lists", "square nanometers"),
168 i18nc("unit synonyms for matching user input",
169 "square nanometer;square nanometers;nm²;nm/-2;nm^2;nm2"),
170 ki18nc("amount in units (real)", "%1 square nanometers"),
171 ki18ncp("amount in units (integer)", "%1 square nanometer", "%1 square nanometers")
172 );
173 U(SquarePicometer, 1e-24,
174 i18nc("area unit symbol", "pm²"),
175 i18nc("unit description in lists", "square picometers"),
176 i18nc("unit synonyms for matching user input",
177 "square picometer;square picometers;pm²;pm/-2;pm^2;pm2"),
178 ki18nc("amount in units (real)", "%1 square picometers"),
179 ki18ncp("amount in units (integer)", "%1 square picometer", "%1 square picometers")
180 );
181 U(SquareFemtometer, 1e-30,
182 i18nc("area unit symbol", "fm²"),
183 i18nc("unit description in lists", "square femtometers"),
184 i18nc("unit synonyms for matching user input",
185 "square femtometer;square femtometers;fm²;fm/-2;fm^2;fm2"),
186 ki18nc("amount in units (real)", "%1 square femtometers"),
187 ki18ncp("amount in units (integer)", "%1 square femtometer", "%1 square femtometers")
188 );
189 U(SquareAttometer, 1e-36,
190 i18nc("area unit symbol", "am²"),
191 i18nc("unit description in lists", "square attometers"),
192 i18nc("unit synonyms for matching user input",
193 "square attometer;square attometers;am²;am/-2;am^2;am2"),
194 ki18nc("amount in units (real)", "%1 square attometers"),
195 ki18ncp("amount in units (integer)", "%1 square attometer", "%1 square attometers")
196 );
197 U(SquareZeptometer, 1e-42,
198 i18nc("area unit symbol", "zm²"),
199 i18nc("unit description in lists", "square zeptometers"),
200 i18nc("unit synonyms for matching user input",
201 "square zeptometer;square zeptometers;zm²;zm/-2;zm^2;zm2"),
202 ki18nc("amount in units (real)", "%1 square zeptometers"),
203 ki18ncp("amount in units (integer)", "%1 square zeptometer", "%1 square zeptometers")
204 );
205 U(SquareYoctometer, 1e-48,
206 i18nc("area unit symbol", "ym²"),
207 i18nc("unit description in lists", "square yoctometers"),
208 i18nc("unit synonyms for matching user input",
209 "square yoctometer;square yoctometers;ym²;ym/-2;ym^2;ym2"),
210 ki18nc("amount in units (real)", "%1 square yoctometers"),
211 ki18ncp("amount in units (integer)", "%1 square yoctometer", "%1 square yoctometers")
212 );
213 U(Acre, 4046.86,
214 i18nc("area unit symbol", "acre"),
215 i18nc("unit description in lists", "acres"),
216 i18nc("unit synonyms for matching user input", "acre;acres"),
217 ki18nc("amount in units (real)", "%1 acres"),
218 ki18ncp("amount in units (integer)", "%1 acre", "%1 acres")
219 );
220 U(SquareFoot, 0.092903,
221 i18nc("area unit symbol", "ft²"),
222 i18nc("unit description in lists", "square feet"),
223 i18nc("unit synonyms for matching user input",
224 "square foot;square feet;ft²;square ft;sq foot;sq ft;sq feet;feet²"),
225 ki18nc("amount in units (real)", "%1 square feet"),
226 ki18ncp("amount in units (integer)", "%1 square foot", "%1 square feet")
227 );
228 U(SquareInch, 0.00064516,
229 i18nc("area unit symbol", "in²"),
230 i18nc("unit description in lists", "square inches"),
231 i18nc("unit synonyms for matching user input",
232 "square inch;square inches;in²;square inch;square in;sq inches;sq inch;sq in;inch²"),
233 ki18nc("amount in units (real)", "%1 square inches"),
234 ki18ncp("amount in units (integer)", "%1 square inch", "%1 square inches")
235 );
236 U(SquareMile, 2.58999e+06,
237 i18nc("area unit symbol", "mi²"),
238 i18nc("unit description in lists", "square miles"),
239 i18nc("unit synonyms for matching user input",
240 "square mile;square miles;mi²;square mi;sq miles;sq mile;sq mi;mile²"),
241 ki18nc("amount in units (real)", "%1 square miles"),
242 ki18ncp("amount in units (integer)", "%1 square mile", "%1 square miles")
243 );
244
245 setMostCommonUnits(QList<int>() <<
246 SquareKilometer << SquareMeter << SquareHectometer << Acre << SquareFoot << SquareMile);
247}
248