Commit Graph

189 Commits

Author SHA1 Message Date
Adriaan de Groot
b7dbc8cc1f [locale] Name zones when debugging
- When debugging timezones, state their names (e.g. UTC offset)
   and also log the pixel position under consideration.
2018-05-29 06:33:50 -04:00
Adriaan de Groot
2c18ba6ddb [locale] Adjust latitude calculation in the southern hemisphere
The scaling on the map was a little off; the degrees of latitude
are a little wider there than around the equator and Europe.

 - Johannesburg is in the right spot
 - Hobart is no longer a suburb of Melbourne
 - Punta Arenas is in Chile
2018-05-29 06:09:25 -04:00
Adriaan de Groot
9f8f76befc [locale] Introduce timezone-widget debugging
Replace pin and text label with just a dot (to pinpoint where
locations are) and draw latitude lines on the globe when
DEbUG_TIMEZONE is set at compile time. Since there's probably
still timezone-related bugs (in particular in the images that
map points on the globe to timezones), leave this in the codebase.
2018-05-29 06:09:25 -04:00
Adriaan de Groot
a38a2a54f7 [locale] Check all XML TimeZone elements if needed
- reduce warnings about loop-executed-only-once
 - if there is more than one TimeZone element, use the virst valid one
 - warn if nothing is found
2018-05-07 05:18:35 -04:00
Adriaan de Groot
b8b607c421 [locale] Fix QString-vs-char* confusion 2018-04-18 18:28:37 -04:00
Adriaan de Groot
522adf766a [locale] Switch HTTP GET test to KDE servers
- Use the official name of the KDE GeoIP service
 - Log the URL *before* the check, in case one fails
2018-04-17 07:45:27 -04:00
Adriaan de Groot
5acf67a057 [locale] Fix tests with spaces in zone names
- "North Dakota" -> "North_Dakota" following the change that fixes up
   dodgy names automatically.
2018-04-17 07:40:38 -04:00
Adriaan de Groot
b4e4b691fd [locale] Accomodate more dodgy GeoIP providers
- Force spaces to _
 - Document the bits

FIXES #933
2018-04-17 07:32:27 -04:00
Adriaan de Groot
3ef0fbe892 [locale] Add tests for a bunch of GeoIP providers
- Since these tests use network resources, they are not enabled by default.
   Set the environment variable TEST_HTTP_GET to actually do them.
 - Do one request for each provider and check that they are all consistent.
   (This works for me, yielding Europe/Amsterdam for all).
2018-04-16 09:17:18 -04:00
Adriaan de Groot
0f5e061c4a [locale] Support multi-level selection from JSON data
- Some providers don't provide a single flat JSON object
   (e.g. "{time_zone: foo}") but a nested structure
   (e.g. "{location: {time_zone: foo}}"), so allow dots
   in the selector to do multi-level selection.
2018-04-16 09:13:06 -04:00
Adriaan de Groot
d04e243c4e [locale] Auto-clean up time zone data
- Some providers return weirdly escaped data; strip out useless
   escaping before splitting (there are no characters in correct
   time zone names that need escaping)
 - Add some tests for TZ splitting
2018-04-16 05:49:08 -04:00
Adriaan de Groot
fa5d40006c [locale] Fix interpretation of configured selector
- In GeoIP handler constructors that take a string (to configure the
   selector to use), interpret the empty string (which generally isn't
   a meaningful selector) as meaning "use the default".
 - Drop the no-argument constructors in favor of a default-argument
   which is empty.
2018-04-16 05:32:22 -04:00
Adriaan de Groot
352b385b12 [locale] Make the selector configurable via the config file 2018-04-16 05:32:22 -04:00
Adriaan de Groot
b1b59b27b2 [locale] Expand tests for alternate selectors
- Check that the alternate selectors are used
2018-04-16 05:32:22 -04:00
Adriaan de Groot
fe20416a54 [locale] Make the selector configurable
- GeoIP gets a string selector; the interpretation is up to derived classes.
 - GeoIPXML and GeoIPJSON use the selector to select an element by tag
   or an attribute, respectively.
2018-04-16 04:55:37 -04:00
Adriaan de Groot
79a6d7ccbd [locale] Make file and class consistent GeoIPXML
- Rename the class to match the filename.
2018-04-16 04:35:32 -04:00
Adriaan de Groot
2cd4461b57 [locale] Rename JSON handler
- The handler for JSON data should be called that, not named
   specially after the original provider it was implemented for.
 - Make filename and classname consistent, GeoIPJSON.
2018-04-16 04:32:49 -04:00
Adriaan de Groot
ec113e3df3 [locale] Log GeoIP attempt URL, use possibly-modified form 2018-04-13 09:42:28 -04:00
Adriaan de Groot
d6f082752d [locale] On GeoIP failure, log URL 2018-04-13 09:36:39 -04:00
Adriaan de Groot
47b7040897 [locale] Adjust to Calamares 3.2 idiom 2018-04-13 09:24:59 -04:00
Adriaan de Groot
3ea5a06157 Merge branch '3.1.x-stable' 2018-04-13 08:50:17 -04:00
Adriaan de Groot
c9928c99c8 Merge remote-tracking branch 'origin/3.1.x-stable' into 3.1.x-stable 2018-04-12 17:13:34 -04:00
Adriaan de Groot
1340613ef5 [locale] Additional test application for GeoIP processing 2018-04-12 16:55:24 -04:00
Adriaan de Groot
76e37402b3 [locale] Extend tests with negative results 2018-04-12 16:23:54 -04:00
Adriaan de Groot
0c1453ff18 [locale] Fix string value handled by XML parser 2018-04-12 16:23:54 -04:00
Adriaan de Groot
eea421f499 [locale] Add tests for GeoIP handlers
- One sample JSON result
 - Two sample XML results
2018-04-12 16:23:54 -04:00
Adriaan de Groot
6b7c8a694a [locale] Make the style of GeoIP retrieval selectable
- Unchanged config files will continue to use the weird addition
   of /json, and interpret JSON data.
 - Allow to specify full URL with data format through one of
     geoipStyle: json
     geoipStyle: xml
 - XML support is optional
2018-04-12 14:37:38 -04:00
Adriaan de Groot
5b98e58ae7 [locale] Refactor GeoIP handlers
- Read the data in the caller of the handler, instead of in the callers
2018-04-12 12:22:43 -04:00
Adriaan de Groot
939cdff93b [locale] Add alternate GeoIP data format 2018-04-12 12:18:43 -04:00
Adriaan de Groot
aaae1507cd [locale] Convenience function for TZ splitting 2018-04-12 11:51:50 -04:00
Adriaan de Groot
3636226425 [locale] Document change to the way GeoIPURL is handled. 2018-04-12 10:18:15 -04:00
Adriaan de Groot
fe98b789f0 [locale] Document the settings in locale.conf
- The geoipUrl is weird, because it is not a complete URL.
   Document that, and what kind of data is expected.

FIXES #920
2018-04-12 10:15:19 -04:00
Adriaan de Groot
d5623af8ef [locale] Refactor geoip handling
- Configuration **must** be a complete URL. The implementation no
   longer appends /json to the URL.
2018-04-12 10:11:48 -04:00
Adriaan de Groot
c0d5a153d4 [locale] Refactor GeoIP handler
- Move GeoIP to its own cpp file
 - Provide a default implementation of the URL mangler
2018-04-12 09:54:22 -04:00
Adriaan de Groot
445f181cc3 [locale] Start refactoring geoip handling
- Introduce a handler interface for GeoIP providers
 - Move the implementation of FreeGeoIP into a struct of its own
2018-04-12 09:45:48 -04:00
Adriaan de Groot
7e5c91aae6 [locale] Reduce debugging bla bla 2018-04-04 11:42:38 -04:00
Adriaan de Groot
9fe85e592f Merge branch '3.1.x-stable' 2018-04-04 11:10:34 -04:00
Adriaan de Groot
b8e6144553 [locale] Document how the locale entry in Global Storage works.
- Make the BCP47 value explicitly lower-case.
 - Add some constness and encapsulation.
 - Fix up documentation in the packages module explaining the
   format of the ${LOCALE} replacement (now forced to lower-case,
   but it is also only the language part, not e.g. en-UK).

FIXES #922
2018-04-03 13:07:36 -04:00
Adriaan de Groot
20e9c2c8e3 Merge branch '3.1.x-stable' 2018-03-29 17:35:36 -04:00
Adriaan de Groot
32a1c84935 [locale] Document the settings in locale.conf
- The geoipUrl is weird, because it is not a complete URL.
   Document that, and what kind of data is expected.

FIXES #920
2018-03-29 16:50:02 -04:00
Adriaan de Groot
3f77fb1d16 [modules] Use new convenience logging methods 2018-02-12 11:58:34 -05:00
Adriaan de Groot
762ad54344 Documentation: change http links to GitHub to https 2017-12-20 08:39:09 -05:00
Adriaan de Groot
62c03d6857 Merge branch '3.1.x-stable' 2017-11-06 05:43:29 -05:00
Adriaan de Groot
35f5612ec1 [locale] Fix GeoIP (reported by demm, crazy)
- data has already been read, don't try to read more from the QNM reply
 - regression introduced in 7e25909e
2017-11-01 11:07:18 +01:00
Gabriel Craciunescu
fc53438be9 locale.conf: fix localeGenPath comment 2017-10-30 19:21:51 +01:00
Gabriel Craciunescu
2e80ab98d7 locale.conf: explain what all the settings are about 2017-10-30 18:49:03 +01:00
Adriaan de Groot
9f84519e87 Merge branch '3.1.x-stable'
- pull in northern-locations fixes
 - pull in testing yaml-config
2017-10-12 14:00:24 -03:00
Adriaan de Groot
8b76b861ad Code-formatting, add (unused for now) overload of getLocationPosition() 2017-10-12 12:26:50 -03:00
Adriaan de Groot
00fa7bff1c Code-formatting, add copyright notice 2017-10-12 07:08:21 -07:00
Adriaan de Groot
78031636af Correct for distortion of globe.
In the timezone widget, locations in the far north -- Inuvik,
Thule, Longyearbyen -- were displayed too far south, because the
map location calculation assumes a linear gradient, which places
90 degrees north at about 70 degrees. Change calculation to
pretend the world is flat south of 62 degrees north, and then
'bend' the remaining 28 degrees of latitude to the top of the
image. This puts most places in the right spot, although Yellowknife
is now on the south shore of Great Slave.

Fort Nelson should be north of Dawson Creek, too -- the math still
needs a little work.

While here, put Antarctica in the south, otherwise Rothera keeps
showing up in Greenland.
2017-10-09 13:14:53 -07:00
Adriaan de Groot
bd4ee9320d Clang: warnings--, drop unused WindowFlags parameter 2017-09-26 11:51:11 +02:00
Adriaan de Groot
337903db09 Clang: reduce warnings about overriden destructors 2017-09-20 09:11:18 -04:00
Adriaan de Groot
da4fa6a63a Fix link / library name 2017-09-13 19:03:56 +02:00
Adriaan de Groot
25de3aca6e Clang: don't shadow global int timezone 2017-09-11 09:42:21 +02:00
Philip
d2964cc71c [locale] default to the states
- see also 239c7534d2
2017-09-10 22:33:25 +01:00
Adriaan de Groot
7e25909e18 YAML: refactor YAML-exception reporting
- both NetInstall (group data) and Locale (GeoIP) use network
   data returned as a source of YAML data. Try to explain
   parsing errors for both.

FIXES #786
2017-09-06 07:51:22 -04:00
Adriaan de Groot
e9e6834dd8 Locale: translate OK, Cancel buttons in language selection (reported on IRC) 2017-09-04 07:57:20 -04:00
Adriaan de Groot
9737041e66 Locale: extend prettyStatus()
Add description of language and number formats to pretty status.
This is shown in the summary page. Refactor a little to produce
the strings only in one place. Constify methods.

FIXES: #564
2017-08-08 17:29:44 +04:30
Adriaan de Groot
196b1567db Modules: remove boilerplate module.desc 2017-08-02 11:05:32 -04:00
Adriaan de Groot
8ea14d7957 Release: add copyright to files I've touched 2017-06-21 08:27:10 -04:00
Adriaan de Groot
e1a5af6529 Locale: when entering page, guess language.
If user picks an installer language on the welcome page, then
the system language follows that setting -- but only after the
first action where Calamares must guess the system language
based on location. So guess on entry, so that system language
follows installer language.

FIXES #688.
2017-06-07 03:52:44 +06:00
Adriaan de Groot
d545904f5c Locale: don't overwrite explicit choice
If the user selects a language from the dialog (by clicking 'change'),
then preserve that explicit choice even when clicking on another
location which would reset the language based on the installer-
language.
2017-06-06 21:08:15 +06:00
Adriaan de Groot
89753a35f0 Locale: double-click to close locale-selection dialog 2017-06-06 09:31:22 -05:00
Adriaan de Groot
4df0de200b Locale: refactor to update labels in one place only 2017-06-06 09:22:21 -04:00
Adriaan de Groot
e0988a5e19 Timezones: make some TZ+0 pixels transparent, since otherwise it claims Amsterdam 2017-06-06 09:22:21 -04:00
Adriaan de Groot
17b8a9d884 Logging: format the multi-line warning about no-supported-languages 2017-06-06 09:10:13 -04:00
Rohan Garg
f20f9cca2e
Pointless ctor is pointless 2017-03-15 16:47:47 +01:00
Rohan Garg
4a55802b18 Allow passing a LOCALE variable in the package list
This allows for installing locale packages. This can be achieved
by adding a entry of the format packagename-${LOCALE} in the
packages configuration module.
2016-12-20 16:57:23 +01:00
Teo Mrnjavac
e2b2d761c2 Do not LINK_PUBLIC by default. 2016-12-07 16:37:29 +01:00
Teo Mrnjavac
6f3dc32bfe Config file comment. 2016-09-26 10:57:56 +02:00
Kevin Kofler
1b2cce4be3 Fix locale filtering for UTF-8 on Fedora.
locale -a returns the locales using ".utf8" names rather than ".UTF-8".
The case-insensitive match does not help because it is "utf8" rather
than "UTF-8". So we need to match both with and without the dash.
2016-09-26 01:47:58 +02:00
Andrius Štikonas
9f0ca042fe Port away from most cases of Q_FOREACH to C++11 ranged for loop.
In order to avoid deep copies, Qt containers over which we iterate must be const
The remaining unported cases require qAsConst (Qt 5.7) or std::as_const (C++17)
2016-09-01 16:46:14 +01:00
Teo Mrnjavac
1a1657a7fc Set timezone on the live system too. 2016-08-26 17:20:48 +02:00
Teo Mrnjavac
f2a087c348 Write timezone correctly. 2016-08-26 15:05:42 +02:00
Teo Mrnjavac
8daac2cba5 Recompute defaults after init. 2016-08-18 16:18:24 +02:00
Teo Mrnjavac
3146d2093e Add support for freegeoip.net in locale module.
This is disabled by default. To enable, provide a geoipUrl setting in
locale.conf.
Relies on the RequirementsChecker output, in the welcome module.
2016-08-18 15:38:41 +02:00
Teo Mrnjavac
cd1268cb63 Fix defaults. 2016-08-18 15:30:08 +02:00
Teo Mrnjavac
9a1c65a23e Style. 2016-08-18 15:29:32 +02:00
Philip Müller
239c7534d2 [locale] default to the states
Since our default locale setting is **en_US** anyway, it makes more sense to default to New York.
2016-08-15 10:06:06 +02:00
Teo Mrnjavac
e6cabe277b Fix locale names and user-visible locale names. 2016-08-10 16:10:06 +02:00
Teo Mrnjavac
160d00a47a Write locales map into GS. 2016-08-10 11:47:24 +02:00
Teo Mrnjavac
8f44f76443 Use LocaleConfiguration in LocalePage. Add relevant widgets.
Also fix error reporting.
Move guesswork to LocaleConfiguration + a total rewrite.
Locale is now a LocaleConfiguration, that converts to QMap.
2016-08-10 11:45:22 +02:00
Teo Mrnjavac
f60f1c6220 New LocaleConfiguration class which also deals with locale guesswork. 2016-08-10 11:43:13 +02:00
Teo Mrnjavac
471d94a02e Read country codes from zone.tab. 2016-08-10 11:43:13 +02:00
Teo Mrnjavac
5e12096e4b Only use UTF-8 locales. 2016-08-02 13:25:33 +02:00
Teo Mrnjavac
39782f80c9 Fix warnings. 2016-07-27 13:38:30 +02:00
Teo Mrnjavac
9450290212 Add support for locales in /usr/share/i18n/SUPPORTED 2016-05-27 17:14:17 +02:00
Teo Mrnjavac
1b1d78cf51 Improve locale.gen file parser. 2016-04-01 15:30:35 +02:00
Kevin Kofler
bcab8b2bfe [locale] Do not call timedatectl in a chroot, it is not safe
(timedatectl talks to a running timedated over D-Bus.) And we already
have code that works in a chroot below.
2016-01-15 02:44:27 +01:00
Teo Mrnjavac
e120f2a74c PluginFactory in Locale module. 2015-09-15 16:48:42 +02:00
Rohan Garg
18218b250e Adjust /etc/timezone if it exists 2015-09-15 16:48:41 +02:00
Rohan Garg
a98742c32c Use timedatectl provided by systemd to set the time on the target
Use tools provided by systemd to set the time and fall back to
manually doing it via linking /etc/localtime
2015-09-15 16:48:41 +02:00
Teo Mrnjavac
42e465aa10 CalamaresUtils::System is now a class. 2015-09-15 16:48:41 +02:00
Teo Mrnjavac
bf885d65db chroot calls are now generic "target env" calls. 2015-09-15 16:48:41 +02:00
Teo Mrnjavac
b75b13b466 Make sure to update GlobalStorage on every timezone change. 2015-07-15 17:48:59 +02:00
Teo Mrnjavac
fefa736501 Use <strong> instead of <b> in all instances. 2015-04-13 14:58:34 +02:00
Gormogon
e2d05cb9f2 Align Pointers 2015-02-25 19:57:19 -05:00
Teo Mrnjavac
92eae47a1d Const correctness. 2015-02-20 16:21:30 +01:00
Teo Mrnjavac
71851ed274 Process user-visible strings in TimezoneWidget and LocalePage. 2015-02-20 16:21:30 +01:00
Teo Mrnjavac
cf64b2ce27 Allow zone subdivisions in timezones list.
CAL-191 #close Please test and reopen if it's still broken.
2015-02-20 14:54:52 +01:00