diff --git a/CHANGELOG.md b/CHANGELOG.md index 933a50b2..d6bc35e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,12 @@ # Changelog -## [0.1.7a1](https://github.com/OpenVoiceOS/skill-ovos-weather/tree/0.1.7a1) (2024-11-15) +## [0.1.8a1](https://github.com/OpenVoiceOS/skill-ovos-weather/tree/0.1.8a1) (2024-11-19) -[Full Changelog](https://github.com/OpenVoiceOS/skill-ovos-weather/compare/0.1.6...0.1.7a1) +[Full Changelog](https://github.com/OpenVoiceOS/skill-ovos-weather/compare/0.1.7...0.1.8a1) **Merged pull requests:** -- fix: skill.json [\#89](https://github.com/OpenVoiceOS/skill-ovos-weather/pull/89) ([JarbasAl](https://github.com/JarbasAl)) +- fix:geolocation lang support + deprecate\_backend\_client [\#95](https://github.com/OpenVoiceOS/skill-ovos-weather/pull/95) ([JarbasAl](https://github.com/JarbasAl)) diff --git a/__init__.py b/__init__.py index 6adc71f8..f8ce3650 100644 --- a/__init__.py +++ b/__init__.py @@ -949,7 +949,7 @@ def _get_intent_data(self, message: Message) -> WeatherIntent: def _get_weather_config(self, message=None): sess = SessionManager.get(message) - cfg = {"lang": sess. lang, + cfg = {"lang": sess.lang, "system_unit": sess.system_unit, "location": sess.location_preferences, "date_format": sess.date_format, diff --git a/requirements.txt b/requirements.txt index d30bfacf..3302a84a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,7 @@ requests>=2.31.0 pytz -ovos-utils>=0.0.28 +ovos-utils>=0.4.0,<1.0.0 ovos-workshop>=2.2.0,<3.0.0 ovos-number-parser>=0.0.1,<1.0.0 ovos-date-parser>=0.0.2,<1.0.0 ovos-utterance-normalizer>=0.0.1,<1.0.0 -ovos-backend-client>=1.0.1,<2.0.0 diff --git a/translations/it-it/dialogs.json b/translations/it-it/dialogs.json index 26731d8e..e2bb8cd8 100644 --- a/translations/it-it/dialogs.json +++ b/translations/it-it/dialogs.json @@ -1,518 +1,489 @@ { - "/dialog/and.dialog": [ - "e" - ], - "/dialog/percentage-number.dialog": [ - "{number} per cento" - ], - "/dialog/daily/daily-precipitation-next-local.dialog": [ - "Le previsioni parlano di {percent} possibilit\u00e0 di {precipitation} {day}", - "C'\u00e8 una possibilit\u00e0 {percent} di {precipitation} {day}" - ], - "/dialog/daily/daily-precipitation-next-none-local.dialog": [ - "Non \u00e8 prevista alcuna precipitazione nei prossimi 7 giorni.", - "Non sono previste precipitazioni per i prossimi 7 giorni." - ], - "/dialog/daily/daily-temperature-high-location.dialog": [ - "Sar\u00e0 fino a {temperature} gradi in {location} {day}", - "{location} avr\u00e0 una massima di {temperature} gradi {day}" - ], - "/dialog/daily/daily-sunrise-location.dialog": [ - "{day} il sole sorger\u00e0 a {time} in {location}", - "in {location} l'alba sar\u00e0 a {time} {day}", - "il sole sorger\u00e0 a {time} {day} in {location}" - ], - "/dialog/daily/daily-precipitation-next-location.dialog": [ - "In {location} c'\u00e8 una probabilit\u00e0 {percent} di {precipitation} {day}", - "Le previsioni parlano di {percent} possibilit\u00e0 di {precipitation} in {location} {day}" - ], - "/dialog/daily/daily-humidity-local.dialog": [ - "L'umidit\u00e0 {day} sar\u00e0 {percent}", - "{day} le previsioni indicano un'umidit\u00e0 di {percent}" - ], - "/dialog/daily/daily-sunset-location.dialog": [ - "{day} il sole tramonter\u00e0 a {time} in {location}", - "il sole tramonter\u00e0 a {time} {day} in {location}", - "in {location} il tramonto sar\u00e0 a {time} {day}" - ], - "/dialog/daily/daily-weather-location.dialog": [ - "La previsione {day} \u00e8 {high_temperature} per un massimo e {low_temperature} per un minimo in {location}", - "{day}, {location} avr\u00e0 un massimo di {high_temperature} e un minimo di {low_temperature}, con {condition}", - "{day} sar\u00e0 {condition}, con un massimo di {high_temperature} e un minimo di {low_temperature} in {location}" - ], - "/dialog/daily/daily-temperature-high-low-location.dialog": [ - "Le previsioni per oggi a {location} prevedono una massima di {high_temperature} e una minima di {low_temperature}." - ], - "/dialog/daily/daily-condition-not-expected-local.dialog": [ - "No, {day} le previsioni indicano {condition}", - "No, {condition} \u00e8 previsto {day}" - ], - "/dialog/daily/daily-condition-expected-location.dialog": [ - "S\u00ec, aspettatevi {condition} in {location} {day}", - "S\u00ec, le previsioni indicano {condition} in {location} {day}" - ], - "/dialog/daily/daily-sunset-local.dialog": [ - "il sole tramonter\u00e0 a {time} {day}", - "il tramonto sar\u00e0 a {time} {day}", - "{day} il sole tramonter\u00e0 a {time}" - ], - "/dialog/daily/daily-temperature-low-local.dialog": [ - "{day} la temperatura sar\u00e0 di {temperature} gradi.", - "{day} sar\u00e0 basso come {temperature}" - ], - "/dialog/daily/daily-temperature-local.dialog": [ - "{day} sar\u00e0 {temperature}", - "{day} la temperatura sar\u00e0 di {temperature} gradi." - ], - "/dialog/daily/daily-condition-not-expected-location.dialog": [ - "No, {day} le previsioni indicano {condition} in {location}", - "No, in {location} {condition} \u00e8 previsto {day}" - ], - "/dialog/daily/daily-condition-expected-local.dialog": [ - "S\u00ec, aspettatevi {condition} {day}", - "S\u00ec, le previsioni indicano {condition} {day}" - ], - "/dialog/daily/daily-temperature-low-location.dialog": [ - "{day}, {location} sar\u00e0 basso come {temperature} gradi", - "{day} sar\u00e0 basso come {temperature} gradi in {location}" - ], - "/dialog/daily/daily-weather-local.dialog": [ - "{day} sar\u00e0 {condition} con un massimo di {high_temperature} e un minimo di {low_temperature}", - "{day} il massimo sar\u00e0 {high_temperature} e il minimo {low_temperature}, con {condition}", - "La previsione {day} \u00e8 {condition} con un massimo di {high_temperature} e un minimo di {low_temperature}.", - "{day} si aspetta {condition}, con un massimo di {high_temperature} e un minimo di {low_temperature}", - "Aspettatevi {condition}, con un massimo di {high_temperature} e un minimo di {low_temperature} {day}" - ], - "/dialog/daily/daily-sunrise-local.dialog": [ - "{day} il sole sorger\u00e0 a {time}", - "il sole sorger\u00e0 a {time} {day}", - "l'alba sar\u00e0 a {time} {day}" - ], - "/dialog/daily/daily-wind-moderate-location.dialog": [ - "Il vento sar\u00e0 moderato in {location} {day}, circa {speed} {speed_unit} dalla {direction}", - "Le previsioni {day} prevedono che {location} avr\u00e0 vento moderato da {direction} di {speed} {speed_unit}", - "Ci si pu\u00f2 aspettare un vento di circa {speed} {speed_unit} in {location} {day}" - ], - "/dialog/daily/daily-temperature-high-local.dialog": [ - "{day} la temperatura sar\u00e0 di {temperature} gradi.", - "{day} sar\u00e0 alto come {temperature}" - ], - "/dialog/daily/daily-wind-moderate-local.dialog": [ - "Le previsioni parlano di un vento moderato da {direction} a {speed} {speed_unit} {day}", - "Il vento sar\u00e0 moderato, circa {speed} {speed_unit} dalla {direction} {day}", - "Si prevede un vento moderato di circa {speed} {speed_unit} {day}" - ], - "/dialog/daily/daily-wind-strong-location.dialog": [ - "Ci sar\u00e0 un forte vento dalla {direction} di {speed} {speed_unit} in {location} {day}", - "Il vento sar\u00e0 forte come {speed} {speed_unit} in {location} {day}" - ], - "/dialog/daily/daily-wind-strong-local.dialog": [ - "Ci sar\u00e0 un forte vento dal {direction} di {speed} {speed_unit} {day}", - "Il vento sar\u00e0 forte come {speed} {speed_unit} {day}" - ], - "/dialog/daily/daily-temperature-location.dialog": [ - "{day} sar\u00e0 {temperature} gradi in {location}", - "{day}, {location} avranno una temperatura di {temperature} gradi" - ], - "/dialog/daily/daily-precipitation-next-none-location.dialog": [ - "In {location} non \u00e8 prevista alcuna previsione", - "Non sono previste precipitazioni per i prossimi sette giorni in {location}" - ], - "/dialog/daily/daily-humidity-location.dialog": [ - "{day} la previsione in {location} prevede un'umidit\u00e0 di {percent}", - "L'umidit\u00e0 in {location} {day} sar\u00e0 {percent}" - ], - "/dialog/daily/daily-wind-light-local.dialog": [ - "Ci sar\u00e0 un vento leggero proveniente da {direction} {day} a {speed} {speed_unit}", - "Non ci sar\u00e0 molto vento {day}" - ], - "/dialog/daily/daily-temperature-high-low-local.dialog": [ - "Le previsioni per oggi indicano una massima di {high_temperature} e una minima di {low_temperature}." - ], - "/dialog/daily/daily-wind-light-location.dialog": [ - "Non ci sar\u00e0 molto vento in {location} {day}", - "Ci sar\u00e0 un vento leggero proveniente da {direction} in {location} {day} in {speed} {speed_unit}" - ], - "/dialog/unit/celsius.dialog": [ - "centigradi" - ], - "/dialog/unit/kilometer per hour.dialog": [ - "chilometro all'ora" - ], - "/dialog/unit/miles per hour.dialog": [ - "miglia all'ora" - ], - "/dialog/unit/meter per second.dialog": [ - "metri al secondo" - ], - "/dialog/unit/fahrenheit.dialog": [ - "fahrenheit" - ], - "/dialog/unit/inch.dialog": [ - "pollice" - ], - "/dialog/unit/millimeter.dialog": [ - "millimetro" - ], - "/dialog/current/current-humidity-local.dialog": [ - "Attualmente l'umidit\u00e0 \u00e8 {percent}" - ], - "/dialog/current/current-sunrise-future-location.dialog": [ - "il sole \u00e8 sorto a {time} oggi a {location}", - "l'alba era a {time} oggi a {location}" - ], - "/dialog/current/current-humidity-location.dialog": [ - "Attualmente, l'umidit\u00e0 in {location} \u00e8 {percent}" - ], - "/dialog/current/current-temperature-location.dialog": [ - "Attualmente \u00e8 {temperature} gradi {temperature_unit} in {location}.", - "In questo momento, ci sono 0 gradi in {location}.", - "Attualmente \u00e8 a {temperature} gradi in {location}." - ], - "/dialog/current/current-sunset-past-location.dialog": [ - "il sole \u00e8 tramontato a {time} oggi a {location}", - "il tramonto era a {time} oggi in {location}", - "in {location} il sole \u00e8 tramontato alle {time} di oggi" - ], - "/dialog/current/current-sunset-future-location.dialog": [ - "il tramonto sar\u00e0 a {time} oggi a {location}", - "il sole tramonter\u00e0 a {time} oggi a {location}", - "in {location} il sole tramonter\u00e0 alle {time} di oggi" - ], - "/dialog/current/current-weather-local.dialog": [ - "Attualmente \u00e8 a 0 e a 1 grado.", - "In questo momento, ci sono {condition} e {temperature} gradi.", - "Attualmente \u00e8 {condition} e {temperature} gradi {temperature_unit}." - ], - "/dialog/current/current-condition-expected-location.dialog": [ - "S\u00ec, sar\u00e0 {condition} a {location}" - ], - "/dialog/current/current-sunset-future-local.dialog": [ - "il sole tramonter\u00e0 a {time} oggi", - "il tramonto sar\u00e0 a {time} oggi" - ], - "/dialog/current/current-condition-expected-local.dialog": [ - "Si, ci sar\u00e0 {condition}" - ], - "/dialog/current/current-wind-strong-location.dialog": [ - "Attualmente il vento proviene da {direction} a {speed} {speed_unit} a {location}, una buona giornata per stare in casa.", - "{location} avr\u00e0 venti forti oggi, {speed} {speed_unit}", - "Il vento \u00e8 molto forte da {direction} a {location} oggi, {speed} {speed_unit}" - ], - "/dialog/current/current-sunrise-future-local.dialog": [ - "il sole sorger\u00e0 a {time} oggi", - "l'alba sar\u00e0 a {time} oggi" - ], - "/dialog/current/current-condition-not-expected-local.dialog": [ - "No, {condition} \u00e8 previsto per oggi", - "No, le previsioni parlano di {condition} oggi" - ], - "/dialog/current/current-sunset-past-local.dialog": [ - "il tramonto era a {time} oggi", - "il sole \u00e8 tramontato a {time} oggi" - ], - "/dialog/current/current-weather-location.dialog": [ - "{location} ha {condition} e attualmente \u00e8 {temperature} gradi.", - "Attualmente \u00e8 {condition} e {temperature} gradi {temperature_unit} in {location}.", - "In questo momento ci sono {condition} e {temperature} gradi in {location}." - ], - "/dialog/current/current-wind-moderate-location.dialog": [ - "Oggi c'\u00e8 un po' di vento in {location}, attualmente {speed} {speed_unit}", - "Attualmente il vento \u00e8 moderato {speed} {speed_unit} da {direction} in {location}" - ], - "/dialog/current/current-wind-moderate-local.dialog": [ - "Oggi c'\u00e8 un po' di vento, attualmente {speed} {speed_unit}", - "Attualmente il vento \u00e8 moderato {speed} {speed_unit} da {direction}" - ], - "/dialog/current/current-condition-not-expected-location.dialog": [ - "No, le previsioni parlano di {condition} oggi in {location}", - "No, in {location} {condition} \u00e8 previsto per oggi" - ], - "/dialog/current/current-sunrise-past-location.dialog": [ - "il sole \u00e8 sorto a {time} oggi a {location}", - "l'alba era a {time} oggi a {location}" - ], - "/dialog/current/current-wind-strong-local.dialog": [ - "Oggi c'\u00e8 molto vento, {speed} {speed_unit}", - "Attualmente, il vento proviene da {direction} a {speed} {speed_unit}, potrebbe essere bene rimanere all'interno oggi", - "Il vento \u00e8 molto forte da {direction} oggi, {speed} {speed_unit}" - ], - "/dialog/current/currrent-clouds-alternative-local.dialog": [ - "Non sembra cos\u00ec, \u00e8 probabile che oggi sia {condition}", - "No, le previsioni parlano di {condition} oggi", - "Non dovrebbe essere nuvoloso, sembra che oggi ci sar\u00e0 {condition}" - ], - "/dialog/current/current-wind-light-local.dialog": [ - "Oggi c'\u00e8 vento leggero da {direction} a {speed} {speed_unit}", - "Il vento \u00e8 leggero a {speed} {speed_unit} dal {direction}" - ], - "/dialog/current/current-wind-light-location.dialog": [ - "Il vento \u00e8 leggero in {location} a {speed} {speed_unit} dal {direction}", - "In {location} oggi c'\u00e8 vento leggero da {direction} a {speed} {speed_unit}" - ], - "/dialog/current/current-sunrise-past-local.dialog": [ - "l'alba era a {time} oggi", - "il sole \u00e8 sorto a {time} oggi" - ], - "/dialog/current/current-temperature-local.dialog": [ - "Attualmente \u00e8 a {temperature} gradi {temperature_unit}.", - "Attualmente \u00e8 a {temperature} gradi.", - "In questo momento ci sono {temperature} gradi." - ], - "/dialog/weekly/weekly-condition.dialog": [ - "Su {days} aspettatevi {condition}", - "Le previsioni indicano {condition} su {days}" - ], - "/dialog/weekly/weekly-temperature.dialog": [ - "Le minime saranno comprese tra {low_min} e {low_max}, le massime tra {high_min} e {high_max}." - ], - "/dialog/date-time/afternoon.dialog": [ - "pomeriggio" - ], - "/dialog/date-time/morning.dialog": [ - "mattina" - ], - "/dialog/date-time/evening.dialog": [ - "sera" - ], - "/dialog/date-time/early morning.dialog": [ - "mattina presto" - ], - "/dialog/date-time/overnight.dialog": [ - "notte" - ], - "/dialog/condition/drizzle-dense-intensity.dialog": [ - "Pioggerella, intensit\u00e0 densa" - ], - "/dialog/condition/drizzle-moderate-intensity.dialog": [ - "Pioviggine, intensit\u00e0 moderata" - ], - "/dialog/condition/thunderstorm.dialog": [ - "temporale" - ], - "/dialog/condition/moderate-rain.dialog": [ - "Pioggia moderata" - ], - "/dialog/condition/heavy-rain.dialog": [ - "Pioggia battente" - ], - "/dialog/condition/haze.dialog": [ - "Nebbia" - ], - "/dialog/condition/rain.dialog": [ - "pioggia" - ], - "/dialog/condition/moderate-rain-showers.dialog": [ - "Pioggia moderata" - ], - "/dialog/condition/slight-rain.dialog": [ - "Pioggia leggera" - ], - "/dialog/condition/humidity.dialog": [ - "umidit\u00e0" - ], - "/dialog/condition/mist.dialog": [ - "nebbia" - ], - "/dialog/condition/slight-snow-showers.dialog": [ - "Leggeri rovesci di neve" - ], - "/dialog/condition/freezing-drizzle-dense-intensity.dialog": [ - "Pioggia gelata, intensit\u00e0 densa" - ], - "/dialog/condition/drizzle.dialog": [ - "pioggerella" - ], - "/dialog/condition/heavy-snow-fall.dialog": [ - "Forte caduta di neve" - ], - "/dialog/condition/freezing-rain-light-intensity.dialog": [ - "Pioggia gelata, intensit\u00e0 della luce" - ], - "/dialog/condition/snow-grains.dialog": [ - "Granelli di neve" - ], - "/dialog/condition/dust.dialog": [ - "polvere" - ], - "/dialog/condition/squall.dialog": [ - "burrasca" - ], - "/dialog/condition/thunderstorm-with-slight-hail.dialog": [ - "Temporale con leggera grandine" - ], - "/dialog/condition/freezing-drizzle-light-intensity.dialog": [ - "Pioggia gelata, intensit\u00e0 della luce" - ], - "/dialog/condition/slight-rain-showers.dialog": [ - "Leggeri rovesci di pioggia" - ], - "/dialog/condition/heavy-snow-showers.dialog": [ - "Forti rovesci di neve" - ], - "/dialog/condition/clear.dialog": [ - "cielo sereno" - ], - "/dialog/condition/thunderstorm-with-heavy-hail.dialog": [ - "Temporale con forte grandine" - ], - "/dialog/condition/partly-cloudy.dialog": [ - "parzialmente nuvoloso" - ], - "/dialog/condition/drizzle-light-intensity.dialog": [ - "Pioggerella, intensit\u00e0 della luce" - ], - "/dialog/condition/violent-rain-showers.dialog": [ - "Pioggia violenta" - ], - "/dialog/condition/fog.dialog": [ - "nebbia" - ], - "/dialog/condition/smoke.dialog": [ - "fumo" - ], - "/dialog/condition/slight-snow-fall.dialog": [ - "Leggera caduta di neve" - ], - "/dialog/condition/mainly-clear.dialog": [ - "principalmente chiaro" - ], - "/dialog/condition/depositing-rime-fog.dialog": [ - "deposito di nebbia di rime" - ], - "/dialog/condition/snow.dialog": [ - "neve" - ], - "/dialog/condition/clouds.dialog": [ - "nuvole" - ], - "/dialog/condition/tornado.dialog": [ - "tornado" - ], - "/dialog/condition/freezing-rain-dense-intensity.dialog": [ - "Pioggia gelata, intensit\u00e0 densa" - ], - "/dialog/condition/moderate-snow-fall.dialog": [ - "Moderata Caduta di neve" - ], - "/dialog/condition/overcast.dialog": [ - "nuvoloso" - ], - "/dialog/condition/ash.dialog": [ - "cenere" - ], - "/dialog/condition/clear-sky.dialog": [ - "cielo sereno" - ], - "/dialog/error/location-not-found.dialog": [ - "Non riesco a trovare una citt\u00e0 di nome {location}. Si prega di riprovare", - "La citt\u00e0 {location} non \u00e8 presente nella mia memoria. Si prega di riprovare" - ], - "/dialog/error/forty-eight-hours-available.dialog": [ - "Spiacente, ho solo 48 ore di dati di previsione oraria." - ], - "/dialog/error/no-forecast.dialog": [ - "Mi spiace, non conosco le previsioni {day}", - "Non ho una previsione {day}" - ], - "/dialog/error/cant-get-forecast.dialog": [ - "Mi scuso. Non posso ricevere le previsioni del tempo in questo momento.", - "Mi dispiace. Non posso accedere ai bollettini meteo in questo momento.", - "Mi scuso. Al momento non riesco a ricevere i bollettini meteo.", - "Mi dispiace. Al momento non posso accedere alle previsioni del tempo.", - "Le previsioni meteo non sono attualmente disponibili.", - "Mi scuso. Al momento non riesco a ricevere i bollettini meteorologici.", - "Non riesco a ricevere le previsioni del tempo in questo momento.", - "Non posso accedere alle previsioni del tempo in questo momento.", - "Mi dispiace. Al momento non posso accedere ai bollettini meteorologici.", - "Non posso ricevere le previsioni del tempo in questo momento.", - "Mi scuso. Non posso accedere ai bollettini meteo in questo momento.", - "Al momento non riesco a ricevere i bollettini meteorologici.", - "Mi scuso. Al momento non posso accedere ai bollettini meteo.", - "I bollettini meteo non sono attualmente disponibili.", - "Non posso accedere ai bollettini meteo in questo momento.", - "Al momento non posso accedere ai bollettini meteorologici.", - "Al momento non posso ricevere le previsioni del tempo.", - "Non riesco a ricevere i bollettini meteo in questo momento.", - "Al momento non posso accedere ai bollettini meteo.", - "Mi scuso. Al momento non posso accedere ai bollettini meteorologici.", - "Mi scuso. Al momento non posso accedere alle previsioni del tempo.", - "Al momento non posso accedere alle previsioni del tempo.", - "Mi dispiace. Al momento non posso ricevere le previsioni del tempo.", - "Mi scuso. Non riesco a ricevere i bollettini meteo in questo momento.", - "Mi dispiace. Non posso ricevere le previsioni del tempo in questo momento.", - "Mi dispiace. Al momento non posso ricevere i bollettini meteorologici.", - "Mi dispiace. Al momento non riesco a ricevere le previsioni del tempo.", - "Mi scuso. Al momento non posso ricevere le previsioni del tempo.", - "Mi scuso. Non posso accedere alle previsioni del tempo in questo momento.", - "Mi scuso. Non riesco a consultare le previsioni del tempo in questo momento.", - "Mi dispiace. Non posso ricevere i bollettini meteo in questo momento.", - "Al momento non riesco a ricevere i bollettini meteo.", - "Mi dispiace. Non posso accedere alle previsioni del tempo in questo momento.", - "Mi dispiace. Al momento non posso accedere ai bollettini meteo.", - "Non riesco ad accedere ai bollettini meteo in questo momento.", - "Mi scuso. Al momento non riesco a ricevere le previsioni del tempo." - ], - "/dialog/error/seven-days-available.dialog": [ - "Ho a disposizione sette giorni di previsioni meteo.", - "Posso dirvi le previsioni per i prossimi sette giorni." - ], - "/dialog/direction/northeast.dialog": [ - "nordest" - ], - "/dialog/direction/east.dialog": [ - "est" - ], - "/dialog/direction/southeast.dialog": [ - "sudest" - ], - "/dialog/direction/southwest.dialog": [ - "sudovest" - ], - "/dialog/direction/south.dialog": [ - "sud" - ], - "/dialog/direction/northwest.dialog": [ - "nordovest" - ], - "/dialog/direction/north.dialog": [ - "nord" - ], - "/dialog/direction/west.dialog": [ - "ovest" - ], - "/dialog/hourly/hourly-weather-local.dialog": [ - "Pi\u00f9 tardi sar\u00e0 {condition} e {temperature} gradi", - "Sar\u00e0 {condition}, con temperature prossime a {temperature}", - "Intorno a {temperature} gradi con {condition}", - "Pi\u00f9 tardi sar\u00e0 {condition} e intorno a {temperature} gradi" - ], - "/dialog/hourly/hourly-precipitation-next-local.dialog": [ - "Le previsioni parlano di {percent} possibilit\u00e0 di {precipitation} a {time}", - "C'\u00e8 una possibilit\u00e0 {percent} di {precipitation} a {time}" - ], - "/dialog/hourly/hourly-condition-expected-local.dialog": [ - "S\u00ec, la previsione {time} per la previsione {condition}" - ], - "/dialog/hourly/hourly-weather-location.dialog": [ - "Il tempo di {location} nelle prossime ore sar\u00e0 di {condition} e {temperature} gradi", - "{location} sar\u00e0 intorno a {temperature} con {condition}", - "{location} sar\u00e0 di circa {temperature} gradi con {condition}", - "Pi\u00f9 tardi sar\u00e0 {condition} in {location}, con temperature intorno a {temperature}." - ], - "/dialog/hourly/hourly-temperature-location.dialog": [ - "In {location} sar\u00e0 di circa {temperature} gradi nel {time}", - "Nella {time}, sar\u00e0 {temperature} gradi nella {location}" - ], - "/dialog/hourly/hourly-precipitation-next-location.dialog": [ - "Le previsioni parlano di una probabilit\u00e0 {percent} di {precipitation} in {location} a {time}", - "In {location} c'\u00e8 una probabilit\u00e0 {percent} di {precipitation} a {time}" - ], - "/dialog/hourly/hourly-temperature-local.dialog": [ - "Sar\u00e0 di circa {temperature} gradi nel {time}", - "Nel {time}, sar\u00e0 {temperature} gradi" - ], - "/dialog/hourly/hourly-condition-expected-location.dialog": [ - "S\u00ec, sar\u00e0 {condition} questo {time}" - ] -} \ No newline at end of file + "/dialog/and.dialog": [ + "e" + ], + "/dialog/percentage-number.dialog": [ + "{number} percento" + ], + "/dialog/daily/daily-precipitation-next-local.dialog": [ + "Le previsioni parlano di {percent} possibilità di {precipitation} di {day}", + "C'è una possibilità {percent} di {precipitation} {day}" + ], + "/dialog/daily/daily-precipitation-next-none-local.dialog": [ + "Non è prevista alcuna precipitazione nei prossimi 7 giorni.", + "Non sono previste precipitazioni per i prossimi 7 giorni." + ], + "/dialog/daily/daily-temperature-high-location.dialog": [ + "Sarà fino a {temperature} gradi in {location} {day}", + "{location} avrà una massima di {temperature} gradi {day}" + ], + "/dialog/daily/daily-sunrise-location.dialog": [ + "{day} il sole sorgerà a {time} in {location}", + "in {location} l'alba sarà a {time} {day}", + "il sole sorgerà a {time} {day} in {location}" + ], + "/dialog/daily/daily-precipitation-next-location.dialog": [ + "In {location} c'è una probabilità {percent} di {precipitation} {day}", + "Le previsioni parlano di {percent} possibilità di {precipitation} in {location} {day}" + ], + "/dialog/daily/daily-humidity-local.dialog": [ + "L'umidità {day} sarà {percent}", + "{day} le previsioni indicano un'umidità di {percent}" + ], + "/dialog/daily/daily-sunset-location.dialog": [ + "{day} il sole tramonterà a {time} in {location}", + "il sole tramonterà a {time} {day} in {location}", + "in {location} il tramonto sarà a {time} {day}" + ], + "/dialog/daily/daily-weather-location.dialog": [ + "La previsione {day} è {high_temperature} per un massimo e {low_temperature} per un minimo in {location}", + "{day}, {location} avrà un massimo di {high_temperature} e un minimo di {low_temperature}, con {condition}", + "{day} sarà {condition}, con un massimo di {high_temperature} e un minimo di {low_temperature} in {location}" + ], + "/dialog/daily/daily-temperature-high-low-location.dialog": [ + "Le previsioni per oggi a {location} prevedono una massima di {high_temperature} e una minima di {low_temperature}." + ], + "/dialog/daily/daily-condition-not-expected-local.dialog": [ + "No, {day} le previsioni indicano {condition}", + "No, {condition} è previsto {day}" + ], + "/dialog/daily/daily-condition-expected-location.dialog": [ + "Sì, aspettatevi {condition} in {location} {day}", + "Sì, le previsioni indicano {condition} in {location} {day}" + ], + "/dialog/daily/daily-sunset-local.dialog": [ + "il sole tramonterà a {time} {day}", + "il tramonto sarà a {time} {day}", + "{day} il sole tramonterà a {time}", + "{day} il sole tramonterà a {time}" + ], + "/dialog/daily/daily-temperature-low-local.dialog": [ + "{day} la temperatura sarà di {temperature} gradi.", + "{day} sarà basso come {temperature}" + ], + "/dialog/daily/daily-temperature-local.dialog": [ + "{day} sarà {temperature}", + "{day} la temperatura sarà di {temperature} gradi." + ], + "/dialog/daily/daily-condition-not-expected-location.dialog": [ + "No, {day} le previsioni indicano {condition} in {location}", + "No, in {location} {condition} è previsto {day}" + ], + "/dialog/daily/daily-condition-expected-local.dialog": [ + "Sì, aspettatevi {condition} {day}", + "Sì, le previsioni indicano {condition} {day}" + ], + "/dialog/daily/daily-temperature-low-location.dialog": [ + "{day}, {location} sarà basso come {temperature} gradi", + "{day} sarà basso come {temperature} gradi in {location}" + ], + "/dialog/daily/daily-weather-local.dialog": [ + "{day} sarà {condition} con un massimo di {high_temperature} e un minimo di {low_temperature}", + "{day} il massimo sarà {high_temperature} e il minimo {low_temperature}, con {condition}", + "La previsione {day} è {condition} con un massimo di {high_temperature} e un minimo di {low_temperature}.", + "{day} si aspetta {condition}, con un massimo di {high_temperature} e un minimo di {low_temperature}", + "Aspettatevi {condition}, con un massimo di {high_temperature} e un minimo di {low_temperature} {day}" + ], + "/dialog/daily/daily-sunrise-local.dialog": [ + "{day} il sole sorgerà a {time}", + "il sole sorgerà a {time} {day}", + "l'alba sarà a {time} {day}" + ], + "/dialog/daily/daily-wind-moderate-location.dialog": [ + "Il vento sarà moderato in {location} {day}, circa {speed} {speed_unit} dalla {direction}", + "Le previsioni {day} prevedono che {location} avrà vento moderato da {direction} di {speed} {speed_unit}", + "Ci si può aspettare un vento di circa {speed} {speed_unit} in {location} {day}" + ], + "/dialog/daily/daily-temperature-high-local.dialog": [ + "{day} la temperatura sarà di {temperature} gradi.", + "{day} sarà alto come {temperature}" + ], + "/dialog/daily/daily-wind-moderate-local.dialog": [ + "Le previsioni parlano di un vento moderato da {direction} a {speed} {speed_unit} {day}", + "Il vento sarà moderato, circa {speed} {speed_unit} dalla {direction} {day}", + "Si prevede un vento moderato di circa {speed} {speed_unit} {day}" + ], + "/dialog/daily/daily-wind-strong-location.dialog": [ + "Ci sarà un forte vento dalla {direction} di {speed} {speed_unit} in {location} {day}", + "Il vento sarà forte come {speed} {speed_unit} in {location} {day}" + ], + "/dialog/daily/daily-wind-strong-local.dialog": [ + "Ci sarà un forte vento dal {direction} di {speed} {speed_unit} {day}", + "Il vento sarà forte come {speed} {speed_unit} {day}" + ], + "/dialog/daily/daily-temperature-location.dialog": [ + "{day} sarà {temperature} gradi in {location}", + "{day}, {location} avranno una temperatura di {temperature} gradi" + ], + "/dialog/daily/daily-precipitation-next-none-location.dialog": [ + "In {location} non è prevista alcuna previsione", + "Non sono previste precipitazioni per i prossimi sette giorni in {location}" + ], + "/dialog/daily/daily-humidity-location.dialog": [ + "{day} la previsione in {location} prevede un'umidità di {percent}", + "L'umidità in {location} {day} sarà {percent}" + ], + "/dialog/daily/daily-wind-light-local.dialog": [ + "Ci sarà un vento leggero proveniente da {direction} {day} a {speed} {speed_unit}", + "Non ci sarà molto vento {day}" + ], + "/dialog/daily/daily-temperature-high-low-local.dialog": [ + "Le previsioni per oggi indicano una massima di {high_temperature} e una minima di {low_temperature}." + ], + "/dialog/daily/daily-wind-light-location.dialog": [ + "Non ci sarà molto vento in {location} {day}", + "Ci sarà un vento leggero proveniente da {direction} in {location} {day} in {speed} {speed_unit}" + ], + "/dialog/unit/celsius.dialog": [ + "centigradi" + ], + "/dialog/unit/kilometer per hour.dialog": [ + "chilometro all'ora" + ], + "/dialog/unit/miles per hour.dialog": [ + "miglia all'ora" + ], + "/dialog/unit/meter per second.dialog": [ + "metri al secondo" + ], + "/dialog/unit/fahrenheit.dialog": [ + "fahrenheit" + ], + "/dialog/unit/inch.dialog": [ + "pollice" + ], + "/dialog/unit/millimeter.dialog": [ + "millimetro" + ], + "/dialog/current/current-humidity-local.dialog": [ + "Attualmente l'umidità è {percent}" + ], + "/dialog/current/current-sunrise-future-location.dialog": [ + "il sole è sorto a {time} oggi a {location}", + "l'alba era a {time} oggi a {location}" + ], + "/dialog/current/current-humidity-location.dialog": [ + "Attualmente, l'umidità in {location} è {percent}" + ], + "/dialog/current/current-temperature-location.dialog": [ + "Attualmente è {temperature} gradi {temperature_unit} in {location}.", + "In questo momento, ci sono 0 gradi in {location}.", + "Attualmente è a {temperature} gradi in {location}." + ], + "/dialog/current/current-sunset-past-location.dialog": [ + "il sole è tramontato a {time} oggi a {location}", + "il tramonto era a {time} oggi in {location}", + "in {location} il sole è tramontato alle {time} di oggi" + ], + "/dialog/current/current-sunset-future-location.dialog": [ + "il tramonto sarà a {time} oggi a {location}", + "il sole tramonterà a {time} oggi a {location}", + "in {location} il sole tramonterà alle {time} di oggi" + ], + "/dialog/current/current-weather-local.dialog": [ + "Attualmente è a 0 e a 1 grado.", + "In questo momento, ci sono {condition} e {temperature} gradi.", + "Attualmente è {condition} e {temperature} gradi {temperature_unit}." + ], + "/dialog/current/current-condition-expected-location.dialog": [ + "Sì, sarà {condition} a {location}", + "Sì, sarà {condition} a {location}" + ], + "/dialog/current/current-sunset-future-local.dialog": [ + "il sole tramonterà a {time} oggi", + "il tramonto sarà a {time} oggi", + "oggi il tramonto sarà alle {time}" + ], + "/dialog/current/current-condition-expected-local.dialog": [ + "Si, ci sarà {condition}", + "Si, ci sarà {condition}" + ], + "/dialog/current/current-wind-strong-location.dialog": [ + "Attualmente il vento proviene da {direction} a {speed} {speed_unit} a {location}, una buona giornata per stare in casa.", + "{location} avrà venti forti oggi, {speed} {speed_unit}", + "Il vento è molto forte da {direction} a {location} oggi, {speed} {speed_unit}" + ], + "/dialog/current/current-sunrise-future-local.dialog": [ + "il sole sorgerà a {time} oggi", + "l'alba sarà a {time} oggi" + ], + "/dialog/current/current-condition-not-expected-local.dialog": [ + "No, {condition} è previsto per oggi", + "No, le previsioni parlano di {condition} oggi" + ], + "/dialog/current/current-sunset-past-local.dialog": [ + "il tramonto era a {time} oggi", + "il sole è tramontato a {time} oggi", + "il sole è tramontato a {time} oggi" + ], + "/dialog/current/current-weather-location.dialog": [ + "{location} ha {condition} e attualmente è {temperature} gradi.", + "Attualmente è {condition} e {temperature} gradi {temperature_unit} in {location}.", + "In questo momento ci sono {condition} e {temperature} gradi in {location}." + ], + "/dialog/current/current-wind-moderate-location.dialog": [ + "Oggi c'è un po' di vento in {location}, attualmente {speed} {speed_unit}", + "Attualmente il vento è moderato {speed} {speed_unit} da {direction} in {location}" + ], + "/dialog/current/current-wind-moderate-local.dialog": [ + "Oggi c'è un po' di vento, attualmente {speed} {speed_unit}", + "Attualmente il vento è moderato {speed} {speed_unit} da {direction}" + ], + "/dialog/current/current-condition-not-expected-location.dialog": [ + "No, le previsioni parlano di {condition} oggi in {location}", + "No, in {location} {condition} è previsto per oggi" + ], + "/dialog/current/current-sunrise-past-location.dialog": [ + "il sole è sorto a {time} oggi a {location}", + "l'alba era a {time} oggi a {location}" + ], + "/dialog/current/current-wind-strong-local.dialog": [ + "Oggi c'è molto vento, {speed} {speed_unit}", + "Attualmente, il vento proviene da {direction} a {speed} {speed_unit}, potrebbe essere bene rimanere all'interno oggi", + "Il vento è molto forte da {direction} oggi, {speed} {speed_unit}" + ], + "/dialog/current/currrent-clouds-alternative-local.dialog": [ + "Non sembra così, è probabile che oggi sia {condition}", + "No, le previsioni parlano di {condition} oggi", + "Non dovrebbe essere nuvoloso, sembra che oggi ci sarà {condition}" + ], + "/dialog/current/current-wind-light-local.dialog": [ + "Oggi c'è vento leggero da {direction} a {speed} {speed_unit}", + "Il vento è leggero a {speed} {speed_unit} dal {direction}" + ], + "/dialog/current/current-wind-light-location.dialog": [ + "Il vento è leggero in {location} a {speed} {speed_unit} dal {direction}", + "In {location} oggi c'è vento leggero da {direction} a {speed} {speed_unit}" + ], + "/dialog/current/current-sunrise-past-local.dialog": [ + "l'alba era a {time} oggi", + "il sole è sorto a {time} oggi" + ], + "/dialog/current/current-temperature-local.dialog": [ + "Attualmente è a {temperature} gradi {temperature_unit}.", + "Attualmente è a {temperature} gradi.", + "In questo momento ci sono {temperature} gradi." + ], + "/dialog/weekly/weekly-condition.dialog": [ + "Su {days} aspettatevi {condition}", + "Le previsioni indicano {condition} su {days}" + ], + "/dialog/weekly/weekly-temperature.dialog": [ + "Le minime saranno comprese tra {low_min} e {low_max}, le massime tra {high_min} e {high_max}." + ], + "/dialog/date-time/afternoon.dialog": [ + "pomeriggio" + ], + "/dialog/date-time/morning.dialog": [ + "mattina" + ], + "/dialog/date-time/evening.dialog": [ + "sera" + ], + "/dialog/date-time/early morning.dialog": [ + "mattina presto" + ], + "/dialog/date-time/overnight.dialog": [ + "notte" + ], + "/dialog/condition/drizzle-dense-intensity.dialog": [ + "Pioggerella, intensità densa" + ], + "/dialog/condition/drizzle-moderate-intensity.dialog": [ + "Pioviggine, intensità moderata" + ], + "/dialog/condition/thunderstorm.dialog": [ + "temporale" + ], + "/dialog/condition/moderate-rain.dialog": [ + "Pioggia moderata" + ], + "/dialog/condition/heavy-rain.dialog": [ + "Pioggia battente" + ], + "/dialog/condition/haze.dialog": [ + "Nebbia" + ], + "/dialog/condition/rain.dialog": [ + "pioggia" + ], + "/dialog/condition/moderate-rain-showers.dialog": [ + "Pioggia moderata" + ], + "/dialog/condition/slight-rain.dialog": [ + "Pioggia leggera" + ], + "/dialog/condition/humidity.dialog": [ + "umidità" + ], + "/dialog/condition/mist.dialog": [ + "nebbia" + ], + "/dialog/condition/slight-snow-showers.dialog": [ + "Leggeri rovesci di neve" + ], + "/dialog/condition/freezing-drizzle-dense-intensity.dialog": [ + "Pioggia gelata, intensità densa" + ], + "/dialog/condition/drizzle.dialog": [ + "pioggerella" + ], + "/dialog/condition/heavy-snow-fall.dialog": [ + "Forte caduta di neve" + ], + "/dialog/condition/freezing-rain-light-intensity.dialog": [ + "Pioggia gelata, intensità della luce" + ], + "/dialog/condition/snow-grains.dialog": [ + "Granelli di neve" + ], + "/dialog/condition/dust.dialog": [ + "polvere" + ], + "/dialog/condition/squall.dialog": [ + "burrasca" + ], + "/dialog/condition/thunderstorm-with-slight-hail.dialog": [ + "Temporale con leggera grandine" + ], + "/dialog/condition/freezing-drizzle-light-intensity.dialog": [ + "Pioggia gelata, intensità della luce" + ], + "/dialog/condition/slight-rain-showers.dialog": [ + "Leggeri rovesci di pioggia" + ], + "/dialog/condition/heavy-snow-showers.dialog": [ + "Forti rovesci di neve" + ], + "/dialog/condition/clear.dialog": [ + "cielo sereno" + ], + "/dialog/condition/thunderstorm-with-heavy-hail.dialog": [ + "Temporale con forte grandine" + ], + "/dialog/condition/partly-cloudy.dialog": [ + "parzialmente nuvoloso" + ], + "/dialog/condition/drizzle-light-intensity.dialog": [ + "Pioggerella, intensità della luce" + ], + "/dialog/condition/violent-rain-showers.dialog": [ + "Pioggia violenta" + ], + "/dialog/condition/fog.dialog": [ + "nebbia" + ], + "/dialog/condition/smoke.dialog": [ + "fumo" + ], + "/dialog/condition/slight-snow-fall.dialog": [ + "Leggera caduta di neve" + ], + "/dialog/condition/mainly-clear.dialog": [ + "principalmente chiaro" + ], + "/dialog/condition/depositing-rime-fog.dialog": [ + "deposito di nebbia di rime" + ], + "/dialog/condition/snow.dialog": [ + "neve" + ], + "/dialog/condition/clouds.dialog": [ + "nuvole" + ], + "/dialog/condition/tornado.dialog": [ + "tornado" + ], + "/dialog/condition/freezing-rain-dense-intensity.dialog": [ + "Pioggia gelata, intensità densa" + ], + "/dialog/condition/moderate-snow-fall.dialog": [ + "Moderata Caduta di neve" + ], + "/dialog/condition/overcast.dialog": [ + "nuvoloso" + ], + "/dialog/condition/ash.dialog": [ + "cenere" + ], + "/dialog/condition/clear-sky.dialog": [ + "cielo sereno" + ], + "/dialog/error/location-not-found.dialog": [ + "Non riesco a trovare una città di nome {location}. Si prega di riprovare", + "La città {location} non è presente nella mia memoria. Si prega di riprovare" + ], + "/dialog/error/forty-eight-hours-available.dialog": [ + "Spiacente, ho solo 48 ore di dati di previsione oraria." + ], + "/dialog/error/no-forecast.dialog": [ + "Mi spiace, non conosco le previsioni {day}", + "Non ho una previsione {day}" + ], + "/dialog/error/cant-get-forecast.dialog": [ + "Mi scuso. Non posso ricevere le previsioni del tempo in questo momento.", + "Mi dispiace. Non posso accedere ai bollettini meteo in questo momento." + ], + "/dialog/error/seven-days-available.dialog": [ + "Ho a disposizione sette giorni di previsioni meteo.", + "Posso dirvi le previsioni per i prossimi sette giorni." + ], + "/dialog/direction/northeast.dialog": [ + "nordest" + ], + "/dialog/direction/east.dialog": [ + "est" + ], + "/dialog/direction/southeast.dialog": [ + "sudest" + ], + "/dialog/direction/southwest.dialog": [ + "sudovest" + ], + "/dialog/direction/south.dialog": [ + "sud" + ], + "/dialog/direction/northwest.dialog": [ + "nordovest" + ], + "/dialog/direction/north.dialog": [ + "nord" + ], + "/dialog/direction/west.dialog": [ + "ovest" + ], + "/dialog/hourly/hourly-weather-local.dialog": [ + "Più tardi sarà {condition} e {temperature} gradi", + "Sarà {condition}, con temperature prossime a {temperature}", + "Intorno a {temperature} gradi con {condition}", + "Più tardi sarà {condition} e intorno a {temperature} gradi" + ], + "/dialog/hourly/hourly-precipitation-next-local.dialog": [ + "Le previsioni parlano di {percent} possibilità di {precipitation} a {time}", + "C'è una possibilità {percent} di {precipitation} a {time}" + ], + "/dialog/hourly/hourly-condition-expected-local.dialog": [ + "Sì, la previsione {time} per la previsione {condition}" + ], + "/dialog/hourly/hourly-weather-location.dialog": [ + "Il tempo di {location} nelle prossime ore sarà di {condition} e {temperature} gradi", + "{location} sarà intorno a {temperature} con {condition}", + "{location} sarà di circa {temperature} gradi con {condition}", + "Più tardi sarà {condition} in {location}, con temperature intorno a {temperature}." + ], + "/dialog/hourly/hourly-temperature-location.dialog": [ + "In {location} sarà di circa {temperature} gradi nel {time}", + "Nella {time}, sarà {temperature} gradi nella {location}" + ], + "/dialog/hourly/hourly-precipitation-next-location.dialog": [ + "Le previsioni parlano di una probabilità {percent} di {precipitation} in {location} a {time}", + "In {location} c'è una probabilità {percent} di {precipitation} a {time}" + ], + "/dialog/hourly/hourly-temperature-local.dialog": [ + "Sarà di circa {temperature} gradi nel {time}", + "Nel {time}, sarà {temperature} gradi" + ], + "/dialog/hourly/hourly-condition-expected-location.dialog": [ + "Sì, sarà {condition} questo {time}" + ] +} diff --git a/version.py b/version.py index 070ca80a..4de9d9c2 100644 --- a/version.py +++ b/version.py @@ -1,6 +1,6 @@ # START_VERSION_BLOCK VERSION_MAJOR = 0 VERSION_MINOR = 1 -VERSION_BUILD = 7 -VERSION_ALPHA = 0 +VERSION_BUILD = 8 +VERSION_ALPHA = 2 # END_VERSION_BLOCK diff --git a/weather_helpers/intent.py b/weather_helpers/intent.py index a0b9497a..c0051548 100644 --- a/weather_helpers/intent.py +++ b/weather_helpers/intent.py @@ -91,7 +91,7 @@ def geolocation(self): if self.location is None: self._geolocation = dict() else: - self._geolocation = get_geolocation(self.location) + self._geolocation = get_geolocation(self.location, lang=self.config.lang) return self._geolocation @property diff --git a/weather_helpers/util.py b/weather_helpers/util.py index 3cdb4762..fa7761b5 100644 --- a/weather_helpers/util.py +++ b/weather_helpers/util.py @@ -13,13 +13,12 @@ # limitations under the License. """Utility functions for the weather skill.""" from datetime import datetime, timedelta, tzinfo -from typing import List from itertools import islice +from typing import List import pytz - -from ovos_date_parser import nice_date, extract_datetime -from ovos_backend_client.api import GeolocationApi +from ovos_date_parser import nice_date, extract_datetime +from ovos_utils.geolocation import get_geolocation as _get_geo from ovos_utils.time import now_local, to_local @@ -83,11 +82,12 @@ def get_tz_info(timezone: str) -> tzinfo: return pytz.timezone(timezone) -def get_geolocation(location: str): +def get_geolocation(location: str, lang: str = "en"): """Retrieve the geolocation information about the requested location. Args: location: a location specified in the utterance + lang: lang to return country/region in Returns: A deserialized JSON object containing geolocation information for the @@ -96,8 +96,7 @@ def get_geolocation(location: str): Raises: LocationNotFound error if the API returns no results. """ - geolocation_api = GeolocationApi() - geolocation = geolocation_api.get_geolocation(location) + geolocation = _get_geo(location, lang=lang) if geolocation is None: raise LocationNotFoundError(f"Location {location} is unknown") @@ -106,7 +105,7 @@ def get_geolocation(location: str): return { "city": geolocation["city"]["name"], "region": geolocation["city"]["state"]["name"], - "country": geolocation["city"]["state"]["country"]["name"], + "country": geolocation["city"]["state"]["country"]["name"], "latitude": geolocation["coordinate"]["latitude"], "longitude": geolocation["coordinate"]["longitude"], "timezone": geolocation["timezone"]["code"]