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 "length.h"
21#include "converter.h"
22#include <klocale.h>
23
24using namespace KUnitConversion;
25
26Length::Length() : UnitCategory(LengthCategory)
27{
28 setName(i18n("Length"));
29 setSymbolStringFormat(ki18nc("%1 value, %2 unit symbol (length", "%1 %2"));
30
31 U(Yottameter, 1e+24,
32 i18nc("length unit symbol", "Ym"),
33 i18nc("unit description in lists", "yottameters"),
34 i18nc("unit synonyms for matching user input", "yottameter;yottameters;Ym"),
35 ki18nc("amount in units (real)", "%1 yottameters"),
36 ki18ncp("amount in units (integer)", "%1 yottameter", "%1 yottameters")
37 );
38 U(Zettameter, 1e+21,
39 i18nc("length unit symbol", "Zm"),
40 i18nc("unit description in lists", "zettameters"),
41 i18nc("unit synonyms for matching user input", "zettameter;zettameters;Zm"),
42 ki18nc("amount in units (real)", "%1 zettameters"),
43 ki18ncp("amount in units (integer)", "%1 zettameter", "%1 zettameters")
44 );
45 U(Exameter, 1e+18,
46 i18nc("length unit symbol", "Em"),
47 i18nc("unit description in lists", "exameters"),
48 i18nc("unit synonyms for matching user input", "exameter;exameters;Em"),
49 ki18nc("amount in units (real)", "%1 exameters"),
50 ki18ncp("amount in units (integer)", "%1 exameter", "%1 exameters")
51 );
52 U(Petameter, 1e+15,
53 i18nc("length unit symbol", "Pm"),
54 i18nc("unit description in lists", "petameters"),
55 i18nc("unit synonyms for matching user input", "petameter;petameters;Pm"),
56 ki18nc("amount in units (real)", "%1 petameters"),
57 ki18ncp("amount in units (integer)", "%1 petameter", "%1 petameters")
58 );
59 U(Terameter, 1e+12,
60 i18nc("length unit symbol", "Tm"),
61 i18nc("unit description in lists", "terameters"),
62 i18nc("unit synonyms for matching user input", "terameter;terameters;Tm"),
63 ki18nc("amount in units (real)", "%1 terameters"),
64 ki18ncp("amount in units (integer)", "%1 terameter", "%1 terameters")
65 );
66 U(Gigameter, 1e+09,
67 i18nc("length unit symbol", "Gm"),
68 i18nc("unit description in lists", "gigameters"),
69 i18nc("unit synonyms for matching user input", "gigameter;gigameters;Gm"),
70 ki18nc("amount in units (real)", "%1 gigameters"),
71 ki18ncp("amount in units (integer)", "%1 gigameter", "%1 gigameters")
72 );
73 U(Megameter, 1e+06,
74 i18nc("length unit symbol", "Mm"),
75 i18nc("unit description in lists", "megameters"),
76 i18nc("unit synonyms for matching user input", "megameter;megameters;Mm"),
77 ki18nc("amount in units (real)", "%1 megameters"),
78 ki18ncp("amount in units (integer)", "%1 megameter", "%1 megameters")
79 );
80 U(Kilometer, 1000,
81 i18nc("length unit symbol", "km"),
82 i18nc("unit description in lists", "kilometers"),
83 i18nc("unit synonyms for matching user input", "kilometer;kilometers;km"),
84 ki18nc("amount in units (real)", "%1 kilometers"),
85 ki18ncp("amount in units (integer)", "%1 kilometer", "%1 kilometers")
86 );
87 U(Hectometer, 100,
88 i18nc("length unit symbol", "hm"),
89 i18nc("unit description in lists", "hectometers"),
90 i18nc("unit synonyms for matching user input", "hectometer;hectometers;hm"),
91 ki18nc("amount in units (real)", "%1 hectometers"),
92 ki18ncp("amount in units (integer)", "%1 hectometer", "%1 hectometers")
93 );
94 U(Decameter, 10,
95 i18nc("length unit symbol", "dam"),
96 i18nc("unit description in lists", "decameters"),
97 i18nc("unit synonyms for matching user input", "decameter;decameters;dam"),
98 ki18nc("amount in units (real)", "%1 decameters"),
99 ki18ncp("amount in units (integer)", "%1 decameter", "%1 decameters")
100 );
101 setDefaultUnit(UP(Meter, 1,
102 i18nc("length unit symbol", "m"),
103 i18nc("unit description in lists", "meters"),
104 i18nc("unit synonyms for matching user input", "meter;meters;m"),
105 ki18nc("amount in units (real)", "%1 meters"),
106 ki18ncp("amount in units (integer)", "%1 meter", "%1 meters")
107 ));
108 U(Decimeter, 0.1,
109 i18nc("length unit symbol", "dm"),
110 i18nc("unit description in lists", "decimeters"),
111 i18nc("unit synonyms for matching user input", "decimeter;decimeters;dm"),
112 ki18nc("amount in units (real)", "%1 decimeters"),
113 ki18ncp("amount in units (integer)", "%1 decimeter", "%1 decimeters")
114 );
115 U(Centimeter, 0.01,
116 i18nc("length unit symbol", "cm"),
117 i18nc("unit description in lists", "centimeters"),
118 i18nc("unit synonyms for matching user input", "centimeter;centimeters;cm"),
119 ki18nc("amount in units (real)", "%1 centimeters"),
120 ki18ncp("amount in units (integer)", "%1 centimeter", "%1 centimeters")
121 );
122 U(Millimeter, 0.001,
123 i18nc("length unit symbol", "mm"),
124 i18nc("unit description in lists", "millimeters"),
125 i18nc("unit synonyms for matching user input", "millimeter;millimeters;mm"),
126 ki18nc("amount in units (real)", "%1 millimeters"),
127 ki18ncp("amount in units (integer)", "%1 millimeter", "%1 millimeters")
128 );
129 U(Micrometer, 1e-06,
130 i18nc("length unit symbol", "µm"),
131 i18nc("unit description in lists", "micrometers"),
132 i18nc("unit synonyms for matching user input", "micrometer;micrometers;µm;um"),
133 ki18nc("amount in units (real)", "%1 micrometers"),
134 ki18ncp("amount in units (integer)", "%1 micrometer", "%1 micrometers")
135 );
136 U(Nanometer, 1e-09,
137 i18nc("length unit symbol", "nm"),
138 i18nc("unit description in lists", "nanometers"),
139 i18nc("unit synonyms for matching user input", "nanometer;nanometers;nm"),
140 ki18nc("amount in units (real)", "%1 nanometers"),
141 ki18ncp("amount in units (integer)", "%1 nanometer", "%1 nanometers")
142 );
143 U(Angstrom, 1e-10,
144 i18nc("length unit symbol", "Å"),
145 i18nc("unit description in lists", "Ångström"),
146 i18nc("unit synonyms for matching user input", "Ångström;Ångstrom;Angström;Angstrom;Ångströms;Ångstroms;Angströms;Angstroms;Å"),
147 ki18nc("amount in units (real)", "%1 Ångströms"),
148 ki18ncp("amount in units (integer)", "%1 Ångström", "%1 Ångströms")
149 );
150 U(Picometer, 1e-12,
151 i18nc("length unit symbol", "pm"),
152 i18nc("unit description in lists", "picometers"),
153 i18nc("unit synonyms for matching user input", "picometer;picometers;pm"),
154 ki18nc("amount in units (real)", "%1 picometers"),
155 ki18ncp("amount in units (integer)", "%1 picometer", "%1 picometers")
156 );
157 U(Femtometer, 1e-15,
158 i18nc("length unit symbol", "fm"),
159 i18nc("unit description in lists", "femtometers"),
160 i18nc("unit synonyms for matching user input", "femtometer;femtometers;fm"),
161 ki18nc("amount in units (real)", "%1 femtometers"),
162 ki18ncp("amount in units (integer)", "%1 femtometer", "%1 femtometers")
163 );
164 U(Attometer, 1e-18,
165 i18nc("length unit symbol", "am"),
166 i18nc("unit description in lists", "attometers"),
167 i18nc("unit synonyms for matching user input", "attometer;attometers;am"),
168 ki18nc("amount in units (real)", "%1 attometers"),
169 ki18ncp("amount in units (integer)", "%1 attometer", "%1 attometers")
170 );
171 U(Zeptometer, 1e-21,
172 i18nc("length unit symbol", "zm"),
173 i18nc("unit description in lists", "zeptometers"),
174 i18nc("unit synonyms for matching user input", "zeptometer;zeptometers;zm"),
175 ki18nc("amount in units (real)", "%1 zeptometers"),
176 ki18ncp("amount in units (integer)", "%1 zeptometer", "%1 zeptometers")
177 );
178 U(Yoctometer, 1e-24,
179 i18nc("length unit symbol", "ym"),
180 i18nc("unit description in lists", "yoctometers"),
181 i18nc("unit synonyms for matching user input", "yoctometer;yoctometers;ym"),
182 ki18nc("amount in units (real)", "%1 yoctometers"),
183 ki18ncp("amount in units (integer)", "%1 yoctometer", "%1 yoctometers")
184 );
185 U(Inch, 0.0254,
186 i18nc("length unit symbol", "in"),
187 i18nc("unit description in lists", "inches"),
188 i18nc("unit synonyms for matching user input", "inch;inches;in;\""),
189 ki18nc("amount in units (real)", "%1 inches"),
190 ki18ncp("amount in units (integer)", "%1 inch", "%1 inches")
191 );
192 U(Thou, 0.0000254,
193 i18nc("length unit symbol", "thou"),
194 i18nc("unit description in lists", "thousandths of an inch"),
195 i18nc("unit synonyms for matching user input", "thou;mil;point;thousandth of an inch;thousandths of an inch"),
196 ki18nc("amount in units (real)", "%1 thousandths of an inch"),
197 ki18ncp("amount in units (integer)", "%1 thousandth of an inch", "%1 thousandths of an inch")
198 );
199 U(Foot, 0.3048,
200 i18nc("length unit symbol", "ft"),
201 i18nc("unit description in lists", "feet"),
202 i18nc("unit synonyms for matching user input", "foot;feet;ft"),
203 ki18nc("amount in units (real)", "%1 feet"),
204 ki18ncp("amount in units (integer)", "%1 foot", "%1 feet")
205 );
206 U(Yard, 0.9144,
207 i18nc("length unit symbol", "yd"),
208 i18nc("unit description in lists", "yards"),
209 i18nc("unit synonyms for matching user input", "yard;yards;yd"),
210 ki18nc("amount in units (real)", "%1 yards"),
211 ki18ncp("amount in units (integer)", "%1 yard", "%1 yards")
212 );
213 U(Mile, 1609.34,
214 i18nc("length unit symbol", "mi"),
215 i18nc("unit description in lists", "miles"),
216 i18nc("unit synonyms for matching user input", "mile;miles;mi"),
217 ki18nc("amount in units (real)", "%1 miles"),
218 ki18ncp("amount in units (integer)", "%1 mile", "%1 miles")
219 );
220 U(NauticalMile, 1852,
221 i18nc("length unit symbol", "nmi"),
222 i18nc("unit description in lists", "nautical miles"),
223 i18nc("unit synonyms for matching user input", "nautical mile;nautical miles;nmi"),
224 ki18nc("amount in units (real)", "%1 nautical miles"),
225 ki18ncp("amount in units (integer)", "%1 nautical mile", "%1 nautical miles")
226 );
227 U(LightYear, 9.46073e+15,
228 i18nc("length unit symbol", "ly"),
229 i18nc("unit description in lists", "light-years"),
230 i18nc("unit synonyms for matching user input",
231 "light-year;light-years;ly;lightyear;lightyears"),
232 ki18nc("amount in units (real)", "%1 light-years"),
233 ki18ncp("amount in units (integer)", "%1 light-year", "%1 light-years")
234 );
235 U(Parsec, 3.08568e+16,
236 i18nc("length unit symbol", "pc"),
237 i18nc("unit description in lists", "parsecs"),
238 i18nc("unit synonyms for matching user input", "parsec;parsecs;pc"),
239 ki18nc("amount in units (real)", "%1 parsecs"),
240 ki18ncp("amount in units (integer)", "%1 parsec", "%1 parsecs")
241 );
242 U(AstronomicalUnit, 1.49598e+11,
243 i18nc("length unit symbol", "au"),
244 i18nc("unit description in lists", "astronomical units"),
245 i18nc("unit synonyms for matching user input", "astronomical unit;astronomical units;au"),
246 ki18nc("amount in units (real)", "%1 astronomical units"),
247 ki18ncp("amount in units (integer)", "%1 astronomical unit", "%1 astronomical units")
248 );
249
250 setMostCommonUnits(QList<int>() <<
251 Kilometer << Meter << Centimeter << Millimeter << Mile << Yard << Foot << Inch);
252}
253
254