[locale] Accomodate more dodgy GeoIP providers

- Force spaces to _
 - Document the bits

FIXES #933
This commit is contained in:
Adriaan de Groot 2018-04-17 07:32:27 -04:00
parent 3ef0fbe892
commit b4e4b691fd
3 changed files with 15 additions and 1 deletions

View File

@ -34,6 +34,7 @@ GeoIP::splitTZString( const QString& tz )
{ {
QString timezoneString( tz ); QString timezoneString( tz );
timezoneString.remove( '\\' ); timezoneString.remove( '\\' );
timezoneString.replace( ' ', '_' );
QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts );
if ( tzParts.size() >= 2 ) if ( tzParts.size() >= 2 )

View File

@ -50,7 +50,15 @@ public:
*/ */
virtual RegionZonePair processReply( const QByteArray& ) = 0; virtual RegionZonePair processReply( const QByteArray& ) = 0;
/** @brief Splits a region/zone string into a pair. */ /** @brief Splits a region/zone string into a pair.
*
* Cleans up the string by removing backslashes (\\)
* since some providers return silly-escaped names. Replaces
* spaces with _ since some providers return human-readable names.
* Splits on the first / in the resulting string, or returns a
* pair of empty QStrings if it can't. (e.g. America/North Dakota/Beulah
* will return "America", "North_Dakota/Beulah").
*/
static RegionZonePair splitTZString( const QString& s ); static RegionZonePair splitTZString( const QString& s );
protected: protected:

View File

@ -53,6 +53,11 @@ zone: "New_York"
# <Response><TimeZone>Europe/Brussels</TimeZone></Response> # <Response><TimeZone>Europe/Brussels</TimeZone></Response>
# ``` # ```
# #
# To accomodate providers of GeoIP timezone data with peculiar timezone
# naming conventions, the following cleanups are performed automatically:
# - backslashes are removed
# - spaces are replaced with _
#
#geoipUrl: "freegeoip.net" #geoipUrl: "freegeoip.net"
# GeoIP style. Leave commented out for the "legacy" interpretation. # GeoIP style. Leave commented out for the "legacy" interpretation.