From 248744fee9009297bdbdcc9652915cf6e685c493 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Wed, 12 Jul 2023 18:48:19 +0200 Subject: [PATCH] Fix OWM Czech language support --- .../openweathermap/OpenWeatherMapProvider.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/data/weather/src/main/java/de/mm20/launcher2/weather/openweathermap/OpenWeatherMapProvider.kt b/data/weather/src/main/java/de/mm20/launcher2/weather/openweathermap/OpenWeatherMapProvider.kt index af88268c..8f7e136a 100644 --- a/data/weather/src/main/java/de/mm20/launcher2/weather/openweathermap/OpenWeatherMapProvider.kt +++ b/data/weather/src/main/java/de/mm20/launcher2/weather/openweathermap/OpenWeatherMapProvider.kt @@ -2,6 +2,7 @@ package de.mm20.launcher2.weather.openweathermap import android.content.Context import android.content.SharedPreferences +import android.util.Log import androidx.core.content.edit import de.mm20.launcher2.crashreporter.CrashReporter import de.mm20.launcher2.weather.* @@ -29,7 +30,7 @@ class OpenWeatherMapProvider(override val context: Context) : } override suspend fun lookupLocation(query: String): List { - val lang = Locale.getDefault().language + val lang = getLanguageCode() val response = try { openWeatherMapService.currentWeather( @@ -69,7 +70,7 @@ class OpenWeatherMapProvider(override val context: Context) : lon: Double? = null, location: OpenWeatherMapLocation? = null ): WeatherUpdateResult? { - val lang = Locale.getDefault().language + val lang = getLanguageCode() val currentWeather = try { openWeatherMapService.currentWeather( @@ -164,6 +165,14 @@ class OpenWeatherMapProvider(override val context: Context) : ) } + private fun getLanguageCode(): String { + val lang = Locale.getDefault().language + // OWM incorrectly expects Czech to be "cz" instead of "cs" + // see https://openweathermap.org/current#multi + if (lang == "cs") return "cz" + return lang + } + private fun getApiKey(): String? { val resId = getApiKeyResId() if (resId != 0) return context.getString(resId)