diff --git a/.gitignore b/.gitignore
index 8f9d4ac3..8ae56fbf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
*.qmlc
settings.json
.vscode
+.idea/**
diff --git a/README.md b/README.md
index 7a4ecd5c..3173c302 100644
--- a/README.md
+++ b/README.md
@@ -1,26 +1,43 @@
# Weather
Weather conditions and forecasts
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+
## About
-Get weather conditions, forecasts, expected precipitation and more! By default it will tell
-you about your default location, or you can ask for other cities around the world.
+Get weather conditions, forecasts, expected precipitation and more! By default, it will tell
+you about your device's configured location. You can also ask for other cities around the world.
Current conditions and weather forecasts come from [Open Weather Map](https://openweathermap.org).
-For **enclosures** with screen support, conditions are briefly shown using visemes.
-
-The temperature is shown in Celsius or Fahrenheit depending on the preferences set in your [https://home.mycroft.ai](https://home.mycroft.ai) account.
+The temperature is shown in Celsius or Fahrenheit depending on the preferences
+set in your [https://home.mycroft.ai](https://home.mycroft.ai) account. You can ask
+specifically for a unit that differs from your configuration.
## Examples
+### Current Conditions
* "What is the weather?"
+* "What is the weather in Houston?"
+
+### Daily Forecasts
* "What is the forecast tomorrow?"
+* "What is the forecast in London tomorrow?"
* "What is the weather going to be like Tuesday?"
-* "What is the weather in Houston?"
+* "What is the weather for the next three days?"
+* "What is the weather this weekend?"
+
+### Temperatures
+* "What's the temperature?"
+* "What's the temperature in Paris tomorrow in Celsius?"
+* "What's the high temperature tomorrow"
+* "Will it be cold on Tuesday"
+
+### Specific Weather Conditions
* "When will it rain next?"
* "How windy is it?"
* "What's the humidity?"
* "Is it going to snow?"
-* "What's the temperature?"
+* "Is it going to snow in Baltimore?"
+* "When is the sunset?"
## Credits
Mycroft AI (@MycroftAI)
diff --git a/__init__.py b/__init__.py
index 23dc5b69..1c112cbf 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,4 +1,4 @@
-# Copyright 2017, Mycroft AI Inc.
+# Copyright 2021, Mycroft AI Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -11,1810 +11,1146 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+"""Mycroft skill for communicating weather information
+
+This skill uses the Open Weather Map One Call API to retrieve weather data
+from around the globe (https://openweathermap.org/api/one-call-api). It
+proxies its calls to the API through Mycroft's officially supported API,
+Selene. The Selene API is also used to get geographical information about the
+city name provided in the request.
+"""
+from datetime import datetime
+from time import sleep
+from typing import List, Tuple
-import json
-import pytz
-import time
-from copy import deepcopy
-from datetime import datetime, timedelta
-from multi_key_dict import multi_key_dict
-from pyowm.webapi25.forecaster import Forecaster
-from pyowm.webapi25.forecastparser import ForecastParser
-from pyowm.webapi25.observationparser import ObservationParser
-from requests import HTTPError, Response
-
-import mycroft.audio
from adapt.intent import IntentBuilder
-from mycroft.api import Api
+from requests import HTTPError
+
from mycroft import MycroftSkill, intent_handler
from mycroft.messagebus.message import Message
-from mycroft.util.log import LOG
-from mycroft.util.format import (nice_date, nice_time, nice_number,
- pronounce_number, join_list)
-from mycroft.util.parse import extract_datetime, extract_number
-from mycroft.util.time import now_local, to_utc, to_local
-
-
-MINUTES = 60 # Minutes to seconds multiplier
+from mycroft.util.parse import extract_number
+from .skill import (
+ CurrentDialog,
+ DAILY,
+ DailyDialog,
+ DailyWeather,
+ HOURLY,
+ HourlyDialog,
+ get_dialog_for_timeframe,
+ LocationNotFoundError,
+ OpenWeatherMapApi,
+ WeatherConfig,
+ WeatherIntent,
+ WeatherReport,
+ WeeklyDialog,
+)
+
+# TODO: VK Failures
+# Locations: Washington, D.C.
+#
+# TODO: Intent failures
+# Later weather: only the word "later" in the vocab file works all others
+# invoke datetime skill
+MARK_II = "mycroft_mark_2"
+TWELVE_HOUR = "half"
-class LocationNotFoundError(ValueError):
- pass
+class WeatherSkill(MycroftSkill):
+ """Main skill code for the weather skill."""
-APIErrors = (LocationNotFoundError, HTTPError)
+ def __init__(self):
+ super().__init__("WeatherSkill")
+ self.weather_api = OpenWeatherMapApi()
+ self.weather_api.set_language_parameter(self.lang)
+ self.platform = self.config_core["enclosure"].get("platform", "unknown")
+ self.weather_config = None
+ def initialize(self):
+ """Do these things after the skill is loaded."""
+ self.weather_config = WeatherConfig(self.config_core, self.settings)
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .one_of("weather", "forecast")
+ .optionally("location")
+ .optionally("today")
+ )
+ def handle_current_weather(self, message: Message):
+ """Handle current weather requests such as: what is the weather like?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_current_weather(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("query")
+ .require("like")
+ .require("outside")
+ .optionally("location")
+ )
+ def handle_like_outside(self, message: Message):
+ """Handle current weather requests such as: what's it like outside?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_current_weather(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .one_of("weather", "forecast")
+ .require("number-days")
+ .optionally("location")
+ )
+ def handle_number_days_forecast(self, message: Message):
+ """Handle multiple day forecast without specified location.
+
+ Examples:
+ "What is the 3 day forecast?"
+ "What is the weather forecast?"
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ if self.voc_match(message.data["utterance"], "couple"):
+ days = 2
+ elif self.voc_match(message.data["utterance"], "few"):
+ days = 3
+ else:
+ days = int(extract_number(message.data["utterance"]))
+ self._report_multi_day_forecast(message, days)
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .one_of("weather", "forecast")
+ .require("relative-day")
+ .optionally("location")
+ )
+ def handle_one_day_forecast(self, message):
+ """Handle forecast for a single day.
+
+ Examples:
+ "What is the weather forecast tomorrow?"
+ "What is the weather forecast on Tuesday in Baltimore?"
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_one_day_forecast(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("query")
+ .require("weather")
+ .require("later")
+ .optionally("location")
+ )
+ def handle_weather_later(self, message: Message):
+ """Handle future weather requests such as: what's the weather later?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_one_hour_weather(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .one_of("weather", "forecast")
+ .require("relative-time")
+ .optionally("relative-day")
+ .optionally("location")
+ )
+ def handle_weather_at_time(self, message: Message):
+ """Handle future weather requests such as: what's the weather tonight?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_one_hour_weather(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("query")
+ .one_of("weather", "forecast")
+ .require("weekend")
+ .optionally("location")
+ )
+ def handle_weekend_forecast(self, message: Message):
+ """Handle requests for the weekend forecast.
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_weekend_forecast(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .one_of("weather", "forecast")
+ .require("week")
+ .optionally("location")
+ )
+ def handle_week_weather(self, message: Message):
+ """Handle weather for week (i.e. seven days).
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_week_summary(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .require("temperature")
+ .optionally("location")
+ .optionally("unit")
+ .optionally("today")
+ .optionally("now")
+ )
+ def handle_current_temperature(self, message: Message):
+ """Handle requests for current temperature.
+
+ Examples:
+ "What is the temperature in Celsius?"
+ "What is the temperature in Baltimore now?"
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_temperature(message, temperature_type="current")
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .require("temperature")
+ .require("relative-day")
+ .optionally("location")
+ .optionally("unit")
+ )
+ def handle_daily_temperature(self, message: Message):
+ """Handle simple requests for current temperature.
+
+ Examples: "What is the temperature?"
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_temperature(message, temperature_type="current")
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .require("temperature")
+ .require("relative-time")
+ .optionally("relative-day")
+ .optionally("location")
+ )
+ def handle_hourly_temperature(self, message: Message):
+ """Handle requests for current temperature at a relative time.
+
+ Examples:
+ "What is the temperature tonight?"
+ "What is the temperature tomorrow morning?"
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_temperature(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .require("high")
+ .optionally("temperature")
+ .optionally("location")
+ .optionally("unit")
+ .optionally("relative-day")
+ .optionally("now")
+ .optionally("today")
+ )
+ def handle_high_temperature(self, message: Message):
+ """Handle a request for the high temperature.
+
+ Examples:
+ "What is the high temperature tomorrow?"
+ "What is the high temperature in London on Tuesday?"
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_temperature(message, temperature_type="high")
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .require("low")
+ .optionally("temperature")
+ .optionally("location")
+ .optionally("unit")
+ .optionally("relative-day")
+ .optionally("now")
+ .optionally("today")
+ )
+ def handle_low_temperature(self, message: Message):
+ """Handle a request for the high temperature.
+
+ Examples:
+ "What is the high temperature tomorrow?"
+ "What is the high temperature in London on Tuesday?"
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_temperature(message, temperature_type="low")
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("confirm-query-current")
+ .one_of("hot", "cold")
+ .optionally("location")
+ .optionally("today")
+ )
+ def handle_is_it_hot(self, message: Message):
+ """Handler for temperature requests such as: is it going to be hot today?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_temperature(message, "current")
+
+ @intent_handler(
+ IntentBuilder("")
+ .optionally("query")
+ .one_of("hot", "cold")
+ .require("confirm-query")
+ .optionally("location")
+ .optionally("relative-day")
+ .optionally("today")
+ )
+ def handle_how_hot_or_cold(self, message):
+ """Handler for temperature requests such as: how cold will it be today?
-"""
- This skill uses the Open Weather Map API (https://openweathermap.org) and
- the PyOWM wrapper for it. For more info, see:
-
- General info on PyOWM
- https://www.slideshare.net/csparpa/pyowm-my-first-open-source-project
- OWM doc for APIs used
- https://openweathermap.org/current - current
- https://openweathermap.org/forecast5 - three hour forecast
- https://openweathermap.org/forecast16 - daily forecasts
- PyOWM docs
- https://media.readthedocs.org/pdf/pyowm/latest/pyowm.pdf
-"""
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ utterance = message.data["utterance"]
+ temperature_type = "high" if self.voc_match(utterance, "hot") else "low"
+ self._report_temperature(message, temperature_type)
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("confirm-query")
+ .require("windy")
+ .optionally("location")
+ .optionally("relative-day")
+ )
+ def handle_is_it_windy(self, message: Message):
+ """Handler for weather requests such as: is it windy today?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_wind(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("how")
+ .require("windy")
+ .optionally("confirm-query")
+ .optionally("relative-day")
+ .optionally("location")
+ )
+ def handle_windy(self, message):
+ """Handler for weather requests such as: how windy is it?
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_wind(message)
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("confirm-query")
+ .require("snow")
+ .optionally("location")
+ )
+ def handle_is_it_snowing(self, message: Message):
+ """Handler for weather requests such as: is it snowing today?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_weather_condition(message, "snow")
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("confirm-query")
+ .require("clear")
+ .optionally("location")
+ )
+ def handle_is_it_clear(self, message: Message):
+ """Handler for weather requests such as: is the sky clear today?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_weather_condition(message, condition="clear")
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("confirm-query")
+ .require("clouds")
+ .optionally("location")
+ .optionally("relative-time")
+ )
+ def handle_is_it_cloudy(self, message: Message):
+ """Handler for weather requests such as: is it cloudy today?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_weather_condition(message, "clouds")
-# Windstrength limits in miles per hour
-WINDSTRENGTH_MPH = {
- 'hard': 20,
- 'medium': 11
-}
+ @intent_handler(
+ IntentBuilder("").require("ConfirmQuery").require("Fog").optionally("Location")
+ )
+ def handle_is_it_foggy(self, message: Message):
+ """Handler for weather requests such as: is it foggy today?
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_weather_condition(message, "fog")
-# Windstrenght limits in m/s
-WINDSTRENGTH_MPS = {
- 'hard': 9,
- 'medium': 5
-}
+ @intent_handler(
+ IntentBuilder("").require("ConfirmQuery").require("Rain").optionally("Location")
+ )
+ def handle_is_it_raining(self, message: Message):
+ """Handler for weather requests such as: is it raining today?
+ Args:
+ message: Message Bus event information from the intent parser
+0] """
+ self._report_weather_condition(message, "rain")
-class OWMApi(Api):
- ''' Wrapper that defaults to the Mycroft cloud proxy so user's don't need
- to get their own OWM API keys '''
+ @intent_handler("do-i-need-an-umbrella.intent")
+ def handle_need_umbrella(self, message: Message):
+ """Handler for weather requests such as: will I need an umbrella today?
- def __init__(self):
- super(OWMApi, self).__init__("owm")
- self.owmlang = "en"
- self.encoding = "utf8"
- self.observation = ObservationParser()
- self.forecast = ForecastParser()
- self.query_cache = {}
- self.location_translations = {}
-
- @staticmethod
- def get_language(lang):
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_weather_condition(message, "rain")
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("ConfirmQuery")
+ .require("Thunderstorm")
+ .optionally("Location")
+ )
+ def handle_is_it_storming(self, message: Message):
+ """Handler for weather requests such as: is it storming today?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ self._report_weather_condition(message, "thunderstorm")
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("When")
+ .optionally("Next")
+ .require("Precipitation")
+ .optionally("Location")
+ )
+ def handle_next_precipitation(self, message: Message):
+ """Handler for weather requests such as: when will it rain next?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ forecast, timeframe = weather.get_next_precipitation(intent_data)
+ intent_data.timeframe = timeframe
+ dialog_args = intent_data, self.weather_config, forecast
+ dialog = get_dialog_for_timeframe(intent_data.timeframe, dialog_args)
+ dialog.build_next_precipitation_dialog()
+ spoken_percentage = self.translate(
+ "percentage-number", data=dict(number=dialog.data["percent"])
+ )
+ dialog.data.update(percent=spoken_percentage)
+ self._speak_weather(dialog)
+
+ @intent_handler(
+ IntentBuilder("")
+ .require("Query")
+ .require("Humidity")
+ .optionally("RelativeDay")
+ .optionally("Location")
+ )
+ def handle_humidity(self, message: Message):
+ """Handler for weather requests such as: how humid is it?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ intent_weather = weather.get_weather_for_intent(intent_data)
+ dialog_args = intent_data, self.weather_config, intent_weather
+ dialog = get_dialog_for_timeframe(intent_data.timeframe, dialog_args)
+ dialog.build_humidity_dialog()
+ dialog.data.update(
+ humidity=self.translate(
+ "percentage-number", data=dict(num=dialog.data["humidity"])
+ )
+ )
+ self._speak_weather(dialog)
+
+ @intent_handler(
+ IntentBuilder("")
+ .one_of("Query", "When")
+ .optionally("Location")
+ .require("Sunrise")
+ .optionally("Today")
+ .optionally("RelativeDay")
+ )
+ def handle_sunrise(self, message: Message):
+ """Handler for weather requests such as: when is the sunrise?
+
+ Args:
+ message: Message Bus event information from the intent parser
"""
- OWM supports 31 languages, see https://openweathermap.org/current#multi
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ intent_weather = weather.get_weather_for_intent(intent_data)
+ dialog_args = intent_data, self.weather_config, intent_weather
+ dialog = get_dialog_for_timeframe(intent_data.timeframe, dialog_args)
+ dialog.build_sunrise_dialog()
+ weather_location = self._build_display_location(intent_data)
+ self._display_sunrise_sunset(intent_weather, weather_location)
+ self._speak_weather(dialog)
+
+ @intent_handler(
+ IntentBuilder("")
+ .one_of("Query", "When")
+ .require("Sunset")
+ .optionally("Location")
+ .optionally("Today")
+ .optionally("RelativeDay")
+ )
+ def handle_sunset(self, message: Message):
+ """Handler for weather requests such as: when is the sunset?
+
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ intent_weather = weather.get_weather_for_intent(intent_data)
+ dialog_args = intent_data, self.weather_config, intent_weather
+ dialog = get_dialog_for_timeframe(intent_data.timeframe, dialog_args)
+ dialog.build_sunset_dialog()
+ weather_location = self._build_display_location(intent_data)
+ self._display_sunrise_sunset(intent_weather, weather_location)
+ self._speak_weather(dialog)
+
+ def _display_sunrise_sunset(self, forecast: DailyWeather, weather_location: str):
+ """Display the sunrise and sunset.
+
+ Args:
+ forecast: daily forecasts to display
+ weather_location: the geographical location of the weather
+ """
+ if self.platform == MARK_II:
+ self._display_sunrise_sunset_mark_ii(forecast, weather_location)
- Convert language code to owm language, if missing use 'en'
+ def _display_sunrise_sunset_mark_ii(
+ self, forecast: DailyWeather, weather_location: str
+ ):
+ """Display the sunrise and sunset on a Mark II device using a grid layout.
+
+ Args:
+ forecast: daily forecasts to display
+ weather_location: the geographical location of the weather
"""
+ self.gui.clear()
+ self.gui["weatherDate"] = forecast.date_time.strftime("%A %b %d")
+ self.gui["weatherLocation"] = weather_location
+ self.gui["sunrise"] = self._format_sunrise_sunset_time(forecast.sunrise)
+ self.gui["sunset"] = self._format_sunrise_sunset_time(forecast.sunset)
+ self.gui["ampm"] = self.config_core["time_format"] == TWELVE_HOUR
+ self.gui.show_page("sunrise_sunset_mark_ii.qml")
- owmlang = 'en'
-
- # some special cases
- if lang == 'zh-zn' or lang == 'zh_zn':
- return 'zh_zn'
- elif lang == 'zh-tw' or lang == 'zh_tw':
- return 'zh_tw'
-
- # special cases cont'd
- lang = lang.lower().split("-")
- lookup = {
- 'sv': 'se',
- 'cs': 'cz',
- 'ko': 'kr',
- 'lv': 'la',
- 'uk': 'ua'
- }
- if lang[0] in lookup:
- return lookup[lang[0]]
-
- owmsupported = ['ar', 'bg', 'ca', 'cz', 'da', 'de', 'el', 'en', 'fa', 'fi',
- 'fr', 'gl', 'hr', 'hu', 'it', 'ja', 'kr', 'la', 'lt',
- 'mk', 'nl', 'pl', 'pt', 'ro', 'ru', 'se', 'sk', 'sl',
- 'es', 'tr', 'ua', 'vi']
-
- if lang[0] in owmsupported:
- return lang[0]
-
- if (len(lang) == 2):
- if lang[1] in owmsupported:
- return lang[1]
- return owmlang
-
- def build_query(self, params):
- params.get("query").update({"lang": self.owmlang})
- return params.get("query")
-
- def request(self, data):
- """ Caching the responses """
- req_hash = hash(json.dumps(data, sort_keys=True))
- cache = self.query_cache.get(req_hash, (0, None))
- # check for caches with more days data than requested
- if data['query'].get('cnt') and cache == (0, None):
- test_req_data = deepcopy(data)
- while test_req_data['query']['cnt'] < 16 and cache == (0, None):
- test_req_data['query']['cnt'] += 1
- test_hash = hash(json.dumps(test_req_data, sort_keys=True))
- test_cache = self.query_cache.get(test_hash, (0, None))
- if test_cache != (0, None):
- cache = test_cache
- # Use cached response if value exists and was fetched within 15 min
- now = time.monotonic()
- if now > (cache[0] + 15 * MINUTES) or cache[1] is None:
- resp = super().request(data)
- # 404 returned as JSON-like string in some instances
- if isinstance(resp, str) and '{"cod":"404"' in resp:
- r = Response()
- r.status_code = 404
- raise HTTPError(resp, response=r)
- self.query_cache[req_hash] = (now, resp)
- else:
- LOG.debug('Using cached OWM Response from {}'.format(cache[0]))
- resp = cache[1]
- return resp
+ def _format_sunrise_sunset_time(self, date_time: datetime) -> str:
+ """Format a the sunrise or sunset datetime into a string for GUI display.
- def get_data(self, response):
- return response.text
+ The datetime builtin returns hour in two character format. Remove the
+ leading zero when present.
- def weather_at_location(self, name):
- if name == '':
- raise LocationNotFoundError('The location couldn\'t be found')
+ Args:
+ date_time: the sunrise or sunset
- q = {"q": name}
- try:
- data = self.request({
- "path": "/weather",
- "query": q
- })
- return self.observation.parse_JSON(data), name
- except HTTPError as e:
- if e.response.status_code == 404:
- name = ' '.join(name.split()[:-1])
- return self.weather_at_location(name)
- raise
-
- def weather_at_place(self, name, lat, lon):
- if lat and lon:
- q = {"lat": lat, "lon": lon}
- else:
- if name in self.location_translations:
- name = self.location_translations[name]
- response, trans_name = self.weather_at_location(name)
- self.location_translations[name] = trans_name
- return response
-
- data = self.request({
- "path": "/weather",
- "query": q
- })
- return self.observation.parse_JSON(data)
-
- def three_hours_forecast(self, name, lat, lon):
- if lat and lon:
- q = {"lat": lat, "lon": lon}
- else:
- if name in self.location_translations:
- name = self.location_translations[name]
- q = {"q": name}
-
- data = self.request({
- "path": "/forecast",
- "query": q
- })
- return self.to_forecast(data, "3h")
-
- def _daily_forecast_at_location(self, name, limit):
- if name in self.location_translations:
- name = self.location_translations[name]
- orig_name = name
- while name != '':
- try:
- q = {"q": name}
- if limit is not None:
- q["cnt"] = limit
- data = self.request({
- "path": "/forecast/daily",
- "query": q
- })
- forecast = self.to_forecast(data, 'daily')
- self.location_translations[orig_name] = name
- return forecast
- except HTTPError as e:
- if e.response.status_code == 404:
- # Remove last word in name
- name = ' '.join(name.split()[:-1])
-
- raise LocationNotFoundError('The location couldn\'t be found')
-
- def daily_forecast(self, name, lat, lon, limit=None):
- if lat and lon:
- q = {"lat": lat, "lon": lon}
- else:
- return self._daily_forecast_at_location(name, limit)
-
- if limit is not None:
- q["cnt"] = limit
- data = self.request({
- "path": "/forecast/daily",
- "query": q
- })
- return self.to_forecast(data, "daily")
-
- def to_forecast(self, data, interval):
- forecast = self.forecast.parse_JSON(data)
- if forecast is not None:
- forecast.set_interval(interval)
- return Forecaster(forecast)
+ Returns:
+ the value to display on the screen
+ """
+ if self.config_core["time_format"] == TWELVE_HOUR:
+ display_time = date_time.strftime("%I:%M")
+ if display_time.startswith("0"):
+ display_time = display_time[1:]
else:
- return None
+ display_time = date_time.strftime("%H:%M")
- def set_OWM_language(self, lang):
- self.owmlang = lang
+ return display_time
- # Certain OWM condition information is encoded using non-utf8
- # encodings. If another language needs similar solution add them to the
- # encodings dictionary
- encodings = {
- 'se': 'latin1'
- }
- self.encoding = encodings.get(lang, 'utf8')
+ def _report_current_weather(self, message: Message):
+ """Handles all requests for current weather conditions.
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ weather_location = self._build_display_location(intent_data)
+ self._display_current_conditions(weather, weather_location)
+ dialog = CurrentDialog(intent_data, self.weather_config, weather.current)
+ dialog.build_weather_dialog()
+ self._speak_weather(dialog)
+ if self.gui.connected and self.platform != MARK_II:
+ self._display_more_current_conditions(weather, weather_location)
+ dialog = CurrentDialog(intent_data, self.weather_config, weather.current)
+ dialog.build_high_low_temperature_dialog()
+ self._speak_weather(dialog)
+ if self.gui.connected:
+ if self.platform == MARK_II:
+ self._display_more_current_conditions(weather, weather_location)
+ sleep(5)
+ self._display_hourly_forecast(weather, weather_location)
+ else:
+ four_day_forecast = weather.daily[1:5]
+ self._display_multi_day_forecast(four_day_forecast, intent_data)
-class WeatherSkill(MycroftSkill):
- def __init__(self):
- super().__init__("WeatherSkill")
+ def _display_current_conditions(
+ self, weather: WeatherReport, weather_location: str
+ ):
+ """Display current weather conditions on a screen.
- # Build a dictionary to translate OWM weather-conditions
- # codes into the Mycroft weather icon codes
- # (see https://openweathermap.org/weather-conditions)
- self.CODES = multi_key_dict()
- self.CODES['01d', '01n'] = 0 # clear
- self.CODES['02d', '02n', '03d', '03n'] = 1 # partly cloudy
- self.CODES['04d', '04n'] = 2 # cloudy
- self.CODES['09d', '09n'] = 3 # light rain
- self.CODES['10d', '10n'] = 4 # raining
- self.CODES['11d', '11n'] = 5 # stormy
- self.CODES['13d', '13n'] = 6 # snowing
- self.CODES['50d', '50n'] = 7 # windy/misty
-
- # Use Mycroft proxy if no private key provided
- self.settings["api_key"] = None
- self.settings["use_proxy"] = True
+ This is the first screen that shows. Others will follow.
- def initialize(self):
- # TODO: Remove lat,lon parameters from the OWMApi()
- # methods and implement _at_coords() versions
- # instead to make the interfaces compatible
- # again.
- #
- # if self.settings["api_key"] and not self.settings['use_proxy']):
- # self.owm = OWM(self.settings["api_key"])
- # else:
- # self.owm = OWMApi()
- self.owm = OWMApi()
- if self.owm:
- self.owm.set_OWM_language(lang=OWMApi.get_language(self.lang))
-
- self.schedule_for_daily_use()
- try:
- self.mark2_forecast(self.__initialize_report(None))
- except Exception as e:
- self.log.warning('Could not prepare forecasts. '
- '({})'.format(repr(e)))
-
- # self.test_screen() # DEBUG: Used during screen testing/debugging
-
- def test_screen(self):
- self.gui["current"] = 72
- self.gui["min"] = 83
- self.gui["max"] = 5
- self.gui["location"] = "kansas city"
- self.gui["condition"] = "sunny"
- self.gui["icon"] = "sunny"
- self.gui["weathercode"] = 0
- self.gui["humidity"] = "100%"
- self.gui["wind"] = "--"
-
- self.gui.show_page('weather.qml')
-
- def prime_weather_cache(self):
- # If not already cached, this will reach out for current conditions
- report = self.__initialize_report(None)
- try:
- self.owm.weather_at_place(
- report['full_location'], report['lat'],
- report['lon']).get_weather()
- self.owm.daily_forecast(report['full_location'],
- report['lat'], report['lon'], limit=16)
- except Exception as e:
- self.log.error('Failed to prime weather cache '
- '({})'.format(repr(e)))
-
- def schedule_for_daily_use(self):
- # Assume the user has a semi-regular schedule. Whenever this method
- # is called, it will establish a 45 minute window of pre-cached
- # weather info for the next day allowing for snappy responses to the
- # daily query.
- self.prime_weather_cache()
- self.cancel_scheduled_event("precache1")
- self.cancel_scheduled_event("precache2")
- self.cancel_scheduled_event("precache3")
- self.schedule_repeating_event(self.prime_weather_cache, None,
- 60*60*24, # One day in seconds
- name="precache1")
- self.schedule_repeating_event(self.prime_weather_cache, None,
- 60*60*24-60*15, # One day - 15 minutes
- name="precache2")
- self.schedule_repeating_event(self.prime_weather_cache, None,
- 60*60*24+60*15, # One day + 15 minutes
- name="precache3")
-
- def get_coming_days_forecast(self, forecast, unit, days=None):
+ Args:
+ weather: current weather conditions from Open Weather Maps
+ weather_location: the geographical location of the reported weather
"""
- Get weather forcast for the coming days and returns them as a list
+ if self.gui.connected:
+ page_name = "current_1_scalable.qml"
+ self.gui.clear()
+ self.gui["currentTemperature"] = weather.current.temperature
+ if self.platform == MARK_II:
+ self.gui["weatherCondition"] = weather.current.condition.image
+ self.gui["weatherLocation"] = weather_location
+ self.gui["highTemperature"] = weather.current.high_temperature
+ self.gui["lowTemperature"] = weather.current.low_temperature
+ page_name = page_name.replace("scalable", "mark_ii")
+ else:
+ self.gui["weatherCode"] = weather.current.condition.code
+ self.gui.show_page(page_name)
+ else:
+ self.enclosure.deactivate_mouth_events()
+ self.enclosure.weather_display(
+ weather.current.condition.code, weather.current.temperature
+ )
- Parameters:
- forecast: OWM weather
- unit: Temperature unit
- dt: Reference time
- days: number of days to get forecast for, defaults to 4
+ def _build_display_location(self, intent_data: WeatherIntent) -> str:
+ """Build a string representing the location of the weather for display on GUI
- Returns: List of dicts containg weather info
- """
- days = days or 4
- weekdays = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
- forecast_list = []
- # Get tomorrow and 4 days forward
- for weather in list(forecast.get_weathers())[1:5]:
- result_temp = weather.get_temperature(unit)
- day_num = datetime.weekday(
- datetime.fromtimestamp(weather.get_reference_time()))
- result_temp_day = weekdays[day_num]
- forecast_list.append({
- "weathercode": self.CODES[weather.get_weather_icon_name()],
- "max": round(result_temp['max']),
- "min": round(result_temp['min']),
- "date": result_temp_day
- })
- return forecast_list
-
- def mark2_forecast(self, report):
- """ Builds forecast for the upcoming days for the Mark-2 display."""
- future_weather = self.owm.daily_forecast(report['full_location'],
- report['lat'],
- report['lon'], limit=5)
- if future_weather is None:
- self.__report_no_data('weather')
- return
-
- f = future_weather.get_forecast()
- forecast_list = self.get_coming_days_forecast(
- f, self.__get_temperature_unit())
-
- if "gui" in dir(self):
- forecast = {}
- forecast['first'] = forecast_list[0:2]
- forecast['second'] = forecast_list[2:4]
- self.gui['forecast'] = forecast
-
- # DATETIME BASED QUERIES
- # Handle: what is the weather like?
- @intent_handler(IntentBuilder("").one_of("Weather", "Forecast")
- .require("Query").optionally("Location")
- .optionally("Today").build())
- def handle_current_weather(self, message):
- try:
- self.log.debug("Handler: handle_current_weather")
- # Get a date from requests like "weather for next Tuesday"
- today, _ = self.__extract_datetime("today")
- when, _ = self.__extract_datetime(message.data.get('utterance'),
- lang=self.lang)
- if when and when != today:
- self.log.debug("Doing a forecast {} {}".format(today, when))
- return self.handle_forecast(message)
-
- report = self.__populate_report(message)
-
- if report is None:
- self.__report_no_data('weather')
- return
-
- self.__report_weather(
- "current", report,
- separate_min_max='Location' not in message.data)
- self.mark2_forecast(report)
-
- # Establish the daily cadence
- self.schedule_for_daily_use()
- except APIErrors as e:
- self.log.exception(repr(e))
- self.__api_error(e)
- except Exception as e:
- self.log.exception("Error: {0}".format(e))
-
- @intent_handler("whats.weather.like.intent")
- def handle_current_weather_alt(self, message):
- self.handle_current_weather(message)
-
- @intent_handler(IntentBuilder("").one_of("Weather", "Forecast")
- .one_of("Now", "Today").optionally("Location").build())
- def handle_current_weather_simple(self, message):
- self.handle_current_weather(message)
-
- @intent_handler("what.is.three.day.forecast.intent")
- def handle_three_day_forecast(self, message):
- """ Handler for three day forecast without specified location
-
- Examples: "What is the 3 day forecast?"
- "What is the weather forecast?"
+ The return value will be the device's configured location if no location is
+ specified in the intent. If a location is specified, and it is in the same
+ country as that in the device configuration, the return value will be city and
+ region. A specified location in a different country will result in a return
+ value of city and country.
+
+ Args:
+ intent_data: information about the intent that was triggered
+
+ Returns:
+ The weather location to be displayed on the GUI
"""
- report = self.__initialize_report(message)
+ if intent_data.geolocation:
+ location = [intent_data.geolocation["city"]]
+ if intent_data.geolocation["country"] == self.weather_config.country:
+ location.append(intent_data.geolocation["region"])
+ else:
+ location.append(intent_data.geolocation["country"])
+ else:
+ location = [self.weather_config.city, self.weather_config.state]
- try:
- self.report_multiday_forecast(report)
- except APIErrors as e:
- self.__api_error(e)
- except Exception as e:
- self.log.exception("Error: {0}".format(e))
+ return ", ".join(location)
+
+ def _display_more_current_conditions(
+ self, weather: WeatherReport, weather_location: str
+ ):
+ """Display current weather conditions on a device that supports a GUI.
- @intent_handler("what.is.three.day.forecast.location.intent")
- def handle_three_day_forecast_location(self, message):
- """ Handler for three day forecast for a specific location
+ This is the second screen that shows for current weather.
- Example: "What is the 3 day forecast for London?"
+ Args
+ weather: current weather conditions from Open Weather Maps
+ weather_location: geographical location of the reported weather
"""
- # padatious lowercases everything including these keys
- message.data['Location'] = message.data.pop('location')
- return self.handle_three_day_forecast(message)
+ page_name = "current_2_scalable.qml"
+ self.gui.clear()
+ if self.platform == MARK_II:
+ self.gui["weatherLocation"] = weather_location
+ self.gui["windSpeed"] = weather.current.wind_speed
+ self.gui["humidity"] = weather.current.humidity
+ page_name = page_name.replace("scalable", "mark_ii")
+ else:
+ self.gui["highTemperature"] = weather.current.high_temperature
+ self.gui["lowTemperature"] = weather.current.low_temperature
+ self.gui.show_page(page_name)
- @intent_handler("what.is.two.day.forecast.intent")
- def handle_two_day_forecast(self, message):
- """ Handler for two day forecast with no specified location
+ def _report_one_hour_weather(self, message: Message):
+ """Handles requests for a one hour forecast.
- Examples: "What's the weather like next Monday and Tuesday?"
- "What's the weather gonna be like in the coming days?"
+ Args:
+ message: Message Bus event information from the intent parser
"""
- # TODO consider merging in weekend intent
-
- report = self.__initialize_report(message)
- if message.data.get('day_one'):
- # report two or more specific days
- days = []
- day_num = 1
- day = message.data['day_one']
- while day:
- day_dt, _ = self.__extract_datetime(day)
- days.append(day_dt)
- day_num += 1
- next_day = 'day_{}'.format(pronounce_number(day_num))
- day = message.data.get(next_day)
-
- try:
- if message.data.get('day_one'):
- # report two or more specific days
- self.report_multiday_forecast(report, set_days=days)
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ try:
+ forecast = weather.get_forecast_for_hour(intent_data)
+ except IndexError:
+ self.speak_dialog("forty-eight.hours.available")
else:
- # report next two days
- self.report_multiday_forecast(report, num_days=2)
+ dialog = HourlyDialog(intent_data, self.weather_config, forecast)
+ dialog.build_weather_dialog()
+ self._speak_weather(dialog)
- except APIErrors as e:
- self.__api_error(e)
- except Exception as e:
- self.log.exception("Error: {0}".format(e))
+ def _display_hourly_forecast(self, weather: WeatherReport, weather_location: str):
+ """Display hourly forecast on a device that supports the GUI.
- @intent_handler("what.is.multi.day.forecast.intent")
- def handle_multi_day_forecast(self, message):
- """ Handler for multiple day forecast with no specified location
+ On the Mark II this screen is the final for current weather. It can
+ also be shown when the hourly forecast is requested.
- Examples: "What's the weather like in the next 4 days?"
+ :param weather: hourly weather conditions from Open Weather Maps
"""
-
- report = self.__initialize_report(message)
- # report x number of days
- when, _ = self.__extract_datetime("tomorrow")
- num_days = int(extract_number(message.data['num']))
-
- if self.voc_match(message.data['num'], 'Couple'):
- self.report_multiday_forecast(report, num_days=2)
-
- self.report_multiday_forecast(report, when,
- num_days=num_days)
-
- # Handle: What is the weather forecast tomorrow?
- @intent_handler(IntentBuilder("").one_of("Weather", "Forecast")
- .optionally("Query").require("RelativeDay")
- .optionally("Location").build())
- def handle_forecast(self, message):
- report = self.__initialize_report(message)
-
- # Get a date from spoken request
- when, _ = self.__extract_datetime(message.data.get('utterance'),
- lang=self.lang)
- today, _ = self.__extract_datetime('today', lang='en-us')
-
- if today == when:
- self.handle_current_weather(message)
- return
-
- self.report_forecast(report, when)
-
- # Establish the daily cadence
- self.schedule_for_daily_use()
-
- # Handle: What's the weather later?
- @intent_handler(IntentBuilder("").require("Query").require(
- "Weather").optionally("Location").require("Later").build())
- def handle_next_hour(self, message):
- report = self.__initialize_report(message)
-
- # Get near-future forecast
- forecastWeather = self.owm.three_hours_forecast(
- report['full_location'],
- report['lat'],
- report['lon']).get_forecast().get_weathers()[0]
-
- if forecastWeather is None:
- self.__report_no_data('weather')
- return
-
- # NOTE: The 3-hour forecast uses different temperature labels,
- # temp, temp_min and temp_max.
- report['temp'] = self.__get_temperature(forecastWeather, 'temp')
- report['temp_min'] = self.__get_temperature(forecastWeather,
- 'temp_min')
- report['temp_max'] = self.__get_temperature(forecastWeather,
- 'temp_max')
- report['condition'] = forecastWeather.get_detailed_status()
- report['icon'] = forecastWeather.get_weather_icon_name()
- self.__report_weather("hour", report)
-
- # Handle: What's the weather tonight / tomorrow morning?
- @intent_handler(IntentBuilder("").require("RelativeTime")
- .one_of("Weather", "Forecast").optionally("Query")
- .optionally("RelativeDay").optionally("Location").build())
- def handle_weather_at_time(self, message):
- self.log.debug("Handler: handle_weather_at_time")
- when, _ = self.__extract_datetime(
- message.data.get('utterance'), lang=self.lang)
- now = datetime.utcnow()
- time_diff = (when - now)
- mins_diff = (time_diff.days * 1440) + (time_diff.seconds / 60)
-
- if mins_diff < 120:
- self.handle_current_weather(message)
- else:
- report = self.__populate_report(message)
-
- if report is None:
- self.__report_no_data('weather')
- return
- self.__report_weather("at.time", report)
-
- @intent_handler(IntentBuilder("").require("Query").one_of(
- "Weather", "Forecast").require("Weekend").require(
- "Next").optionally("Location").build())
- def handle_next_weekend_weather(self, message):
- """ Handle next weekends weather """
-
- report = self.__initialize_report(message)
- when, _ = self.__extract_datetime('next saturday', lang='en-us')
- self.report_forecast(report, when)
- when, _ = self.__extract_datetime('next sunday', lang='en-us')
- self.report_forecast(report, when)
-
- @intent_handler(IntentBuilder("").require("Query")
- .one_of("Weather", "Forecast").require("Weekend")
- .optionally("Location").build())
- def handle_weekend_weather(self, message):
- """ Handle weather for weekend. """
- report = self.__initialize_report(message)
-
- # Get a date from spoken request
- when, _ = self.__extract_datetime('this saturday', lang='en-us')
- self.report_forecast(report, when)
- when, _ = self.__extract_datetime('this sunday', lang='en-us')
- self.report_forecast(report, when)
-
- @intent_handler(IntentBuilder("").optionally("Query")
- .one_of("Weather", "Forecast").require("Week")
- .optionally("Location").build())
- def handle_week_weather(self, message):
- """ Handle weather for week.
- Speaks overview of week, not daily forecasts """
- report = self.__initialize_report(message)
- when, _ = self.__extract_datetime(message.data['utterance'])
- today, _ = self.__extract_datetime("today")
- if not when:
- when = today
- days = [when + timedelta(days=i) for i in range(7)]
- # Fetch forecasts/reports for week
- forecasts = [dict(self.__populate_forecast(report, day,
- preface_day=False))
- if day != today
- else dict(self.__populate_current(report, day))
- for day in days]
-
- if forecasts is None:
- self.__report_no_data('weather')
- return
-
- # collate forecasts
- collated = {'condition': [], 'condition_cat': [], 'icon': [],
- 'temp': [], 'temp_min': [], 'temp_max': []}
- for fc in forecasts:
- for attribute in collated.keys():
- collated[attribute].append(fc.get(attribute))
-
- # analyse for commonality/difference
- primary_category = max(collated['condition_cat'],
- key=collated['condition_cat'].count)
- days_with_primary_cat, conditions_in_primary_cat = [], []
- days_with_other_cat = {}
- for i, item in enumerate(collated['condition_cat']):
- if item == primary_category:
- days_with_primary_cat.append(i)
- conditions_in_primary_cat.append(collated['condition'][i])
+ hourly_forecast = []
+ for hour_count, hourly in enumerate(weather.hourly):
+ if not hour_count:
+ continue
+ if hour_count > 4:
+ break
+ if self.config_core["time_format"] == TWELVE_HOUR:
+ # The datetime builtin returns hour in two character format. Convert
+ # to a integer and back again to remove the leading zero when present.
+ hour = int(hourly.date_time.strftime("%I"))
+ am_pm = hourly.date_time.strftime(" %p")
+ formatted_time = str(hour) + am_pm
else:
- if not days_with_other_cat.get(item):
- days_with_other_cat[item] = []
- days_with_other_cat[item].append(i)
- primary_condition = max(conditions_in_primary_cat,
- key=conditions_in_primary_cat.count)
-
- # CONSTRUCT DIALOG
- speak_category = self.translate_namedvalues('condition.category')
- # 0. Report period starting day
- if days[0] == today:
- dialog = self.translate('this.week')
- else:
- speak_day = self.__to_day(days[0])
- dialog = self.translate('from.day', {'day': speak_day})
-
- # 1. whichever is longest (has most days), report as primary
- # if over half the days => "it will be mostly {cond}"
- speak_primary = speak_category[primary_category]
- seq_primary_days = self.__get_seqs_from_list(days_with_primary_cat)
- if len(days_with_primary_cat) >= (len(days) / 2):
- dialog = self.concat_dialog(dialog,
- 'weekly.conditions.mostly.one',
- {'condition': speak_primary})
- elif seq_primary_days:
- # if condition occurs on sequential days, report date range
- dialog = self.concat_dialog(dialog,
- 'weekly.conditions.seq.start',
- {'condition': speak_primary})
- for seq in seq_primary_days:
- if seq is not seq_primary_days[0]:
- dialog = self.concat_dialog(dialog, 'and')
- day_from = self.__to_day(days[seq[0]])
- day_to = self.__to_day(days[seq[-1]])
- dialog = self.concat_dialog(dialog,
- 'weekly.conditions.seq.period',
- {'from': day_from,
- 'to': day_to})
- else:
- # condition occurs on random days
- dialog = self.concat_dialog(dialog,
- 'weekly.conditions.some.days',
- {'condition': speak_primary})
- self.speak_dialog(dialog)
-
- # 2. Any other conditions present:
- dialog = ""
- dialog_list = []
- for cat in days_with_other_cat:
- spoken_cat = speak_category[cat]
- cat_days = days_with_other_cat[cat]
- seq_days = self.__get_seqs_from_list(cat_days)
- for seq in seq_days:
- if seq is seq_days[0]:
- seq_dialog = spoken_cat
- else:
- seq_dialog = self.translate('and')
- day_from = self.__to_day(days[seq[0]])
- day_to = self.__to_day(days[seq[-1]])
- seq_dialog = self.concat_dialog(
- seq_dialog,
- self.translate('weekly.conditions.seq.period',
- {'from': day_from,
- 'to': day_to}))
- dialog_list.append(seq_dialog)
- if not seq_days:
- for day in cat_days:
- speak_day = self.__to_day(days[day])
- dialog_list.append(self.translate(
- 'weekly.condition.on.day',
- {'condition': collated['condition'][day],
- 'day': speak_day}))
- dialog = join_list(dialog_list, 'and')
- self.speak_dialog(dialog)
-
- # 3. Report temps:
- temp_ranges = {
- 'low_min': min(collated['temp_min']),
- 'low_max': max(collated['temp_min']),
- 'high_min': min(collated['temp_max']),
- 'high_max': max(collated['temp_max'])
- }
- self.speak_dialog('weekly.temp.range', temp_ranges)
-
- # CONDITION BASED QUERY HANDLERS ####
- @intent_handler(IntentBuilder("").require("Temperature")
- .require("Query").optionally("Location")
- .optionally("Unit").optionally("Today")
- .optionally("Now").build())
- def handle_current_temperature(self, message):
- return self.__handle_typed(message, 'temperature')
-
- @intent_handler('simple.temperature.intent')
- def handle_simple_temperature(self, message):
- return self.__handle_typed(message, 'temperature')
-
- @intent_handler(IntentBuilder("").require("Query").require("High")
- .optionally("Temperature").optionally("Location")
- .optionally("Unit").optionally("RelativeDay")
- .optionally("Now").build())
- def handle_high_temperature(self, message):
- return self.__handle_typed(message, 'high.temperature')
-
- @intent_handler(IntentBuilder("").require("Query").require("Low")
- .optionally("Temperature").optionally("Location")
- .optionally("Unit").optionally("RelativeDay")
- .optionally("Now").build())
- def handle_low_temperature(self, message):
- return self.__handle_typed(message, 'low.temperature')
-
- @intent_handler(IntentBuilder("").require("ConfirmQuery").require(
- "Windy").optionally("Location").build())
- def handle_isit_windy(self, message):
- """ Handler for utterances similar to "is it windy today?" """
- report = self.__populate_report(message)
-
- if report is None:
- self.__report_no_data('weather')
- return
-
- if self.__get_speed_unit() == 'mph':
- limits = WINDSTRENGTH_MPH
- report['wind_unit'] = self.translate('miles per hour')
- else:
- limits = WINDSTRENGTH_MPS
- report['wind_unit'] = self.translate('meters per second')
-
- dialog = []
- if 'day' in report:
- dialog.append('forecast')
- if "Location" not in message.data:
- dialog.append('local')
- if int(report['wind']) >= limits['hard']:
- dialog.append('hard')
- elif int(report['wind']) >= limits['medium']:
- dialog.append('medium')
- else:
- dialog.append('light')
- dialog.append('wind')
- dialog = '.'.join(dialog)
- self.speak_dialog(dialog, report)
-
- @intent_handler(IntentBuilder("").require("ConfirmQueryCurrent").one_of(
- "Hot", "Cold").optionally("Location").optionally("Today").build())
- def handle_isit_hot(self, message):
- """ Handler for utterances similar to
- is it hot today?, is it cold? etc
+ formatted_time = hourly.date_time.strftime("%H:00")
+ hourly_forecast.append(
+ dict(
+ time=hourly.date_time.strftime(formatted_time),
+ precipitation=hourly.chance_of_precipitation,
+ temperature=hourly.temperature,
+ weatherCondition=hourly.condition.image,
+ )
+ )
+ self.gui.clear()
+ self.gui["weatherLocation"] = weather_location
+ self.gui["hourlyForecast"] = dict(hours=hourly_forecast)
+ self.gui.show_page("hourly_mark_ii.qml")
+
+ def _report_one_day_forecast(self, message: Message):
+ """Handles all requests for a single day forecast.
+
+ Args:
+ message: Message Bus event information from the intent parser
"""
- return self.__handle_typed(message, 'hot')
-
- # TODO This seems to present current temp, or possibly just hottest temp
- @intent_handler(IntentBuilder("").optionally("How").one_of("Hot", "Cold")
- .one_of("ConfirmQueryFuture", "ConfirmQueryCurrent")
- .optionally("Location").optionally("RelativeDay").build())
- def handle_how_hot_or_cold(self, message):
- """ Handler for utterances similar to
- how hot will it be today?, how cold will it be? , etc
+ intent_data = WeatherIntent(message, self.lang)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ forecast = weather.get_forecast_for_date(intent_data)
+ dialogs = self._build_forecast_dialogs([forecast], intent_data)
+ if self.platform == MARK_II:
+ self._display_one_day_mark_ii(forecast, intent_data)
+ for dialog in dialogs:
+ self._speak_weather(dialog)
+
+ def _display_one_day_mark_ii(
+ self, forecast: DailyWeather, intent_data: WeatherIntent
+ ):
+ """Display the forecast for a single day on a Mark II.
+
+ :param forecast: daily forecasts to display
"""
- response_type = 'high.temperature' if message.data.get('Hot') \
- else 'low.temperature'
- return self.__handle_typed(message, response_type)
-
- @intent_handler(IntentBuilder("").require("How").one_of("Hot", "Cold")
- .one_of("ConfirmQueryFuture", "ConfirmQueryCurrent")
- .optionally("Location").optionally("RelativeDay").build())
- def handle_how_hot_or_cold_alt(self, message):
- self.handle_how_hot_or_cold(message)
-
- @intent_handler(IntentBuilder("").require("ConfirmQuery")
- .require("Snowing").optionally("Location").build())
- def handle_isit_snowing(self, message):
- """ Handler for utterances similar to "is it snowing today?"
+ self.gui.clear()
+ self.gui["weatherLocation"] = self._build_display_location(intent_data)
+ self.gui["weatherCondition"] = forecast.condition.image
+ self.gui["weatherDate"] = forecast.date_time.strftime("%A %b %d")
+ self.gui["highTemperature"] = forecast.temperature.high
+ self.gui["lowTemperature"] = forecast.temperature.low
+ self.gui["chanceOfPrecipitation"] = str(forecast.chance_of_precipitation)
+ self.gui.show_page("single_day_mark_ii.qml")
+
+ def _report_multi_day_forecast(self, message: Message, days: int):
+ """Handles all requests for multiple day forecasts.
+
+ :param message: Message Bus event information from the intent parser
"""
- report = self.__populate_report(message)
-
- if report is None:
- self.__report_no_data('weather')
- return
-
- dialog = self.__select_condition_dialog(message, report,
- "snow", "snowing")
- self.speak_dialog(dialog, report)
-
- @intent_handler(IntentBuilder("").require("ConfirmQuery").require(
- "Clear").optionally("Location").build())
- def handle_isit_clear(self, message):
- """ Handler for utterances similar to "is it clear skies today?"
+ intent_data = WeatherIntent(message, self.lang)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ try:
+ forecast = weather.get_forecast_for_multiple_days(days)
+ except IndexError:
+ self.speak_dialog("seven.days.available")
+ forecast = weather.get_forecast_for_multiple_days(7)
+ dialogs = self._build_forecast_dialogs(forecast, intent_data)
+ self._display_multi_day_forecast(forecast, intent_data)
+ for dialog in dialogs:
+ self._speak_weather(dialog)
+
+ def _report_weekend_forecast(self, message: Message):
+ """Handles requests for a weekend forecast.
+
+ Args:
+ message: Message Bus event information from the intent parser
"""
- report = self.__populate_report(message)
-
- if report is None:
- self.__report_no_data('weather')
- return
-
- dialog = self.__select_condition_dialog(message, report, "clear")
- self.speak_dialog(dialog, report)
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ forecast = weather.get_weekend_forecast()
+ dialogs = self._build_forecast_dialogs(forecast, intent_data)
+ self._display_multi_day_forecast(forecast, intent_data)
+ for dialog in dialogs:
+ self._speak_weather(dialog)
+
+ def _build_forecast_dialogs(
+ self, forecast: List[DailyWeather], intent_data: WeatherIntent
+ ) -> List[DailyDialog]:
+ """
+ Build the dialogs for each of the forecast days being reported to the user.
- @intent_handler(IntentBuilder("").require("ConfirmQuery").require(
- "Cloudy").optionally("Location").optionally("RelativeTime").build())
- def handle_isit_cloudy(self, message):
- """ Handler for utterances similar to "is it cloudy skies today?"
+ :param forecast: daily forecasts to report
+ :param intent_data: information about the intent that was triggered
+ :return: one DailyDialog instance for each day being reported.
"""
- report = self.__populate_report(message)
+ dialogs = list()
+ for forecast_day in forecast:
+ dialog = DailyDialog(intent_data, self.weather_config, forecast_day)
+ dialog.build_weather_dialog()
+ dialogs.append(dialog)
- if report is None:
- self.__report_no_data('weather')
- return
+ return dialogs
- dialog = self.__select_condition_dialog(message, report, "cloudy")
- self.speak_dialog(dialog, report)
+ def _report_week_summary(self, message: Message):
+ """Summarize the week's weather rather than giving daily details.
- @intent_handler(IntentBuilder("").require("ConfirmQuery").require(
- "Foggy").optionally("Location").build())
- def handle_isit_foggy(self, message):
- """ Handler for utterances similar to "is it foggy today?"
- """
- report = self.__populate_report(message)
+ When the user requests the weather for the week, rather than give a daily
+ forecast for seven days, summarize the weather conditions for the week.
- if report is None:
- self.__report_no_data('weather')
- return
-
- dialog = self.__select_condition_dialog(message, report, "fog",
- "foggy")
- self.speak_dialog(dialog, report)
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ intent_data = WeatherIntent(message, self.lang)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ forecast = weather.get_forecast_for_multiple_days(7)
+ dialogs = self._build_weekly_condition_dialogs(forecast, intent_data)
+ dialogs.append(self._build_weekly_temperature_dialog(forecast, intent_data))
+ self._display_multi_day_forecast(forecast, intent_data)
+ for dialog in dialogs:
+ self._speak_weather(dialog)
+
+ def _build_weekly_condition_dialogs(
+ self, forecast: List[DailyWeather], intent_data: WeatherIntent
+ ) -> List[WeeklyDialog]:
+ """Build the dialog communicating a weather condition on days it is forecasted.
+
+ Args:
+ forecast: seven day daily forecast
+ intent_data: Parsed intent data
- @intent_handler(IntentBuilder("").require("ConfirmQuery").require(
- "Raining").optionally("Location").build())
- def handle_isit_raining(self, message):
- """ Handler for utterances similar to "is it raining today?"
+ Returns:
+ List of dialogs for each condition expected in the coming week.
"""
- report = self.__populate_report(message)
+ dialogs = list()
+ conditions = set([daily.condition.category for daily in forecast])
+ for condition in conditions:
+ dialog = WeeklyDialog(intent_data, self.weather_config, forecast)
+ dialog.build_condition_dialog(condition=condition)
+ dialogs.append(dialog)
- if report is None:
- self.__report_no_data('weather')
- return
+ return dialogs
- dialog = self.__select_condition_dialog(message, report, "rain",
- "raining")
- self.speak_dialog(dialog, report)
+ def _build_weekly_temperature_dialog(
+ self, forecast: List[DailyWeather], intent_data: WeatherIntent
+ ) -> WeeklyDialog:
+ """Build the dialog communicating the forecasted range of temperatures.
- @intent_handler("do.i.need.an.umbrella.intent")
- def handle_need_umbrella(self, message):
- self.handle_isit_raining(message)
+ Args:
+ forecast: seven day daily forecast
+ intent_data: Parsed intent data
- @intent_handler(IntentBuilder("").require("ConfirmQuery").require(
- "Storm").optionally("Location").build())
- def handle_isit_storming(self, message):
- """ Handler for utterances similar to "is it storming today?"
- """
- report = self.__populate_report(message)
-
- if report is None:
- self.__report_no_data('weather')
- return
-
- dialog = self.__select_condition_dialog(message, report, "storm")
- self.speak_dialog(dialog, report)
-
- # Handle: When will it rain again?
- @intent_handler(IntentBuilder("").require("When").optionally(
- "Next").require("Precipitation").optionally("Location").build())
- def handle_next_precipitation(self, message):
- report = self.__initialize_report(message)
-
- # Get a date from spoken request
- today, _ = self.__extract_datetime("today")
- when, _ = self.__extract_datetime(message.data.get('utterance'),
- lang=self.lang)
-
- # search the forecast for precipitation
- weathers = self.owm.daily_forecast(
- report['full_location'],
- report['lat'],
- report['lon'], 10).get_forecast()
-
- if weathers is None:
- self.__report_no_data('weather')
- return
-
- weathers = weathers.get_weathers()
- for weather in weathers:
-
- forecastDate = datetime.fromtimestamp(weather.get_reference_time())
-
- if when and when != today:
- # User asked about a specific date, is this it?
- if forecastDate.date() != when.date():
- continue
-
- rain = weather.get_rain()
- if rain and rain["all"] > 0:
- data = {
- "modifier": "",
- "precip": "rain",
- "day": self.__to_day(forecastDate, preface=True)
- }
- if rain["all"] < 10:
- data["modifier"] = self.__translate("light")
- elif rain["all"] > 20:
- data["modifier"] = self.__translate("heavy")
-
- self.speak_dialog("precipitation expected", data)
- return
-
- snow = weather.get_snow()
- if snow and snow["all"] > 0:
- data = {
- "modifier": "",
- "precip": "snow",
- "day": self.__to_day(forecastDate, preface=True)
- }
- if snow["all"] < 10:
- data["modifier"] = self.__translate("light")
- elif snow["all"] > 20:
- data["modifier"] = self.__translate("heavy")
-
- self.speak_dialog("precipitation expected", data)
- return
-
- self.speak_dialog("no precipitation expected", report)
-
- # Handle: How humid is it?
- @intent_handler(IntentBuilder("").require("Query").require("Humidity")
- .optionally("RelativeDay").optionally("Location").build())
- def handle_humidity(self, message):
- report = self.__initialize_report(message)
-
- when, _ = self.__extract_datetime(message.data.get('utterance'),
- lang=self.lang)
- today, _ = self.__extract_datetime("today")
- if when is None or when == today:
- weather = self.owm.weather_at_place(
- report['full_location'],
- report['lat'],
- report['lon']).get_weather()
- else:
- # Get forecast for that day
- weather = self.__get_forecast(
- when, report['full_location'], report['lat'], report['lon'])
-
- if weather is None:
- self.__report_no_data('weather')
- return
-
- if weather.get_humidity() == 0:
- self.speak_dialog("do not know")
- return
-
- value = self.translate('percentage.number',
- {'num': str(weather.get_humidity())})
- loc = message.data.get('Location')
- self.__report_condition(self.__translate("humidity"), value, when, loc)
-
- # Handle: How windy is it?
- @intent_handler(IntentBuilder("").require("Query").require("Windy")
- .optionally("Location").optionally("ConfirmQuery")
- .optionally("RelativeDay").build())
- def handle_windy(self, message):
- report = self.__initialize_report(message)
-
- when, _ = self.__extract_datetime(message.data.get('utterance'))
- today, _ = self.__extract_datetime("today")
- if when is None or when == today:
- weather = self.owm.weather_at_place(
- report['full_location'],
- report['lat'],
- report['lon']).get_weather()
- else:
- # Get forecast for that day
- weather = self.__get_forecast(
- when, report['full_location'], report['lat'], report['lon'])
-
- if weather is None:
- self.__report_no_data('weather')
- return
-
- if not weather or weather.get_wind() == 0:
- self.speak_dialog("do not know")
- return
-
- speed, dir, unit, strength = self.get_wind_speed(weather)
- if dir:
- dir = self.__translate(dir)
- value = self.__translate("wind.speed.dir",
- data={"dir": dir,
- "speed": nice_number(speed),
- "unit": unit})
- else:
- value = self.__translate("wind.speed",
- data={"speed": nice_number(speed),
- "unit": unit})
- loc = message.data.get('Location')
- self.__report_condition(self.__translate("winds"), value, when, loc)
- self.speak_dialog('wind.strength.' + strength)
-
- def get_wind_speed(self, weather):
- wind = weather.get_wind()
-
- speed = wind["speed"]
- # get speed
- if self.__get_speed_unit() == "mph":
- unit = self.__translate("miles per hour")
- speed_multiplier = 2.23694
- speed *= speed_multiplier
- else:
- unit = self.__translate("meters per second")
- speed_multiplier = 1
- speed = round(speed)
-
- if (speed / speed_multiplier) < 0:
- self.log.error("Wind speed below zero")
- if (speed / speed_multiplier) <= 2.2352:
- strength = "light"
- elif (speed / speed_multiplier) <= 6.7056:
- strength = "medium"
- else:
- strength = "hard"
-
- # get direction, convert compass degrees to named direction
- if "deg" in wind:
- deg = wind["deg"]
- if deg < 22.5:
- dir = "N"
- elif deg < 67.5:
- dir = "NE"
- elif deg < 112.5:
- dir = "E"
- elif deg < 157.5:
- dir = "SE"
- elif deg < 202.5:
- dir = "S"
- elif deg < 247.5:
- dir = "SW"
- elif deg < 292.5:
- dir = "W"
- elif deg < 337.5:
- dir = "NW"
- else:
- dir = "N"
- else:
- dir = None
-
- return speed, dir, unit, strength
-
- # Handle: When is the sunrise?
- @intent_handler(IntentBuilder("").one_of("Query", "When")
- .optionally("Location").require("Sunrise").build())
- def handle_sunrise(self, message):
- report = self.__initialize_report(message)
-
- when, _ = self.__extract_datetime(message.data.get('utterance'))
- today, _ = self.__extract_datetime("today")
- if when is None or when.date() == today.date():
- weather = self.owm.weather_at_place(
- report['full_location'],
- report['lat'],
- report['lon']).get_weather()
-
- if weather is None:
- self.__report_no_data('weather')
- return
- else:
- # Get forecast for that day
- # weather = self.__get_forecast(when, report['full_location'],
- # report['lat'], report['lon'])
-
- # There appears to be a bug in OWM, it can't extract the sunrise/
- # sunset from forecast objects. As of March 2018 OWM said it was
- # "in the roadmap". Just say "I don't know" for now
- weather = None
- if not weather or weather.get_humidity() == 0:
- self.speak_dialog("do not know")
- return
-
- # uses device tz so if not set (eg Mark 1) this is UTC.
- dtSunrise = datetime.fromtimestamp(weather.get_sunrise_time())
- if time.tzname == ("UTC", "UTC"):
- dtSunrise = self.__to_Local(dtSunrise.replace(tzinfo=pytz.utc))
- spoken_time = self.__nice_time(dtSunrise, use_ampm=True)
- self.speak_dialog('sunrise', {'time': spoken_time})
-
- # Handle: When is the sunset?
- @intent_handler(IntentBuilder("").one_of("Query", "When")
- .optionally("Location").require("Sunset").build())
- def handle_sunset(self, message):
- report = self.__initialize_report(message)
-
- when, _ = self.__extract_datetime(message.data.get('utterance'))
- today, _ = self.__extract_datetime("today")
- if when is None or when.date() == today.date():
- weather = self.owm.weather_at_place(
- report['full_location'],
- report['lat'],
- report['lon']).get_weather()
-
- if weather is None:
- self.__report_no_data('weather')
- return
- else:
- # Get forecast for that day
- # weather = self.__get_forecast(when, report['full_location'],
- # report['lat'], report['lon'])
-
- # There appears to be a bug in OWM, it can't extract the sunrise/
- # sunset from forecast objects. As of March 2018 OWM said it was
- # "in the roadmap". Just say "I don't know" for now
- weather = None
- if not weather or weather.get_humidity() == 0:
- self.speak_dialog("do not know")
- return
-
- # uses device tz so if not set (eg Mark 1) this is UTC.
- dtSunset = datetime.fromtimestamp(weather.get_sunset_time())
- if time.tzname == ("UTC", "UTC"):
- dtSunset = self.__to_Local(dtSunset.replace(tzinfo=pytz.utc))
- spoken_time = self.__nice_time(dtSunset, use_ampm=True)
- self.speak_dialog('sunset', {'time': spoken_time})
-
- def __get_location(self, message):
- """ Attempt to extract a location from the spoken phrase.
-
- If none is found return the default location instead.
-
- Arguments:
- message (Message): messagebus message
- Returns: tuple (lat, long, location string, pretty location)
- """
- try:
- location = message.data.get("Location", None) if message else None
- if location:
- return None, None, location, location
-
- location = self.location
-
- if isinstance(location, dict):
- lat = location["coordinate"]["latitude"]
- lon = location["coordinate"]["longitude"]
- city = location["city"]
- state = city["state"]
- return lat, lon, city["name"] + ", " + state["name"] + \
- ", " + state["country"]["name"], self.location_pretty
-
- return None
- except Exception:
- self.speak_dialog("location.not.found")
- raise LocationNotFoundError("Location not found")
-
- def __initialize_report(self, message):
- """ Creates a report base with location, unit. """
- lat, lon, location, pretty_location = self.__get_location(message)
- temp_unit = self.__get_requested_unit(message)
- return {
- 'lat': lat,
- 'lon': lon,
- 'location': pretty_location,
- 'full_location': location,
- 'scale': self.translate(temp_unit or self.__get_temperature_unit())
- }
-
- def __handle_typed(self, message, response_type):
- # Get a date from requests like "weather for next Tuesday"
- today, _ = self.__extract_datetime("today")
- when, _ = self.__extract_datetime(
- message.data.get('utterance'), lang=self.lang)
-
- report = self.__initialize_report(message)
- if when and when.date() != today.date():
- self.log.debug("Doing a forecast {} {}".format(today, when))
- return self.report_forecast(report, when,
- dialog=response_type)
- report = self.__populate_report(message)
- if report is None:
- return self.__report_no_data('weather')
-
- if report.get('time'):
- self.__report_weather("at.time", report, response_type)
- else:
- self.__report_weather('current', report, response_type)
- self.mark2_forecast(report)
-
- def __populate_report(self, message):
- unit = self.__get_requested_unit(message)
- # Get a date from requests like "weather for next Tuesday"
- today, _ = self.__extract_datetime('today', lang='en-us')
- when, _ = self.__extract_datetime(
- message.data.get('utterance'), lang=self.lang)
- when = when or today # Get todays date if None was found
- self.log.debug('extracted when: {}'.format(when))
-
- report = self.__initialize_report(message)
-
- # Check if user is asking for a specific time today
- if when.date() == today.date() and when.time() != today.time():
- self.log.info("Forecast for time: {}".format(when))
- return self.__populate_for_time(report, when, unit)
- # Check if user is asking for a specific day
- elif today.date() != when.date():
- # Doesn't seem to be hitable, safety?
- self.log.info("Forecast for: {} {}".format(today, when))
- return self.__populate_forecast(report, when, unit,
- preface_day=True)
- # Otherwise user is asking for weather right now
- else:
- self.log.info("Forecast for now")
- return self.__populate_current(report, unit)
-
- return None
-
- def __populate_for_time(self, report, when, unit=None):
- # TODO localize time to report location
- # Return None if report is None
- if report is None:
- return None
-
- three_hr_fcs = self.owm.three_hours_forecast(
- report['full_location'],
- report['lat'],
- report['lon'])
-
- if three_hr_fcs is None:
- return None
-
- if not three_hr_fcs:
- return None
- earliest_fc = three_hr_fcs.get_forecast().get_weathers()[0]
- if when < earliest_fc.get_reference_time(timeformat='date'):
- fc_weather = earliest_fc
- else:
- try:
- fc_weather = three_hr_fcs.get_weather_at(when)
- except Exception as e:
- # fc_weather = three_hr_fcs.get_forecast().get_weathers()[0]
- self.log.error("Error: {0}".format(e))
- return None
-
- report['condition'] = fc_weather.get_detailed_status()
- report['condition_cat'] = fc_weather.get_status()
- report['icon'] = fc_weather.get_weather_icon_name()
- report['temp'] = self.__get_temperature(fc_weather, 'temp')
- # Min and Max temps not available in 3hr forecast
- report['temp_min'] = None
- report['temp_max'] = None
- report['humidity'] = self.translate('percentage.number',
- {'num': fc_weather.get_humidity()})
- report['wind'] = self.get_wind_speed(fc_weather)[0]
-
- fc_time = fc_weather.get_reference_time(timeformat='date')
- report['time'] = self.__to_time_period(self.__to_Local(fc_time))
- report['day'] = self.__to_day(when, preface=True)
-
- return report
-
- def __populate_current(self, report, unit=None):
- # Return None if report is None
- if report is None:
- return None
-
- # Get current conditions
- currentWeather = self.owm.weather_at_place(
- report['full_location'], report['lat'],
- report['lon']).get_weather()
-
- if currentWeather is None:
- return None
-
- today = currentWeather.get_reference_time(timeformat='date')
- self.log.debug("Populating report for now: {}".format(today))
-
- # Get forecast for the day
- # can get 'min', 'max', 'eve', 'morn', 'night', 'day'
- # Set time to 12 instead of 00 to accomodate for timezones
- forecastWeather = self.__get_forecast(
- self.__to_Local(today),
- report['full_location'],
- report['lat'],
- report['lon'])
-
- if forecastWeather is None:
- return None
-
- # Change encoding of the localized report to utf8 if needed
- condition = currentWeather.get_detailed_status()
- if self.owm.encoding != 'utf8':
- condition.encode(self.owm.encoding).decode('utf8')
- report['condition'] = self.__translate(condition)
- report['condition_cat'] = currentWeather.get_status()
-
- report['icon'] = currentWeather.get_weather_icon_name()
- report['temp'] = self.__get_temperature(currentWeather, 'temp',
- unit)
- report['temp_min'] = self.__get_temperature(forecastWeather, 'min',
- unit)
- report['temp_max'] = self.__get_temperature(forecastWeather, 'max',
- unit)
- report['humidity'] = self.translate(
- 'percentage.number', {'num': forecastWeather.get_humidity()})
-
- wind = self.get_wind_speed(forecastWeather)
- report['wind'] = "{} {}".format(wind[0], wind[1] or "")
- today, _ = self.__extract_datetime('today', lang='en-us')
- report['day'] = self.__to_day(today, preface=True)
-
- return report
-
- def __populate_forecast(self, report, when, unit=None, preface_day=False):
- """ Populate the report and return it.
-
- Arguments:
- report (dict): report base
- when : date for report
- unit: Unit type to use when presenting
-
- Returns: None if no report available otherwise dict with weather info
- """
- self.log.debug("Populating forecast report for: {}".format(when))
-
- # Return None if report is None
- if report is None:
- return None
-
- forecast_weather = self.__get_forecast(
- when, report['full_location'], report['lat'], report['lon'])
-
- if forecast_weather is None:
- return None # No forecast available
-
- # This converts a status like "sky is clear" to new text and tense,
- # because you don't want: "Friday it will be 82 and the sky is clear",
- # it should be 'Friday it will be 82 and the sky will be clear'
- # or just 'Friday it will be 82 and clear.
- # TODO: Run off of status IDs instead of text `.get_weather_code()`?
- report['condition'] = self.__translate(
- forecast_weather.get_detailed_status(), True)
- report['condition_cat'] = forecast_weather.get_status()
-
- report['icon'] = forecast_weather.get_weather_icon_name()
- # Can get temps for 'min', 'max', 'eve', 'morn', 'night', 'day'
- report['temp'] = self.__get_temperature(forecast_weather, 'day', unit)
- report['temp_min'] = self.__get_temperature(forecast_weather, 'min',
- unit)
- report['temp_max'] = self.__get_temperature(forecast_weather, 'max',
- unit)
- report['humidity'] = self.translate(
- 'percentage.number', {'num': forecast_weather.get_humidity()})
- report['wind'] = self.get_wind_speed(forecast_weather)[0]
- report['day'] = self.__to_day(when, preface_day)
-
- return report
-
- def __report_no_data(self, report_type, data=None):
- """ Do processes when Report Processes malfunction
- Arguments:
- report_type (str): Report type where the error was from
- i.e. 'weather', 'location'
- data (dict): Needed data for dialog on weather error processing
Returns:
- None
+ Dialog for the temperature ranges over the coming week.
"""
- if report_type == 'weather':
- if data is None:
- self.speak_dialog("cant.get.forecast")
- else:
- self.speak_dialog("no.forecast", data)
- elif report_type == 'location':
- self.speak_dialog('location.not.found')
+ dialog = WeeklyDialog(intent_data, self.weather_config, forecast)
+ dialog.build_temperature_dialog()
- def __select_condition_dialog(self, message, report, noun, exp=None):
- """ Select the relevant dialog file for condition based reports.
-
- A condition can for example be "snow" or "rain".
+ return dialog
- Arguments:
- message (obj): message from user
- report (dict): weather report data
- noun (string): name of condition eg snow
- exp (string): condition as verb or adjective eg Snowing
+ def _display_multi_day_forecast(
+ self, forecast: List[DailyWeather], intent_data: WeatherIntent
+ ):
+ """Display daily forecast data on devices that support the GUI.
- Returns:
- dialog (string): name of dialog file
+ Args:
+ forecast: daily forecasts to display
+ intent_data: Parsed intent data
"""
- if report is None:
- # Empty report most likely caused by location not found
- return 'do not know'
-
- if exp is None:
- exp = noun
- alternative_voc = '{}Alternatives'.format(noun.capitalize())
- if self.voc_match(report['condition'], exp.capitalize()):
- dialog = 'affirmative.condition'
- elif report.get('time'):
- # Standard response for time based dialog eg 'evening'
- if self.voc_match(report['condition'], alternative_voc):
- dialog = 'cond.alternative'
- else:
- dialog = 'no.cond.predicted'
- elif self.voc_match(report['condition'], alternative_voc):
- dialog = '{}.alternative'.format(exp.lower())
+ if self.platform == MARK_II:
+ self._display_multi_day_mark_ii(forecast, intent_data)
else:
- dialog = 'no.{}.predicted'.format(noun.lower())
-
- if "Location" not in message.data:
- dialog = 'local.' + dialog
- if report.get('day'):
- dialog = 'forecast.' + dialog
- if (report.get('time') and
- ('at.time.' + dialog) in self.dialog_renderer.templates):
- dialog = 'at.time.' + dialog
- return dialog
+ self._display_multi_day_scalable(forecast)
- def report_forecast(self, report, when, dialog='weather', unit=None,
- preface_day=True):
- """ Speak forecast for specific day.
-
- Arguments:
- report (dict): report base
- when : date for report
- dialog (str): dialog type, defaults to 'weather'
- unit: Unit type to use when presenting
- preface_day (bool): if appropriate day preface should be added
- eg "on Tuesday" but NOT "on tomorrow"
- """
- report = self.__populate_forecast(report, when, unit, preface_day)
- if report is None:
- data = {'day': self.__to_day(when, preface_day)}
- self.__report_no_data('weather', data)
- return
-
- self.__report_weather('forecast', report, rtype=dialog)
-
- def report_multiday_forecast(self, report, when=None,
- num_days=3, set_days=None, dialog='weather',
- unit=None, preface_day=True):
- """ Speak forecast for multiple sequential days.
-
- Arguments:
- report (dict): report base
- when (datetime): date of first day for report, defaults to today
- num_days (int): number of days to report, defaults to 3
- set_days (list(datetime)): list of specific days to report
- dialog (str): dialog type, defaults to 'weather'
- unit: Unit type to use when presenting, defaults to user preference
- preface_day (bool): if appropriate day preface should be added
- eg "on Tuesday" but NOT "on tomorrow"
- """
+ def _display_multi_day_mark_ii(
+ self, forecast: List[DailyWeather], intent_data: WeatherIntent
+ ):
+ """Display daily forecast data on a Mark II.
- today, _ = self.__extract_datetime('today')
- if when is None:
- when = today
+ The Mark II supports displaying four days of a forecast at a time.
- if set_days:
- days = set_days
- else:
- days = [when + timedelta(days=i) for i in range(num_days)]
-
- no_report = list()
- for day in days:
- if day == today:
- self.__populate_current(report, day)
- report['day'] = self.__to_day(day, preface_day)
- self.__report_weather('forecast', report, rtype=dialog)
- else:
- report = self.__populate_forecast(report, day, unit,
- preface_day)
- if report is None:
- no_report.append(self.__to_day(day, False))
- continue
- self.__report_weather('forecast', report, rtype=dialog)
-
- if no_report:
- dates = join_list(no_report, 'and')
- dates = self.translate('on') + ' ' + dates
- data = {'day': dates}
- self.__report_no_data('weather', data)
-
- def __report_weather(self, timeframe, report, rtype='weather',
- separate_min_max=False):
- """ Report the weather verbally and visually.
-
- Produces an utterance based on the timeframe and rtype parameters.
- The report also provides location context. The dialog file used will
- be:
- "timeframe(.local).rtype"
-
- Arguments:
- timeframe (str): 'current' or 'future'.
- report (dict): Dictionary with report information (temperatures
- and such.
- rtype (str): report type, defaults to 'weather'
- separate_min_max (bool): a separate dialog for min max temperatures
- will be output if True (default: False)
+ Args:
+ forecast: daily forecasts to display
+ intent_data: Parsed intent data
"""
-
- # Convert code to matching weather icon on Mark 1
- if report['location']:
- report['location'] = self.owm.location_translations.get(
- report['location'], report['location'])
- weather_code = str(report['icon'])
- img_code = self.CODES[weather_code]
-
- # Display info on a screen
- # Mark-2
- self.gui["current"] = report["temp"]
- self.gui["min"] = report["temp_min"]
- self.gui["max"] = report["temp_max"]
- self.gui["location"] = report["full_location"].replace(', ', '\n')
- self.gui["condition"] = report["condition"]
- self.gui["icon"] = report["icon"]
- self.gui["weathercode"] = img_code
- self.gui["humidity"] = report.get("humidity", "--")
- self.gui["wind"] = report.get("wind", "--")
- self.gui.show_pages(["weather.qml", "highlow.qml",
- "forecast1.qml", "forecast2.qml"])
- # Mark-1
- self.enclosure.deactivate_mouth_events()
- self.enclosure.weather_display(img_code, report['temp'])
-
- dialog_name = timeframe
- if report['location'] == self.location_pretty:
- dialog_name += ".local"
- dialog_name += "." + rtype
- self.log.debug("Dialog: " + dialog_name)
- self.speak_dialog(dialog_name, report)
-
- # Just show the icons while still speaking
- mycroft.audio.wait_while_speaking()
-
- # Speak the high and low temperatures
- if separate_min_max:
- self.speak_dialog('min.max', report)
- self.gui.show_page("highlow.qml")
- mycroft.audio.wait_while_speaking()
-
- self.enclosure.activate_mouth_events()
- self.enclosure.mouth_reset()
-
- def __report_condition(self, name, value, when, location=None):
- # Report a specific value
- data = {
- "condition": name,
- "value": value,
- }
- report_type = "report.condition"
- today, _ = self.__extract_datetime("today")
- if when and when.date() != today.date():
- data["day"] = self.__to_day(when, preface=True)
- report_type += ".future"
- if location:
- data["location"] = location
- report_type += ".at.location"
- self.speak_dialog(report_type, data)
-
- def __get_forecast(self, when, location, lat, lon):
- """ Get a forecast for the given time and location.
-
- Arguments:
- when (datetime): Local datetime for report
- location: location
- lat: Latitude for report
- lon: Longitude for report
+ page_name = "daily_mark_ii.qml"
+ daily_forecast = []
+ for day in forecast:
+ daily_forecast.append(
+ dict(
+ weatherCondition=day.condition.image,
+ day=day.date_time.strftime("%a"),
+ highTemperature=day.temperature.high,
+ lowTemperature=day.temperature.low,
+ )
+ )
+ self.gui.clear()
+ self.gui["dailyForecast"] = dict(days=daily_forecast[:4])
+ self.gui["weatherLocation"] = self._build_display_location(intent_data)
+ self.gui.show_page(page_name)
+ if len(forecast) > 4:
+ sleep(15)
+ self.gui.clear()
+ self.gui["dailyForecast"] = dict(days=daily_forecast[4:])
+ self.gui.show_page(page_name)
+
+ def _display_multi_day_scalable(self, forecast: List[DailyWeather]):
+ """Display daily forecast data on GUI devices other than the Mark II.
+
+ The generic layout supports displaying two days of a forecast at a time.
+
+ Args:
+ forecast: daily forecasts to display
"""
+ page_one_name = "daily_1_scalable.qml"
+ page_two_name = page_one_name.replace("1", "2")
+ display_data = []
+ for day_number, day in enumerate(forecast):
+ if day_number == 4:
+ break
+ display_data.append(
+ dict(
+ weatherCondition=day.condition.animation,
+ highTemperature=day.temperature.high,
+ lowTemperature=day.temperature.low,
+ date=day.date_time.strftime("%a"),
+ )
+ )
+ self.gui["forecast"] = dict(first=display_data[:2], second=display_data[2:])
+ self.gui.show_page(page_one_name)
+ sleep(5)
+ self.gui.show_page(page_two_name)
+
+ def _report_temperature(self, message: Message, temperature_type: str = None):
+ """Handles all requests for a temperature.
+
+ Args:
+ message: Message Bus event information from the intent parser
+ temperature_type: current, high or low temperature
+ """
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ intent_weather = weather.get_weather_for_intent(intent_data)
+ dialog_args = intent_data, self.weather_config, intent_weather
+ dialog = get_dialog_for_timeframe(intent_data.timeframe, dialog_args)
+ dialog.build_temperature_dialog(temperature_type)
+ self._speak_weather(dialog)
+
+ def _report_weather_condition(self, message: Message, condition: str):
+ """Handles all requests for a specific weather condition.
+
+ Args:
+ message: Message Bus event information from the intent parser
+ condition: the weather condition specified by the user
+ """
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ intent_weather = weather.get_weather_for_intent(intent_data)
+ dialog = self._build_condition_dialog(
+ intent_weather, intent_data, condition
+ )
+ self._speak_weather(dialog)
+
+ def _build_condition_dialog(
+ self, weather, intent_data: WeatherIntent, condition: str
+ ):
+ """Builds a dialog for the requested weather condition.
+
+ Args:
+ weather: Current, hourly or daily weather forecast
+ intent_data: Parsed intent data
+ condition: weather condition requested by the user
+ """
+ dialog_args = intent_data, self.weather_config, weather
+ dialog = get_dialog_for_timeframe(intent_data.timeframe, dialog_args)
+ intent_match = self.voc_match(weather.condition.category.lower(), condition)
+ dialog.build_condition_dialog(intent_match)
+ dialog.data.update(condition=self.translate(weather.condition.description))
- # search for the requested date in the returned forecast data
- forecasts = self.owm.daily_forecast(location, lat, lon, limit=14)
- forecasts = forecasts.get_forecast()
- for weather in forecasts.get_weathers():
- forecastDate = weather.get_reference_time("date")
- if forecastDate.date() == when.date():
- # found the right day, now format up the results
- return weather
-
- # No forecast for the given day
- return None
+ return dialog
- def __get_requested_unit(self, message):
- """ Get selected unit from message.
+ def _report_wind(self, message: Message):
+ """Handles all requests for a wind conditions.
- Arguments:
- message (Message): messagebus message from intent service
+ Args:
+ message: Message Bus event information from the intent parser
+ """
+ intent_data = self._get_intent_data(message)
+ weather = self._get_weather(intent_data)
+ if weather is not None:
+ intent_weather = weather.get_weather_for_intent(intent_data)
+ intent_weather.wind_direction = self.translate(
+ intent_weather.wind_direction
+ )
+ dialog_args = intent_data, self.weather_config, intent_weather
+ dialog = get_dialog_for_timeframe(intent_data.timeframe, dialog_args)
+ dialog.build_wind_dialog()
+ self._speak_weather(dialog)
+
+ def _get_intent_data(self, message: Message) -> WeatherIntent:
+ """Parse the intent data from the message into data used in the skill.
+
+ Args:
+ message: Message Bus event information from the intent parser
Returns:
- 'fahrenheit', 'celsius' or None
+ parsed information about the intent
"""
- if message and message.data and 'Unit' in message.data:
- if self.voc_match(message.data['Unit'], 'Fahrenheit'):
- return 'fahrenheit'
- else:
- return 'celsius'
+ intent_data = None
+ try:
+ intent_data = WeatherIntent(message, self.lang)
+ except ValueError:
+ self.speak_dialog("cant.get.forecast")
else:
- return None
+ if self.voc_match(intent_data.utterance, "relative-time"):
+ intent_data.timeframe = HOURLY
+ elif self.voc_match(intent_data.utterance, "later"):
+ intent_data.timeframe = HOURLY
+ elif self.voc_match(intent_data.utterance, "relative-day"):
+ if not self.voc_match(intent_data.utterance, "today"):
+ intent_data.timeframe = DAILY
- def concat_dialog(self, current, dialog, data=None):
- return current + " " + self.translate(dialog, data)
+ return intent_data
- def __get_seqs_from_list(self, nums):
- """Get lists of sequential numbers from list.
+ def _get_weather(self, intent_data: WeatherIntent) -> WeatherReport:
+ """Call the Open Weather Map One Call API to get weather information
- Arguments:
- nums (list): list of int eg indices
+ Args:
+ intent_data: Parsed intent data
Returns:
- None if no sequential numbers found
- seq_nums (list[list]): list of sequence lists
+ An object representing the data returned by the API
"""
- current_seq, seq_nums = [], []
- seq_active = False
- for idx, day in enumerate(nums):
- if idx+1 < len(nums) and nums[idx+1] == (day + 1):
- current_seq.append(day)
- seq_active = True
- elif seq_active:
- # last day in sequence
- current_seq.append(day)
- seq_nums.append(current_seq.copy())
- current_seq = []
- seq_active = False
-
- # if len(seq_nums) == 0:
- # return None
- return seq_nums
-
- def __get_speed_unit(self):
- """ Get speed unit based on config setting.
-
- Config setting of 'metric' will return "meters_sec", otherwise 'mph'
-
- Returns: (str) 'meters_sec' or 'mph'
+ weather = None
+ if intent_data is not None:
+ try:
+ latitude, longitude = self._determine_weather_location(intent_data)
+ weather = self.weather_api.get_weather_for_coordinates(
+ self.config_core.get("system_unit"), latitude, longitude
+ )
+ except HTTPError as api_error:
+ self.log.exception("Weather API failure")
+ self._handle_api_error(api_error)
+ except LocationNotFoundError:
+ self.log.exception("City not found.")
+ self.speak_dialog(
+ "location-not-found", data=dict(location=intent_data.location)
+ )
+ except Exception:
+ self.log.exception("Unexpected error retrieving weather")
+ self.speak_dialog("cant-get-forecast")
+
+ return weather
+
+ def _handle_api_error(self, exception: HTTPError):
+ """Communicate an error condition to the user.
+
+ Args:
+ exception: the HTTPError returned by the API call
"""
- system_unit = self.config_core.get('system_unit')
- return system_unit == "metric" and "meters_sec" or "mph"
+ if exception.response.status_code == 401:
+ self.bus.emit(Message("mycroft.not.paired"))
+ else:
+ self.speak_dialog("cant.get.forecast")
- def __get_temperature_unit(self):
- """ Get temperature unit from config and skill settings.
+ def _determine_weather_location(
+ self, intent_data: WeatherIntent
+ ) -> Tuple[float, float]:
+ """Determine latitude and longitude using the location data in the intent.
- Config setting of 'metric' implies celsius for unit
+ Args:
+ intent_data: Parsed intent data
- Returns: (str) "celcius" or "fahrenheit"
+ Returns
+ latitude and longitude of the location
"""
- system_unit = self.config_core.get('system_unit')
- override = self.settings.get("units", "")
- if override:
- if override[0].lower() == "f":
- return "fahrenheit"
- elif override[0].lower() == "c":
- return "celsius"
-
- return system_unit == "metric" and "celsius" or "fahrenheit"
-
- def __get_temperature(self, weather, key, unit=None):
- # Extract one of the temperatures from the weather data.
- # Typically it has: 'temp', 'min', 'max', 'morn', 'day', 'night'
- try:
- unit = unit or self.__get_temperature_unit()
- # fallback to general temperature if missing
- temp = weather.get_temperature(unit)[key]
- if temp is not None:
- return str(int(round(temp)))
- else:
- return ''
- except Exception as e:
- self.log.warning('No temperature available ({})'.format(repr(e)))
- return ''
-
- def __api_error(self, e):
- if isinstance(e, LocationNotFoundError):
- self.speak_dialog('location.not.found')
- elif e.response.status_code == 401:
- from mycroft import Message
- self.bus.emit(Message("mycroft.not.paired"))
+ if intent_data.location is None:
+ latitude = self.weather_config.latitude
+ longitude = self.weather_config.longitude
else:
- self.__report_no_data('weather')
+ latitude = intent_data.geolocation["latitude"]
+ longitude = intent_data.geolocation["longitude"]
- def __to_day(self, when, preface=False):
- """ Provide date in speakable form
+ return latitude, longitude
- Arguments:
- when (datetime)
- preface (bool): if appropriate preface should be included
- eg "on Monday" but NOT "on tomorrow"
- Returns:
- string: the speakable date text
- """
- now = datetime.now()
- speakable_date = nice_date(when, lang=self.lang, now=now)
- # Test if speakable_date is a relative reference eg "tomorrow"
- days_diff = (when.date() - now.date()).days
- if preface and (-1 > days_diff or days_diff > 1):
- speakable_date = "{} {}".format(self.translate('on.date'),
- speakable_date)
- # If day is less than a week in advance, just say day of week.
- if days_diff <= 6:
- speakable_date = speakable_date.split(',')[0]
- return speakable_date
-
- def __to_Local(self, when):
- try:
- # First try with modern mycroft.util.time functions
- return to_local(when)
- except Exception:
- # Fallback to the old pytz code
- if not when.tzinfo:
- when = when.replace(tzinfo=pytz.utc)
- timezone = pytz.timezone(self.location["timezone"]["code"])
- return when.astimezone(timezone)
-
- def __to_time_period(self, when):
- # Translate a specific time '9am' to period of the day 'morning'
- hour = when.time().hour
- period = None
- if hour >= 1 and hour < 5:
- period = "early morning"
- if hour >= 5 and hour < 12:
- period = "morning"
- if hour >= 12 and hour < 17:
- period = "afternoon"
- if hour >= 17 and hour < 20:
- period = "evening"
- if hour >= 20 or hour < 1:
- period = "overnight"
- if period is None:
- self.log.error("Unable to parse time as a period of day")
- return period
-
- # Suggestion TODO: Add a parameter to extract_datetime to add a default Timezone
- def __extract_datetime(self, text, anchorDate=None, lang=None, default_time=None):
- # Change timezone returned by extract_datetime from Local to UTC
- extracted_dt = extract_datetime(text, anchorDate, lang, default_time)
- if extracted_dt is None:
- # allow calls to unpack values even if None returned.
- return (None, None)
- when, text = extracted_dt
- return to_utc(when), text
-
- def __translate(self, condition, future=False, data=None):
- # behaviour of method dialog_renderer.render(...) has changed - instead
- # of exception when given template is not found now simply the
- # templatename is returned!?!
- if (future and
- (condition + ".future") in self.dialog_renderer.templates):
- return self.translate(condition + ".future", data)
- if condition in self.dialog_renderer.templates:
- return self.translate(condition, data)
- else:
- return condition
+ def _speak_weather(self, dialog):
+ """Instruct device to speak the contents of the specified dialog.
- def __nice_time(self, dt, lang="en-us", speech=True, use_24hour=False,
- use_ampm=False):
- # compatibility wrapper for nice_time
- nt_supported_languages = ['en', 'es', 'it', 'fr', 'de',
- 'hu', 'nl', 'da']
- if not (lang[0:2] in nt_supported_languages):
- lang = "en-us"
- return nice_time(dt, lang, speech, use_24hour, use_ampm)
+ :param dialog: the dialog that will be spoken
+ """
+ self.log.info("Speaking dialog: " + dialog.name)
+ self.speak_dialog(dialog.name, dialog.data, wait=True)
def create_skill():
+ """Boilerplate to invoke the weather skill."""
return WeatherSkill()
diff --git a/dialog/ca-es/at.time.forecast.affirmative.condition.dialog b/dialog/ca-es/at.time.forecast.affirmative.condition.dialog
deleted file mode 100644
index bdd1461c..00000000
--- a/dialog/ca-es/at.time.forecast.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Resposta afirmativa a preguntes com "nevarà demà a la tarda a París"
-Sí, la previsió de {time} suggereix {condition} en {location} el {day}
-Sí, la previsió de {time} anuncia {condition} a {location} el {day}
diff --git a/dialog/ca-es/at.time.forecast.cond.alternative.dialog b/dialog/ca-es/at.time.forecast.cond.alternative.dialog
deleted file mode 100644
index f0bbbba6..00000000
--- a/dialog/ca-es/at.time.forecast.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informar que es produirà una alternativa per aclarir els cels en el moment especificat
-No, el pronòstic de {time} per a {day} anuncia {condition} a {location}
-No sembla que sigui així, la previsió del temps de {time} per a {day} en {location} serà {condition}
diff --git a/dialog/ca-es/at.time.forecast.local.affirmative.condition.dialog b/dialog/ca-es/at.time.forecast.local.affirmative.condition.dialog
deleted file mode 100644
index 467b56ca..00000000
--- a/dialog/ca-es/at.time.forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Resposta afirmativa a preguntes com "nevarà demà"
-Sí, s'espera {condition} segons la previsió de {time} per a {day}
-Sí, el pronòstic de {time} anuncia {condition} per a {day}
diff --git a/dialog/ca-es/at.time.forecast.local.cond.alternative.dialog b/dialog/ca-es/at.time.forecast.local.cond.alternative.dialog
deleted file mode 100644
index b70c73be..00000000
--- a/dialog/ca-es/at.time.forecast.local.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió de {time} per a {day} indica {condition}
-No sembla que sigui així, la previsió meterològica per a {day} a {time} suggereix que serà {condition}
diff --git a/dialog/ca-es/at.time.forecast.local.no.cond.predicted.dialog b/dialog/ca-es/at.time.forecast.local.no.cond.predicted.dialog
deleted file mode 100644
index 77c3cd39..00000000
--- a/dialog/ca-es/at.time.forecast.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# Quan l'usuari pregunta si és una condició però no ho és
-No, la previsió de {time} per a {day} indica {condition}
diff --git a/dialog/ca-es/at.time.forecast.no.cond.predicted.dialog b/dialog/ca-es/at.time.forecast.no.cond.predicted.dialog
deleted file mode 100644
index 41c522d8..00000000
--- a/dialog/ca-es/at.time.forecast.no.cond.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si és una condició però no ho és
-No, la previsió de {time} a {location} suggereix que serà {condition}
-No sembla que sigui així, la previsió de {time} a {location} suggereix que farà {condition}
diff --git a/dialog/ca-es/at.time.local.high.temperature.dialog b/dialog/ca-es/at.time.local.high.temperature.dialog
deleted file mode 100644
index 00c219f8..00000000
--- a/dialog/ca-es/at.time.local.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-A les {time} la temperatura serà tan alta com {temp} graus
-a les {time}, s'elevarà a {temp} graus
diff --git a/dialog/ca-es/at.time.local.low.temperature.dialog b/dialog/ca-es/at.time.local.low.temperature.dialog
deleted file mode 100644
index ebe4bcc6..00000000
--- a/dialog/ca-es/at.time.local.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-A les {time} serà tan baixa com {temp} graus
-{time}, es reduirà a {temp} graus
diff --git a/dialog/ca-es/at.time.local.weather.dialog b/dialog/ca-es/at.time.local.weather.dialog
deleted file mode 100644
index a06c66e3..00000000
--- a/dialog/ca-es/at.time.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Farà {condition}, amb temperatures properes a {temp} en el {time}
-{time}, farà {condition} i entorn de {temp} graus
-{time} farà {condition} i {temp} graus
-{time}, hi haurà {temp} graus amb {condition}
diff --git a/dialog/ca-es/clear.alternative.dialog b/dialog/ca-es/clear.alternative.dialog
deleted file mode 100644
index 5834454d..00000000
--- a/dialog/ca-es/clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió a {location} és {condition}
-Sembla que hi haurà {condition} a {location}
-Es probable que {condition} a {location}
diff --git a/dialog/ca-es/clear.future.dialog b/dialog/ca-es/clear.future.dialog
deleted file mode 100644
index 2789b6da..00000000
--- a/dialog/ca-es/clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-un cel clar
diff --git a/dialog/ca-es/cloudy.alternative.dialog b/dialog/ca-es/cloudy.alternative.dialog
deleted file mode 100644
index 401f7485..00000000
--- a/dialog/ca-es/cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió meteorològica és {condition}
-No hauria d'estar ennuvolat, sembla que farà {condition}
-No sembla que sigui així, hi ha possibilitats que farà {condition}
diff --git a/dialog/ca-es/condition.category.value b/dialog/ca-es/condition.category.value
deleted file mode 100644
index fe43ad83..00000000
--- a/dialog/ca-es/condition.category.value
+++ /dev/null
@@ -1,15 +0,0 @@
-Núvols, ennuvolat
-Clar, un cel ras
-Tempesta, tempestuós
-Plugim, plovisquejant
-pluja|plovent
-neu|nevada|nevant
-Boirina, boirós
-Fum, amb fum
-Calitja, boirina
-Pols,polsegós
-Boira,boirós
-Sorra,sorrenc
-Cendra,ennuvolat amb possible cendra volcànica
-Ratxa de vent,tempestuós
-Tornado,tempestat amb un possible tornado
diff --git a/dialog/ca-es/current.hot.dialog b/dialog/ca-es/current.hot.dialog
deleted file mode 100644
index 4aa7c9a7..00000000
--- a/dialog/ca-es/current.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Fa {temp} graus {scale} a {location}, bona temperatura segons el meu sistema operatiu.
-Fa {temp} graus en {location} que per a una I.A. fa bo.
diff --git a/dialog/ca-es/current.local.cold.dialog b/dialog/ca-es/current.local.cold.dialog
deleted file mode 100644
index cd89c7d0..00000000
--- a/dialog/ca-es/current.local.cold.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-actualment fa {temp}, bona temperatura segons el meu sistema
-Fa {temp}, temperatura agradable per una I.A.
diff --git a/dialog/ca-es/current.local.hot.dialog b/dialog/ca-es/current.local.hot.dialog
deleted file mode 100644
index 55b25980..00000000
--- a/dialog/ca-es/current.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Està dins la meva temperatura operativa, actualment hi ha {temp} graus
-Hi ha {temp} graus, bastant agradable per a una IA
diff --git a/dialog/ca-es/do not know.dialog b/dialog/ca-es/do not know.dialog
deleted file mode 100644
index d22d7b83..00000000
--- a/dialog/ca-es/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Em temo que no ho sé
-No tinc aquesta informació
diff --git a/dialog/ca-es/fog.alternative.dialog b/dialog/ca-es/fog.alternative.dialog
deleted file mode 100644
index f3523516..00000000
--- a/dialog/ca-es/fog.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-No, la previsió a {location} és {condition}
-Es probable que {condition} a {location}
-# S'informa que es produirà una alternativa a la boira en la ubicació
-Sembla que hi haurà {condition} a {location}
diff --git a/dialog/ca-es/forecast.clear.alternative.dialog b/dialog/ca-es/forecast.clear.alternative.dialog
deleted file mode 100644
index 33ad44a4..00000000
--- a/dialog/ca-es/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa a la pluja
-No, però la previsió de {day} a {location} és {condition}
-{day} no hi ha cap pluja prevista el {day} per a {location}, però sembla que hi haurà {condition}
diff --git a/dialog/ca-es/forecast.cloudy.alternative.dialog b/dialog/ca-es/forecast.cloudy.alternative.dialog
deleted file mode 100644
index c550fc71..00000000
--- a/dialog/ca-es/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-# No, la previsió de {day} a {location} és {condition}
-# No hauria d'estar ennuvolat a {location} el {day}. Sembla que hi haurà {condition}
-No sembla que sigui així, hi ha possibilitats que farà {condition} a {location} el {day}
diff --git a/dialog/ca-es/forecast.foggy.alternative.dialog b/dialog/ca-es/forecast.foggy.alternative.dialog
deleted file mode 100644
index 72cdb7b0..00000000
--- a/dialog/ca-es/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió el {day} per a {location} és de {condition}
-Sembla que hi haurà {condition} a {location} el {day}
-Hi ha possibilitats que {day} faci {condition} a {location}
diff --git a/dialog/ca-es/forecast.hot.dialog b/dialog/ca-es/forecast.hot.dialog
deleted file mode 100644
index 7bb93b65..00000000
--- a/dialog/ca-es/forecast.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-El {day} hi haurà {temp} graus a {location}, bastant bé per a una I.A.
-El {day} la temperatura serà de {temp} a {location}, bona per a les meves especificacions
diff --git a/dialog/ca-es/forecast.local.clear.alternative.dialog b/dialog/ca-es/forecast.local.clear.alternative.dialog
deleted file mode 100644
index 268e1a27..00000000
--- a/dialog/ca-es/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió de {day} és {condition}
-El {day} sembla que hi haurà {condition}
diff --git a/dialog/ca-es/forecast.local.cloudy.alternative.dialog b/dialog/ca-es/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index f813d739..00000000
--- a/dialog/ca-es/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió de {day} és {condition}
-No hauria d'estar ennuvolat, sembla que farà {condition} el {day}
-No sembla que sigui així, hi ha possibilitats que farà {condition} el {day}
diff --git a/dialog/ca-es/forecast.local.foggy.alternative.dialog b/dialog/ca-es/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 8feea765..00000000
--- a/dialog/ca-es/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió de {day} és {condition}
-Sembla que hi haurà {condition} el {day}
-Hi ha possibilitats que {day} faci {condition}
diff --git a/dialog/ca-es/forecast.local.hot.dialog b/dialog/ca-es/forecast.local.hot.dialog
deleted file mode 100644
index b9e1f99d..00000000
--- a/dialog/ca-es/forecast.local.hot.dialog
+++ /dev/null
@@ -1 +0,0 @@
-El {day} hi haurà {temp}, bastant agradable per a una IA
diff --git a/dialog/ca-es/forecast.local.no.clear.predicted.dialog b/dialog/ca-es/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 2bdd0bf4..00000000
--- a/dialog/ca-es/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si és clar, però es preveu un alternativa
-Ho sento, la previsió no prediu condicions clares per al {day}
-{day} no és probable que estigui clar
diff --git a/dialog/ca-es/forecast.local.no.cloudy.predicted.dialog b/dialog/ca-es/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index ab8ba7e1..00000000
--- a/dialog/ca-es/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Quan l'usuari pregunta si farà núvol però no ho farà
-No sembla que vagi a estar ennuvolat {day}
-Es preveuen cels clars {day}
-S'espera un cel clar {day}
-No hauria d'estar ennuvolat {day}
diff --git a/dialog/ca-es/forecast.local.no.fog.predicted.dialog b/dialog/ca-es/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index 98ef337a..00000000
--- a/dialog/ca-es/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si fa boira, però no es preveu neu ni cap alternativa
-{day} la visibilitat hauria de ser bona
-No es preveu boira {day}
diff --git a/dialog/ca-es/forecast.local.no.rain.predicted.dialog b/dialog/ca-es/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index 0cf0d56f..00000000
--- a/dialog/ca-es/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu pluja ni cap alternativa
-No es preveu cap pluja {day}
-No hauria de ploure {day}
-No necessitareu un paraigua {day}
diff --git a/dialog/ca-es/forecast.local.no.snow.predicted.dialog b/dialog/ca-es/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index 90874b2e..00000000
--- a/dialog/ca-es/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si neva, però no neva ni es preveu alternativa
-No es preveu neu {day}
-No nevarà {day}
diff --git a/dialog/ca-es/forecast.local.no.storm.predicted.dialog b/dialog/ca-es/forecast.local.no.storm.predicted.dialog
deleted file mode 100644
index a358d563..00000000
--- a/dialog/ca-es/forecast.local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu pluja ni cap alternativa
-No es preveu cap tempesta {day}
-{day}, no hauria de fer tempesta
-No hauria d'haver-hi tempesta {day}
diff --git a/dialog/ca-es/forecast.local.raining.alternative.dialog b/dialog/ca-es/forecast.local.raining.alternative.dialog
deleted file mode 100644
index 44562f4c..00000000
--- a/dialog/ca-es/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa a la pluja
-No, però la previsió de {day} és {condition}
-{day} no hi ha previst pluja, però sembla que farà {condition}
diff --git a/dialog/ca-es/forecast.local.storm.alternative.dialog b/dialog/ca-es/forecast.local.storm.alternative.dialog
deleted file mode 100644
index 48291433..00000000
--- a/dialog/ca-es/forecast.local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa a la pluja
-No, però la previsió de {day} és {condition}
-{day} no hi ha previsió de tempesta, però sembla que farà {condition}
diff --git a/dialog/ca-es/forecast.no.clear.predicted.dialog b/dialog/ca-es/forecast.no.clear.predicted.dialog
deleted file mode 100644
index b2a0a964..00000000
--- a/dialog/ca-es/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si és clar, però es preveu un alternativa
-Ho sento, la previsió per a {day} no prediu condicions clares a {location}
-{day} no és probable que estigui clar el temps a {location}
diff --git a/dialog/ca-es/forecast.no.cloudy.predicted.dialog b/dialog/ca-es/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index c74a24e5..00000000
--- a/dialog/ca-es/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Quan l'usuari pregunta si farà núvol però no ho farà
-No sembla que {day} hagi d'estar ennuvolat a {location}
-Es preveuen cels clars a {location} el {day}
-S'espera cels clars a {location} el {day}
-No hauria d'estar ennuvolat a {location} el {day}
diff --git a/dialog/ca-es/forecast.no.fog.predicted.dialog b/dialog/ca-es/forecast.no.fog.predicted.dialog
deleted file mode 100644
index 95bbaff9..00000000
--- a/dialog/ca-es/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si fa boira, però no es preveu neu ni cap alternativa
-{day} la visibilitat hauria de ser bona a {location}
-No es preveu boira {day} a {location}
diff --git a/dialog/ca-es/forecast.no.rain.predicted.dialog b/dialog/ca-es/forecast.no.rain.predicted.dialog
deleted file mode 100644
index 80f5ba90..00000000
--- a/dialog/ca-es/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu pluja ni cap alternativa
-No es preveu cap pluja per a {location} {day}
-{day} no hauria de ploure a {location}
-No hi ha cap necessitat de paraigua a {location} per a {day}
diff --git a/dialog/ca-es/forecast.no.snow.predicted.dialog b/dialog/ca-es/forecast.no.snow.predicted.dialog
deleted file mode 100644
index 89bf0e0a..00000000
--- a/dialog/ca-es/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si neva, però no neva ni es preveu alternativa
-No es preveu neu a {location} {day}
-No hauria de nevar a {location} {day}
diff --git a/dialog/ca-es/forecast.no.storm.predicted.dialog b/dialog/ca-es/forecast.no.storm.predicted.dialog
deleted file mode 100644
index d81f5a67..00000000
--- a/dialog/ca-es/forecast.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu pluja ni cap alternativa
-No es preveu cap tempesta per a {location} {day}
-{day} no hauria d'haver-hi tempesta a {location}
-És poc probable que hi hagi tempesta {day} a {location}
diff --git a/dialog/ca-es/forecast.raining.alternative.dialog b/dialog/ca-es/forecast.raining.alternative.dialog
deleted file mode 100644
index 1b8a655e..00000000
--- a/dialog/ca-es/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa a la pluja
-No, però la previsió {day} a {location} és {condition}
-{day} no hi ha previsió de pluja a {location}, però sembla que hi haurà {condition}
diff --git a/dialog/ca-es/forecast.snowing.alternative.dialog b/dialog/ca-es/forecast.snowing.alternative.dialog
deleted file mode 100644
index f205180e..00000000
--- a/dialog/ca-es/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa a la neu
-No, però la previsió de {day} és {condition}
-{day} no hi ha previsió de pluja, però hi ha possibilitat que faci {condition}
diff --git a/dialog/ca-es/forecast.storm.alternative.dialog b/dialog/ca-es/forecast.storm.alternative.dialog
deleted file mode 100644
index c8455a53..00000000
--- a/dialog/ca-es/forecast.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, però la previsió {day} a {location} és {condition}
-# Informant que es produirà una alternativa a la tempesta
-{day} no hi ha previsió de tempesta a {location}, però sembla que hi haurà {condition}
diff --git a/dialog/ca-es/from.day.dialog b/dialog/ca-es/from.day.dialog
deleted file mode 100644
index df03b352..00000000
--- a/dialog/ca-es/from.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Des del {day}
diff --git a/dialog/ca-es/heavy.dialog b/dialog/ca-es/heavy.dialog
deleted file mode 100644
index c1ed0455..00000000
--- a/dialog/ca-es/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-intens
diff --git a/dialog/ca-es/light.dialog b/dialog/ca-es/light.dialog
deleted file mode 100644
index 001b4a58..00000000
--- a/dialog/ca-es/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-llum
diff --git a/dialog/ca-es/local.clear.alternative.dialog b/dialog/ca-es/local.clear.alternative.dialog
deleted file mode 100644
index 00ce0005..00000000
--- a/dialog/ca-es/local.clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió d'avui és {condition}
-Sembla que hi haurà {condition} avui
-És possible que avui sigui {condition}
diff --git a/dialog/ca-es/local.cloudy.alternative.dialog b/dialog/ca-es/local.cloudy.alternative.dialog
deleted file mode 100644
index 76fa6587..00000000
--- a/dialog/ca-es/local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-No, la previsió d'avui és {condition}
-# Informant que es produirà una alternativa al cel ennuvolat
-No hauria d'estar ennuvolat, sembla que avui farà {condition}
-No sembla que sigui així, hi ha possibilitats que avui faci {condition}
diff --git a/dialog/ca-es/local.foggy.alternative.dialog b/dialog/ca-es/local.foggy.alternative.dialog
deleted file mode 100644
index 00ce0005..00000000
--- a/dialog/ca-es/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informant que es produirà una alternativa per aclarir els cels
-No, la previsió d'avui és {condition}
-Sembla que hi haurà {condition} avui
-És possible que avui sigui {condition}
diff --git a/dialog/ca-es/local.no.cloudy.predicted.dialog b/dialog/ca-es/local.no.cloudy.predicted.dialog
deleted file mode 100644
index 444434a8..00000000
--- a/dialog/ca-es/local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu cap núvol o una previsió similar
-Avui no es preveu boira
-No hauria d'estar ennuvolat avui
diff --git a/dialog/ca-es/local.no.fog.predicted.dialog b/dialog/ca-es/local.no.fog.predicted.dialog
deleted file mode 100644
index 624cdd4a..00000000
--- a/dialog/ca-es/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si fa boira, però no es preveu neu ni cap alternativa
-Sembla que la visibilitat serà bona avui
-No es preveu boira avui
diff --git a/dialog/ca-es/local.no.rain.predicted.dialog b/dialog/ca-es/local.no.rain.predicted.dialog
deleted file mode 100644
index c974e878..00000000
--- a/dialog/ca-es/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu pluja ni cap alternativa
-No es preveu cap pluja avui
-Avui no hauria de ploure
-No hi ha necessitat de paraigua avui
diff --git a/dialog/ca-es/local.no.snow.predicted.dialog b/dialog/ca-es/local.no.snow.predicted.dialog
deleted file mode 100644
index 06cfe127..00000000
--- a/dialog/ca-es/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si neva, però no es preveu neu ni cap alternativa
-No es preveu neu avui
-Avui no hauria de nevar
diff --git a/dialog/ca-es/local.no.storm.predicted.dialog b/dialog/ca-es/local.no.storm.predicted.dialog
deleted file mode 100644
index 87c2e132..00000000
--- a/dialog/ca-es/local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu pluja ni cap alternativa
-No es preveu cap tempesta avui
-Avui no hauria d'haver-hi tempesta
-Avui no hauria d'haver-hi tempesta
-Avui és poc probable que hi hagi tempesta
-Una tempesta no és probable avui
diff --git a/dialog/ca-es/local.raining.alternative.dialog b/dialog/ca-es/local.raining.alternative.dialog
deleted file mode 100644
index 7864854c..00000000
--- a/dialog/ca-es/local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informar que es produirà una alternativa a la pluja (com la neu o la boira)
-No, però la previsió d'avui és {condition}
-Avui no es preveu pluja, però sembla que hi haurà {condition}
diff --git a/dialog/ca-es/local.snowing.alternative.dialog b/dialog/ca-es/local.snowing.alternative.dialog
deleted file mode 100644
index e941ee22..00000000
--- a/dialog/ca-es/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa a la neu
-No, però la previsió d'avui és {condition}
-Avui no hi ha previsió de pluja, però hi ha possibilitat que faci {condition}
diff --git a/dialog/ca-es/local.storm.alternative.dialog b/dialog/ca-es/local.storm.alternative.dialog
deleted file mode 100644
index f097999d..00000000
--- a/dialog/ca-es/local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, però la previsió d'avui és {condition}
-# Informar que es produirà una alternativa a una tempesta (com la neu o la boira)
-Avui no hi ha prevsió de tempesta, però sembla que farà {condition}
diff --git a/dialog/ca-es/no.clear.predicted.dialog b/dialog/ca-es/no.clear.predicted.dialog
deleted file mode 100644
index 48842485..00000000
--- a/dialog/ca-es/no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si és clar però no ho és
-Ho sento, sembla que serà {condition}
-No és probable que el cel vagi a estar clar
diff --git a/dialog/ca-es/no.cloudy.predicted.dialog b/dialog/ca-es/no.cloudy.predicted.dialog
deleted file mode 100644
index dcc6c21c..00000000
--- a/dialog/ca-es/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si farà núvol però no ho farà
-No sembla que avui estigui ennuvolat
-No hauria d'estar ennuvolat
diff --git a/dialog/ca-es/no.fog.predicted.dialog b/dialog/ca-es/no.fog.predicted.dialog
deleted file mode 100644
index 5ce3cab2..00000000
--- a/dialog/ca-es/no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si fa boira, però no es preveu neu ni cap alternativa
-Sembla que la visibilitat serà bona a {location}
-No es preveu cap tempesta a {location} avui
diff --git a/dialog/ca-es/no.rain.predicted.dialog b/dialog/ca-es/no.rain.predicted.dialog
deleted file mode 100644
index ddabf71a..00000000
--- a/dialog/ca-es/no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quan l'usuari pregunta si plou, però no es preveu pluja ni cap alternativa
-No es preveu cap pluja a {location}
-No hauria d'estar plovent a {location}
-No hi ha cap necessitat de paraigua a {location}
diff --git a/dialog/ca-es/no.snow.predicted.dialog b/dialog/ca-es/no.snow.predicted.dialog
deleted file mode 100644
index 7cfb1d3c..00000000
--- a/dialog/ca-es/no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quan l'usuari pregunta si neva, però no neva ni es preveu alternativa
-No es preveu cap tempesta per a {location}
-No nevarà a {location}
diff --git a/dialog/ca-es/no.storm.predicted.dialog b/dialog/ca-es/no.storm.predicted.dialog
deleted file mode 100644
index 023c4223..00000000
--- a/dialog/ca-es/no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quan l'usuari pregunta si fa tempesta, però no n'hi ha ni es preveu cap alternativa
-No es preveu cap tempesta a {location}
-No s'ha de produir cap tempesta a {location}
-No hauria d'haver-hi tempesta a {location}
diff --git a/dialog/ca-es/on.date.dialog b/dialog/ca-es/on.date.dialog
deleted file mode 100644
index 78981922..00000000
--- a/dialog/ca-es/on.date.dialog
+++ /dev/null
@@ -1 +0,0 @@
-a
diff --git a/dialog/ca-es/on.dialog b/dialog/ca-es/on.dialog
deleted file mode 100644
index c574d073..00000000
--- a/dialog/ca-es/on.dialog
+++ /dev/null
@@ -1 +0,0 @@
-en
diff --git a/dialog/ca-es/raining.alternative.dialog b/dialog/ca-es/raining.alternative.dialog
deleted file mode 100644
index 069bb28e..00000000
--- a/dialog/ca-es/raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informar que es produirà una alternativa a la pluja (com la neu o la boira)
-No, però la previsió a {location} és {condition}
-Avui no es preveu pluja a {location}, però sembla que hi haurà {condition}
diff --git a/dialog/ca-es/report.condition.at.location.dialog b/dialog/ca-es/report.condition.at.location.dialog
deleted file mode 100644
index 6577ca38..00000000
--- a/dialog/ca-es/report.condition.at.location.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Actualment, {condition} a {location} és {value}
diff --git a/dialog/ca-es/report.condition.dialog b/dialog/ca-es/report.condition.dialog
deleted file mode 100644
index 312ff888..00000000
--- a/dialog/ca-es/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Actualment, {condition} és {value}
diff --git a/dialog/ca-es/report.condition.future.at.location.dialog b/dialog/ca-es/report.condition.future.at.location.dialog
deleted file mode 100644
index c33fe313..00000000
--- a/dialog/ca-es/report.condition.future.at.location.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} a {location}, {condition} serà {value}
-{day} el pronòstic a {location} anuncia {condition} de {value}
diff --git a/dialog/ca-es/report.condition.future.dialog b/dialog/ca-es/report.condition.future.dialog
deleted file mode 100644
index 3b58e10a..00000000
--- a/dialog/ca-es/report.condition.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} per a {day} serà de {value}
-{day} el pronòstic anuncia {condition} de {value}
diff --git a/dialog/ca-es/report.wind.dialog b/dialog/ca-es/report.wind.dialog
deleted file mode 100644
index af9a2758..00000000
--- a/dialog/ca-es/report.wind.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{condition} és {value}
diff --git a/dialog/ca-es/sky is clear.future.dialog b/dialog/ca-es/sky is clear.future.dialog
deleted file mode 100644
index 2789b6da..00000000
--- a/dialog/ca-es/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-un cel clar
diff --git a/dialog/ca-es/snowing.alternative.dialog b/dialog/ca-es/snowing.alternative.dialog
deleted file mode 100644
index feeccd1b..00000000
--- a/dialog/ca-es/snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informant que es produirà una alternativa a la neu
-No, però la previsió a {location} és {condition}
-Avui no hi ha previsió de pluja, però hi ha possibilitat que faci {condition} a {location}
diff --git a/dialog/ca-es/storm.alternative.dialog b/dialog/ca-es/storm.alternative.dialog
deleted file mode 100644
index 1ab19a73..00000000
--- a/dialog/ca-es/storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, però la previsió a {location} és {condition}
-# Informar que es produirà una alternativa a la tempesta (com la neu o la boira)
-Avui no es preveu tempesta a {location}, però sembla que hi haurà {condition}
diff --git a/dialog/ca-es/sunrise.dialog b/dialog/ca-es/sunrise.dialog
deleted file mode 100644
index 026ad9d7..00000000
--- a/dialog/ca-es/sunrise.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-el sol s'ha aixecat a {time} avui
-l'alba va ser a les {time} avui
diff --git a/dialog/ca-es/sunset.dialog b/dialog/ca-es/sunset.dialog
deleted file mode 100644
index 6d5fa2b0..00000000
--- a/dialog/ca-es/sunset.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-el sol s'establirà a les {time} avui
-el sol baixarà avui a les {time}
-la posta de sol serà a {time} avui
diff --git a/dialog/ca-es/tonight.local.weather.dialog b/dialog/ca-es/tonight.local.weather.dialog
deleted file mode 100644
index a843f587..00000000
--- a/dialog/ca-es/tonight.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Aquesta nit farà {condition}, amb temperatures properes a {temp}
-Aquesta nit farà {condition} i entorn de {temp} graus
-Aquesta nit farà {condition} i {temp} graus
-Al voltant de {temp} graus amb {condition} aquesta nit
diff --git a/dialog/ca-es/weekly.condition.on.day.dialog b/dialog/ca-es/weekly.condition.on.day.dialog
deleted file mode 100644
index d2d19228..00000000
--- a/dialog/ca-es/weekly.condition.on.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} serà {condition},
diff --git a/dialog/ca-es/weekly.conditions.mostly.one.dialog b/dialog/ca-es/weekly.conditions.mostly.one.dialog
deleted file mode 100644
index 31e11a0f..00000000
--- a/dialog/ca-es/weekly.conditions.mostly.one.dialog
+++ /dev/null
@@ -1 +0,0 @@
-serà majoritàriament {condition}.
diff --git a/dialog/ca-es/weekly.conditions.seq.extra.dialog b/dialog/ca-es/weekly.conditions.seq.extra.dialog
deleted file mode 100644
index 70419434..00000000
--- a/dialog/ca-es/weekly.conditions.seq.extra.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-sembla que també hi haurà
-també ho serà
diff --git a/dialog/ca-es/weekly.conditions.seq.period.dialog b/dialog/ca-es/weekly.conditions.seq.period.dialog
deleted file mode 100644
index 1e87105a..00000000
--- a/dialog/ca-es/weekly.conditions.seq.period.dialog
+++ /dev/null
@@ -1 +0,0 @@
-de {from} a {to}
diff --git a/dialog/ca-es/weekly.conditions.seq.start.dialog b/dialog/ca-es/weekly.conditions.seq.start.dialog
deleted file mode 100644
index 7a44b534..00000000
--- a/dialog/ca-es/weekly.conditions.seq.start.dialog
+++ /dev/null
@@ -1 +0,0 @@
-serà {condition}
diff --git a/dialog/ca-es/weekly.conditions.some.days.dialog b/dialog/ca-es/weekly.conditions.some.days.dialog
deleted file mode 100644
index e2e64ba8..00000000
--- a/dialog/ca-es/weekly.conditions.some.days.dialog
+++ /dev/null
@@ -1 +0,0 @@
-serà {condition} alguns dies.
diff --git a/dialog/ca-es/wind.speed.dialog b/dialog/ca-es/wind.speed.dialog
deleted file mode 100644
index b98efb6f..00000000
--- a/dialog/ca-es/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{speed} {unit}
diff --git a/dialog/ca-es/wind.speed.dir.dialog b/dialog/ca-es/wind.speed.dir.dialog
deleted file mode 100644
index 864a3b6a..00000000
--- a/dialog/ca-es/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-a {speed} {unit} des del {dir}
-des del {dir} a {speed} {unit}
diff --git a/dialog/ca-es/wind.strength.hard.dialog b/dialog/ca-es/wind.strength.hard.dialog
deleted file mode 100644
index a8400e3e..00000000
--- a/dialog/ca-es/wind.strength.hard.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Això és força fort
diff --git a/dialog/ca-es/wind.strength.light.dialog b/dialog/ca-es/wind.strength.light.dialog
deleted file mode 100644
index 06838bc6..00000000
--- a/dialog/ca-es/wind.strength.light.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No molt ventós
-Poc ventós
-Bastant tranquil
diff --git a/dialog/ca-es/wind.strength.medium.dialog b/dialog/ca-es/wind.strength.medium.dialog
deleted file mode 100644
index 6ed2c239..00000000
--- a/dialog/ca-es/wind.strength.medium.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Hi haurà vent suau.
-Potser vulguis agafar una jaqueta
diff --git a/dialog/ca-es/winds.dialog b/dialog/ca-es/winds.dialog
deleted file mode 100644
index 38d40853..00000000
--- a/dialog/ca-es/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-velocitat del vent
diff --git a/dialog/da-dk/RelativeDay.voc b/dialog/da-dk/RelativeDay.voc
deleted file mode 100644
index 881c2f0f..00000000
--- a/dialog/da-dk/RelativeDay.voc
+++ /dev/null
@@ -1,12 +0,0 @@
-# today
-i dag
-# today's
-nutidens
-# tomorrow
-i morgen
-# tomorrow's
-morgendagens
-# yesterday
-i går
-# yesterday's
-gårsdagens
diff --git a/dialog/da-dk/at.time.forecast.affirmative.condition.dialog b/dialog/da-dk/at.time.forecast.affirmative.condition.dialog
deleted file mode 100644
index 8ab531ff..00000000
--- a/dialog/da-dk/at.time.forecast.affirmative.condition.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Affirmative response to questions like "is it going to snow in Paris tomorrow afternoon"
-# Yes, the {time} forecast suggests {condition} in {location} {day}
-Ja, det {time} prognosen antyder {condition} i {location} {day}
-# Yes, the {time} forecast calls for {condition} in {location} {day}
-Ja, det {time} prognose kræver {condition} i {location} {day}
diff --git a/dialog/da-dk/at.time.forecast.cond.alternative.dialog b/dialog/da-dk/at.time.forecast.cond.alternative.dialog
deleted file mode 100644
index 646764b9..00000000
--- a/dialog/da-dk/at.time.forecast.cond.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to clear skies will occur at specified time
-# No, the {time} forecast {day} calls for {condition} in {location}
-Ingen, det {time} Vejrudsigt {day} kræver {condition} i {location}
-# Doesn't seem so, the {time} forecast {day} suggests {location} will have {condition}
-Ser ikke ud til, det {time} Vejrudsigt {day} foreslår {location} vil have {condition}
diff --git a/dialog/da-dk/at.time.forecast.local.affirmative.condition.dialog b/dialog/da-dk/at.time.forecast.local.affirmative.condition.dialog
deleted file mode 100644
index ecfb3d87..00000000
--- a/dialog/da-dk/at.time.forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Affirmative response to questions like "is it going to snow tomorrow"
-# Yes, expect {condition} according to the {time} forecast {day}
-Ja, forventer {condition} ifølge {time} Vejrudsigt {day}
-# Yes, the {time} forecast calls for {condition} {day}
-Ja, det {time} prognose kræver {condition} {day}
diff --git a/dialog/da-dk/at.time.forecast.local.cond.alternative.dialog b/dialog/da-dk/at.time.forecast.local.cond.alternative.dialog
deleted file mode 100644
index 5034fb80..00000000
--- a/dialog/da-dk/at.time.forecast.local.cond.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the {time} forecast {day} calls for {condition}
-Ingen, det {time} Vejrudsigt {day} kræver {condition}
-# Doesn't seem so, the {time} forecast {day} suggests it's going to be {condition}
-Ser ikke ud til, det {time} Vejrudsigt {day} antyder, at det bliver {condition}
diff --git a/dialog/da-dk/at.time.forecast.local.no.cond.predicted.dialog b/dialog/da-dk/at.time.forecast.local.no.cond.predicted.dialog
deleted file mode 100644
index be2a07f6..00000000
--- a/dialog/da-dk/at.time.forecast.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's one condition but it's not
-# No, the {time} forecast {day} suggests {condition}
-Ingen, det {time} Vejrudsigt {day} foreslår {condition}
diff --git a/dialog/da-dk/at.time.forecast.no.cond.predicted.dialog b/dialog/da-dk/at.time.forecast.no.cond.predicted.dialog
deleted file mode 100644
index 88eb43e9..00000000
--- a/dialog/da-dk/at.time.forecast.no.cond.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's a condition but it's not
-# No, the {time} forecast in {location} suggests it will be {condition}
-Ingen, det {time} prognose i {location} antyder, at det bliver {condition}
-# It doesn't seem so, the {time} forecast in {location} suggests it will be {condition}
-Det ser ikke ud til, det {time} prognose i {location} antyder, at det bliver {condition}
diff --git a/dialog/da-dk/at.time.local.high.temperature.dialog b/dialog/da-dk/at.time.local.high.temperature.dialog
deleted file mode 100644
index d4590fe6..00000000
--- a/dialog/da-dk/at.time.local.high.temperature.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# It will be as high as {temp} degrees {time}
-Det vil være så højt som {temp} grader {time}
-# {time}, it will get up to {temp} degrees
-{time}, det vil komme op til {temp} grader
diff --git a/dialog/da-dk/at.time.local.low.temperature.dialog b/dialog/da-dk/at.time.local.low.temperature.dialog
deleted file mode 100644
index 60eb346c..00000000
--- a/dialog/da-dk/at.time.local.low.temperature.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# It will be as low as {temp} degrees {time}
-Det vil være så lavt som {temp} grader {time}
-# {time}, it will get down to {temp} degrees
-{time}, det kommer ned til {temp} grader
diff --git a/dialog/da-dk/at.time.local.weather.dialog b/dialog/da-dk/at.time.local.weather.dialog
deleted file mode 100644
index fb55f49b..00000000
--- a/dialog/da-dk/at.time.local.weather.dialog
+++ /dev/null
@@ -1,8 +0,0 @@
-# It will be {condition}, with temperatures near {temp} in the {time}
-Det vil være {condition}, med temperaturer nær {temp} i {time}
-# {time}, it will be {condition} and around {temp} degrees
-{time}, det vil være {condition} og omkring {temp} grader
-# {time}, it will be {condition} and {temp} degrees
-{time}, det vil være {condition} og {temp} grader
-# {time}, it will be {temp} degrees with {condition}
-{time}, det vil være {temp} grader med {condition}
diff --git a/dialog/da-dk/clear.alternative.dialog b/dialog/da-dk/clear.alternative.dialog
deleted file mode 100644
index a54a7b64..00000000
--- a/dialog/da-dk/clear.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the forecast calls for {condition} in {location}
-Ingen, prognosen kræver {condition} i {location}
-# It looks like there will be {condition} in {location}
-Det ser ud som der vil være {condition} i {location}
-# Chances are it's going to be {condition} in {location}
-Det er chancerne for, at det bliver {condition} i {location}
diff --git a/dialog/da-dk/clear.future.dialog b/dialog/da-dk/clear.future.dialog
deleted file mode 100644
index 69e97e40..00000000
--- a/dialog/da-dk/clear.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# a clear sky
-en klar himmel
diff --git a/dialog/da-dk/cloudy.alternative.dialog b/dialog/da-dk/cloudy.alternative.dialog
deleted file mode 100644
index 8ebe2257..00000000
--- a/dialog/da-dk/cloudy.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the forecast calls for {condition}
-Ingen, prognosen kræver {condition}
-# It should not be cloudy, it looks like there'll be {condition}
-Det skal ikke være overskyet, det ser ud som der vil være {condition}
-# Doesn't seem so, chances are it's going to be {condition}
-Ser ikke ud til, chancerne er, at det bliver {condition}
diff --git a/dialog/da-dk/condition.category.value b/dialog/da-dk/condition.category.value
deleted file mode 100644
index aae8055f..00000000
--- a/dialog/da-dk/condition.category.value
+++ /dev/null
@@ -1,30 +0,0 @@
-# Clouds,cloudy
-Skyer,overskyet
-# Clear,a clear sky
-Klar,en klar himmel
-# Thunderstorm,storming
-Tordenvejr,stormen
-# Drizzle,drizzling
-støvregn,støvregn
-# Rain,raining
-Regn,regner
-# Snow,snowing
-Sne,sner
-# Mist,misty
-Tåge,tåget
-# Smoke,smokey
-Røg,smokey
-# Haze,hazey
-Dis,Hazey
-# Dust,dusty
-Støv,støvet
-# Fog,foggy
-Tåge,tåget
-# Sand,sandy
-Sand,sandet
-# Ash,cloudy with possible volcanic ash
-Aske,overskyet med mulig vulkansk aske
-# Squall,storming
-Squall,stormen
-# Tornado,storming with a possible tornado
-Tornado,storme med en mulig tornado
diff --git a/dialog/da-dk/current.hot.dialog b/dialog/da-dk/current.hot.dialog
deleted file mode 100644
index 58e276b3..00000000
--- a/dialog/da-dk/current.hot.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# It's {temp} degrees {scale} in {location}, well within my operational temperature.
-Det er {temp} grader {scale} i {location}, godt inden for min driftstemperatur.
-# It's {temp} degrees in {location} which suits an A.I. just fine.
-Det er {temp} grader i {location} der passer til en A.jeg. bare fint.
diff --git a/dialog/da-dk/current.local.cold.dialog b/dialog/da-dk/current.local.cold.dialog
deleted file mode 100644
index 04885764..00000000
--- a/dialog/da-dk/current.local.cold.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# currently it's {temp}, well within my operational temperature
-i øjeblikket er det {temp}, godt inden for min driftstemperatur
-# It's {temp}, quite comfy for an A. I.
-Det er {temp}, ret behageligt for en A. jeg.
diff --git a/dialog/da-dk/current.local.hot.dialog b/dialog/da-dk/current.local.hot.dialog
deleted file mode 100644
index b755301f..00000000
--- a/dialog/da-dk/current.local.hot.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# It's within my operational temperature, currently at {temp} degrees
-Det er inden for min driftstemperatur, i øjeblikket kl {temp} grader
-# It's {temp} degrees, quite comfy for an AI
-Det er {temp} grader, ret behageligt for en AI
diff --git a/dialog/da-dk/do not know.dialog b/dialog/da-dk/do not know.dialog
deleted file mode 100644
index a4696f42..00000000
--- a/dialog/da-dk/do not know.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# I'm afraid I don't know that
-Jeg er bange for, at jeg ikke ved det
-# I don't have that information
-Jeg har ikke de oplysninger
-#
-
diff --git a/dialog/da-dk/fog.alternative.dialog b/dialog/da-dk/fog.alternative.dialog
deleted file mode 100644
index fe92b46c..00000000
--- a/dialog/da-dk/fog.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to fog will occur at a location
-# No, the forecast calls for {condition} in {location}
-Ingen, prognosen kræver {condition} i {location}
-# It looks like there'll be {condition} in {location}
-Det ser ud som der vil være {condition} i {location}
-# Chances are it's going to be {condition} in {location}
-Det er chancerne for, at det bliver {condition} i {location}
diff --git a/dialog/da-dk/forecast.clear.alternative.dialog b/dialog/da-dk/forecast.clear.alternative.dialog
deleted file mode 100644
index 5bbf6742..00000000
--- a/dialog/da-dk/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to rain will occur
-# No, but the forecast {day} calls for {condition} in {location}
-Ingen, men prognosen {day} kræver {condition} i {location}
-# {day}, there is no rain predicted {day} for {location} but it looks like there'll be {condition}
-{day}, der er ingen regn {day} til {location} men det ser ud som der vil være {condition}
diff --git a/dialog/da-dk/forecast.cloudy.alternative.dialog b/dialog/da-dk/forecast.cloudy.alternative.dialog
deleted file mode 100644
index f6262f6c..00000000
--- a/dialog/da-dk/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the forecast {day} calls for {condition} in {location}
-# It should not be cloudy in {location} {day}, it looks like there'll be {condition}
-# Doesn't seem so, chances are {location} will have {condition} {day}
-Ser ikke ud til, chancerne er {location} vil have {condition} {day}
diff --git a/dialog/da-dk/forecast.foggy.alternative.dialog b/dialog/da-dk/forecast.foggy.alternative.dialog
deleted file mode 100644
index e980ea18..00000000
--- a/dialog/da-dk/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to fog will occur
-# No, the forecast {day} for {location} calls for {condition}
-Ingen, prognosen {day} til {location} kræver {condition}
-# It looks like there'll be {condition} in {location} {day}
-Det ser ud som der vil være {condition} i {location} {day}
-# Chances are it's going to be {condition} in {location} {day}
-Det er chancerne for, at det bliver {condition} i {location} {day}
diff --git a/dialog/da-dk/forecast.hot.dialog b/dialog/da-dk/forecast.hot.dialog
deleted file mode 100644
index 2befa23f..00000000
--- a/dialog/da-dk/forecast.hot.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# {day} it'll be {temp} degrees in {location}, quite comfy for an A.I.
-{day} det bliver det {temp} grader i {location}, ret behageligt for en A.jeg.
-# {day} the temperature will be {temp} in {location}, well within my specifications
-{day} temperaturen vil være {temp} i {location}, godt inden for mine specifikationer
diff --git a/dialog/da-dk/forecast.local.clear.alternative.dialog b/dialog/da-dk/forecast.local.clear.alternative.dialog
deleted file mode 100644
index 44d3e0c0..00000000
--- a/dialog/da-dk/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the forecast {day} calls for {condition}
-Ingen, prognosen {day} kræver {condition}
-# {day}, it looks like there'll be {condition}
-{day}, det ser ud som der vil være {condition}
diff --git a/dialog/da-dk/forecast.local.cloudy.alternative.dialog b/dialog/da-dk/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index 10b3a56e..00000000
--- a/dialog/da-dk/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the forecast {day} calls for {condition}
-Ingen, prognosen {day} kræver {condition}
-# It should not be cloudy, it looks like there'll be {condition} {day}
-Det skal ikke være overskyet, det ser ud som der vil være {condition} {day}
-# Doesn't seem so, chances are it's going to be {condition} {day}
-Ser ikke ud til, chancerne er, at det bliver {condition} {day}
diff --git a/dialog/da-dk/forecast.local.foggy.alternative.dialog b/dialog/da-dk/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 8c8f8621..00000000
--- a/dialog/da-dk/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to fog will occur
-# No, the forecast {day} calls for {condition}
-Ingen, prognosen {day} kræver {condition}
-# It looks like there'll be {condition} {day}
-Det ser ud som der vil være {condition} {day}
-# Chances are it's going to be {condition} {day}
-Det er chancerne for, at det bliver {condition} {day}
diff --git a/dialog/da-dk/forecast.local.hot.dialog b/dialog/da-dk/forecast.local.hot.dialog
deleted file mode 100644
index 0251a3cb..00000000
--- a/dialog/da-dk/forecast.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# {day} it'll be {temp}, quite comfy for an AI
-{day} det bliver det {temp}, ret behageligt for en AI
diff --git a/dialog/da-dk/forecast.local.no.clear.predicted.dialog b/dialog/da-dk/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 581bf2e1..00000000
--- a/dialog/da-dk/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's clear but an alternative is forcasted
-# Sorry, the forecast doesn't predict clear conditions {day}
-Undskyld, prognosen forudsiger ikke klare forhold {day}
-# {day}, it is not likely to be clear
-{day}, det er sandsynligvis ikke klart
diff --git a/dialog/da-dk/forecast.local.no.cloudy.predicted.dialog b/dialog/da-dk/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index 26bec585..00000000
--- a/dialog/da-dk/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,9 +0,0 @@
-# When user asks if it's cloudy but it's not
-# It doesn't seem like it's going to be cloudy {day}
-Det ser ikke ud til, at det bliver overskyet {day}
-# Clear skies are forecast {day}
-Klar himmel er forventet {day}
-# Expect clear skies {day}
-Forvent klare himmel {day}
-# It should not be cloudy {day}
-Det skal ikke være overskyet {day}
diff --git a/dialog/da-dk/forecast.local.no.fog.predicted.dialog b/dialog/da-dk/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index d533515b..00000000
--- a/dialog/da-dk/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-# {day} the visibility should be good
-{day} synligheden skal være god
-# No fog is predicted {day}
-Ingen tåge er forudsagt {day}
diff --git a/dialog/da-dk/forecast.local.no.rain.predicted.dialog b/dialog/da-dk/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index fa8429b5..00000000
--- a/dialog/da-dk/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-# No rain is predicted {day}
-Der forventes ingen regn {day}
-# It should not rain {day}
-Det bør ikke regne {day}
-# You won't need an umbrella {day}
-Du behøver ikke en paraply {day}
diff --git a/dialog/da-dk/forecast.local.no.snow.predicted.dialog b/dialog/da-dk/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index dafa500b..00000000
--- a/dialog/da-dk/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-# No snow is predicted {day}
-Der forudsiges ingen sne {day}
-# It will not snow {day}
-Det sneer ikke {day}
diff --git a/dialog/da-dk/forecast.local.no.storm.predicted.dialog b/dialog/da-dk/forecast.local.no.storm.predicted.dialog
deleted file mode 100644
index 8ee43356..00000000
--- a/dialog/da-dk/forecast.local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-# No storm is predicted {day}
-Ingen storm forudsiges {day}
-# {day}, it should not storm
-{day}, det skal ikke storme
-# It should not storm {day}
-Det bør ikke storme {day}
diff --git a/dialog/da-dk/forecast.local.raining.alternative.dialog b/dialog/da-dk/forecast.local.raining.alternative.dialog
deleted file mode 100644
index fd2b5331..00000000
--- a/dialog/da-dk/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to rain will occur
-# No, but the forecast {day} calls for {condition}
-Ingen, men prognosen {day} kræver {condition}
-# {day}, there is no rain predicted but it looks like there'll be {condition}
-{day}, der er ikke forudsagt regn, men det ser ud til, at der vil være {condition}
diff --git a/dialog/da-dk/forecast.local.storm.alternative.dialog b/dialog/da-dk/forecast.local.storm.alternative.dialog
deleted file mode 100644
index 661a639e..00000000
--- a/dialog/da-dk/forecast.local.storm.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to rain will occur
-# No, but the forecast {day} calls for {condition}
-Ingen, men prognosen {day} kræver {condition}
-# {day}, there is no storm predicted but it looks like there'll be {condition}
-{day}, der er ingen storm forudsagt, men det ser ud som der vil være {condition}
diff --git a/dialog/da-dk/forecast.no.clear.predicted.dialog b/dialog/da-dk/forecast.no.clear.predicted.dialog
deleted file mode 100644
index ad78faaf..00000000
--- a/dialog/da-dk/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's clear but an alternative is forcasted
-# Sorry, the forecast {day} doesn't predict clear conditions for {location}
-Undskyld, prognosen {day} forudsiger ikke klare betingelser for {location}
-# {day}, it is not likely to be clear weather in {location}
-{day}, det er sandsynligvis ikke klart vejr i {location}
diff --git a/dialog/da-dk/forecast.no.cloudy.predicted.dialog b/dialog/da-dk/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index 1f3985c9..00000000
--- a/dialog/da-dk/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,9 +0,0 @@
-# When user asks if it's cloudy but it's not
-# It doesn't seem like it's going to be cloudy in {location} {day}
-Det ser ikke ud til, at det bliver overskyet i {location} {day}
-# Clear skies are forecast in {location} {day}
-Klar himmel er forventet i {location} {day}
-# Expect clear skies in {location} {day}
-Forvent klare himmel ind {location} {day}
-# It should not be cloudy in {location} {day}
-Det skal ikke være overskyet i {location} {day}
diff --git a/dialog/da-dk/forecast.no.fog.predicted.dialog b/dialog/da-dk/forecast.no.fog.predicted.dialog
deleted file mode 100644
index 68a970d3..00000000
--- a/dialog/da-dk/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-# {day} the visibility should be good in {location}
-{day} synligheden skal være god i {location}
-# No fog is predicted {day} in {location}
-Ingen tåge er forudsagt {day} i {location}
diff --git a/dialog/da-dk/forecast.no.rain.predicted.dialog b/dialog/da-dk/forecast.no.rain.predicted.dialog
deleted file mode 100644
index d54e4d29..00000000
--- a/dialog/da-dk/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-# No rain is predicted for {location} {day}
-Der regnes ikke med regn {location} {day}
-# {day}, it should not rain in {location}
-{day}, det skulle ikke regne ind {location}
-# There's no need for an umbrella in {location} {day}
-Der er ikke behov for en paraply ind {location} {day}
diff --git a/dialog/da-dk/forecast.no.snow.predicted.dialog b/dialog/da-dk/forecast.no.snow.predicted.dialog
deleted file mode 100644
index d313ce2a..00000000
--- a/dialog/da-dk/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-# No snow is predicted in {location} {day}
-Der forudsiges ingen sne i {location} {day}
-# It should not snow in {location} {day}
-Det skal ikke sne ind {location} {day}
diff --git a/dialog/da-dk/forecast.no.storm.predicted.dialog b/dialog/da-dk/forecast.no.storm.predicted.dialog
deleted file mode 100644
index fbe23fb7..00000000
--- a/dialog/da-dk/forecast.no.storm.predicted.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-# No storm is predicted for {location} {day}
-Ingen storm forudsiges for {location} {day}
-# {day}, it should not storm in {location}
-{day}, det skal ikke storme ind {location}
-# It is unlikely to storm {day} in {location}
-Det er usandsynligt at storme {day} i {location}
diff --git a/dialog/da-dk/forecast.raining.alternative.dialog b/dialog/da-dk/forecast.raining.alternative.dialog
deleted file mode 100644
index 9a682448..00000000
--- a/dialog/da-dk/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to rain will occur
-# No, but the forecast calls for {condition} in {location} {day}
-Ingen, men prognosen kræver {condition} i {location} {day}
-# {day}, there is no rain predicted for {location} but it looks like there'll be {condition}
-{day}, der er ingen regn forventet for {location} men det ser ud som der vil være {condition}
diff --git a/dialog/da-dk/forecast.snowing.alternative.dialog b/dialog/da-dk/forecast.snowing.alternative.dialog
deleted file mode 100644
index 66421e2e..00000000
--- a/dialog/da-dk/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to snowing will occur
-# No, but the forecast calls for {condition} {day}
-Ingen, men prognosen kræver {condition} {day}
-# {day} there is no snow predicted but the chances are that it'll be {condition}
-{day} der er ikke forudsagt sne, men chancerne er for, at det bliver {condition}
diff --git a/dialog/da-dk/forecast.storm.alternative.dialog b/dialog/da-dk/forecast.storm.alternative.dialog
deleted file mode 100644
index b0f90b95..00000000
--- a/dialog/da-dk/forecast.storm.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to storm will occur
-# No, but the forecast calls for {condition} in {location} {day}
-Ingen, men prognosen kræver {condition} i {location} {day}
-# {day}, there is no storm predicted for {location} but it looks like there'll be {condition}
-{day}, der er ingen storm forudsagt for {location} men det ser ud som der vil være {condition}
diff --git a/dialog/da-dk/from.day.dialog b/dialog/da-dk/from.day.dialog
deleted file mode 100644
index 4d19defe..00000000
--- a/dialog/da-dk/from.day.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# From {day}
-Fra {day}
diff --git a/dialog/da-dk/heavy.dialog b/dialog/da-dk/heavy.dialog
deleted file mode 100644
index db7e28b6..00000000
--- a/dialog/da-dk/heavy.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# heavy
-tung
diff --git a/dialog/da-dk/light.dialog b/dialog/da-dk/light.dialog
deleted file mode 100644
index 78c76c1c..00000000
--- a/dialog/da-dk/light.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# light
-lys
diff --git a/dialog/da-dk/local.clear.alternative.dialog b/dialog/da-dk/local.clear.alternative.dialog
deleted file mode 100644
index 44c7018f..00000000
--- a/dialog/da-dk/local.clear.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the forecast calls for {condition} today
-Ingen, prognosen kræver {condition} i dag
-# It looks like there'll be {condition} today
-Det ser ud som der vil være {condition} i dag
-# Chances are it's going to be {condition} today
-Det er chancerne for, at det bliver {condition} i dag
diff --git a/dialog/da-dk/local.cloudy.alternative.dialog b/dialog/da-dk/local.cloudy.alternative.dialog
deleted file mode 100644
index e60df09a..00000000
--- a/dialog/da-dk/local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to cloudy skies will occur
-# No, the forecast calls for {condition} today
-Ingen, prognosen kræver {condition} i dag
-# It should not be cloudy, it looks like there'll be {condition} today
-Det skal ikke være overskyet, det ser ud som der vil være {condition} i dag
-# Doesn't seem so, chances are it's going to be {condition} today
-Ser ikke ud til, chancerne er, at det bliver {condition} i dag
diff --git a/dialog/da-dk/local.foggy.alternative.dialog b/dialog/da-dk/local.foggy.alternative.dialog
deleted file mode 100644
index 8b2ae764..00000000
--- a/dialog/da-dk/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# Informing that an alternative to fog will occur
-# No, the forecast calls for {condition} today
-Ingen, prognosen kræver {condition} i dag
-# It looks like there'll be {condition} today
-Det ser ud som der vil være {condition} i dag
-# Chances are it's going to be {condition} today
-Det er chancerne for, at det bliver {condition} i dag
diff --git a/dialog/da-dk/local.no.cloudy.predicted.dialog b/dialog/da-dk/local.no.cloudy.predicted.dialog
deleted file mode 100644
index ddd76675..00000000
--- a/dialog/da-dk/local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's raining but no cloud or alternative is forcasted
-# No clouds are predicted for today
-Der forudsiges ingen skyer i dag
-# It should not be cloudy today
-Det skulle ikke være overskyet i dag
diff --git a/dialog/da-dk/local.no.fog.predicted.dialog b/dialog/da-dk/local.no.fog.predicted.dialog
deleted file mode 100644
index bfefe629..00000000
--- a/dialog/da-dk/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-# Seems like the visibility will be good today
-Synes, at synligheden vil være god i dag
-# No fog is predicted for today
-Ingen tåge er forudsagt for i dag
diff --git a/dialog/da-dk/local.no.rain.predicted.dialog b/dialog/da-dk/local.no.rain.predicted.dialog
deleted file mode 100644
index b4b22432..00000000
--- a/dialog/da-dk/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-# No rain is predicted today
-Der regnes ikke med regn i dag
-# It should not rain today
-Det skulle ikke regne i dag
-# There's no need for an umbrella today
-Der er ikke behov for en paraply i dag
diff --git a/dialog/da-dk/local.no.snow.predicted.dialog b/dialog/da-dk/local.no.snow.predicted.dialog
deleted file mode 100644
index dc06e23a..00000000
--- a/dialog/da-dk/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forecasted
-# No snow is predicted today
-Der forudsiges ingen sne i dag
-# It should not snow today
-Det skulle ikke sne i dag
diff --git a/dialog/da-dk/local.no.storm.predicted.dialog b/dialog/da-dk/local.no.storm.predicted.dialog
deleted file mode 100644
index a7aae65d..00000000
--- a/dialog/da-dk/local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,11 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-# No storm is predicted today
-Ingen storm forudsiges i dag
-# It should not storm today
-Det skulle ikke storme i dag
-# There should not be a storm today
-Der skulle ikke være storm i dag
-# Today it is unlikely to storm
-I dag er det usandsynligt at storme
-# A storm is not likely today
-En storm er sandsynligvis ikke i dag
diff --git a/dialog/da-dk/local.raining.alternative.dialog b/dialog/da-dk/local.raining.alternative.dialog
deleted file mode 100644
index 4cb41d30..00000000
--- a/dialog/da-dk/local.raining.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to rain will occur (like snow or fog)
-# No, but today the forecast calls for {condition}
-Ingen, men i dag kræver prognosen {condition}
-# There is no rain predicted for today but it looks like there'll be {condition}
-Der er ikke forventet regn for i dag, men det ser ud til, at der vil være {condition}
diff --git a/dialog/da-dk/local.snowing.alternative.dialog b/dialog/da-dk/local.snowing.alternative.dialog
deleted file mode 100644
index 0514b262..00000000
--- a/dialog/da-dk/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to snowing will occur
-# No, but today the forecast calls for {condition}
-Ingen, men i dag kræver prognosen {condition}
-# There is no snow predicted for today but the chances are that it'll be {condition}
-Der er ikke forudsagt sne i dag, men chancerne er for, at det bliver {condition}
diff --git a/dialog/da-dk/local.storm.alternative.dialog b/dialog/da-dk/local.storm.alternative.dialog
deleted file mode 100644
index b3f7449d..00000000
--- a/dialog/da-dk/local.storm.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to a storm will occur (like snow or fog)
-# No, but today the forecast calls for {condition}
-Ingen, men i dag kræver prognosen {condition}
-# There is no storm predicted for today but it looks like there'll be {condition}
-Der er ingen storm forudsagt for i dag, men det ser ud til, at der vil være {condition}
diff --git a/dialog/da-dk/no.clear.predicted.dialog b/dialog/da-dk/no.clear.predicted.dialog
deleted file mode 100644
index 7551d4b6..00000000
--- a/dialog/da-dk/no.clear.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's clear but it's not
-# Sorry, it seems like it's going to be {condition}
-Undskyld, det ser ud til, at det bliver {condition}
-# It's not likely to be a clear sky
-Det er sandsynligt, at det ikke er en klar himmel
diff --git a/dialog/da-dk/no.cloudy.predicted.dialog b/dialog/da-dk/no.cloudy.predicted.dialog
deleted file mode 100644
index 220a4b78..00000000
--- a/dialog/da-dk/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's cloudy but it's not
-# It doesn't seem to be cloudy today
-Det ser ikke ud til at være overskyet i dag
-# It should not be cloudy
-Det skal ikke være overskyet
diff --git a/dialog/da-dk/no.fog.predicted.dialog b/dialog/da-dk/no.fog.predicted.dialog
deleted file mode 100644
index 9ff5291c..00000000
--- a/dialog/da-dk/no.fog.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-# Seems like the visibility will be good in {location}
-Synes, at synligheden vil være god i {location}
-# No fog is predicted for {location} today
-Ingen tåge er forudsagt for {location} i dag
diff --git a/dialog/da-dk/no.rain.predicted.dialog b/dialog/da-dk/no.rain.predicted.dialog
deleted file mode 100644
index 908b97df..00000000
--- a/dialog/da-dk/no.rain.predicted.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-# No rain is predicted for {location}
-Der regnes ikke med regn {location}
-# It should not be raining in {location}
-Det bør ikke regne ind {location}
-# There's no need for an umbrella in {location}
-Der er ikke behov for en paraply ind {location}
diff --git a/dialog/da-dk/no.snow.predicted.dialog b/dialog/da-dk/no.snow.predicted.dialog
deleted file mode 100644
index db87db81..00000000
--- a/dialog/da-dk/no.snow.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-# No snow is predicted for {location}
-Der er ikke forudsagt nogen sne {location}
-# It will not snow in {location}
-Det sneer ikke ind {location}
diff --git a/dialog/da-dk/no.storm.predicted.dialog b/dialog/da-dk/no.storm.predicted.dialog
deleted file mode 100644
index cc724bbf..00000000
--- a/dialog/da-dk/no.storm.predicted.dialog
+++ /dev/null
@@ -1,7 +0,0 @@
-# When user asks if it's storming but no storm or alternative is forcasted
-# No storm is predicted for {location}
-Ingen storm forudsiges for {location}
-# There should not be a storm in {location}
-Der skulle ikke være en storm ind {location}
-# It should not storm in {location}
-Det bør ikke storme ind {location}
diff --git a/dialog/da-dk/on.date.dialog b/dialog/da-dk/on.date.dialog
deleted file mode 100644
index 9dadba92..00000000
--- a/dialog/da-dk/on.date.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# on
-på
diff --git a/dialog/da-dk/on.dialog b/dialog/da-dk/on.dialog
deleted file mode 100644
index 752baeef..00000000
--- a/dialog/da-dk/on.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# on
-på
diff --git a/dialog/da-dk/raining.alternative.dialog b/dialog/da-dk/raining.alternative.dialog
deleted file mode 100644
index 0a2470c7..00000000
--- a/dialog/da-dk/raining.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to rain will occur (like snow or fog)
-# No, but the forecast calls for {condition} in {location}
-Ingen, men prognosen kræver {condition} i {location}
-# There is no rain predicted for today in {location}, but it looks like there'll be {condition}
-Der er ikke forventet regn for i dag i {location}, men det ser ud som der vil være {condition}
diff --git a/dialog/da-dk/report.condition.at.location.dialog b/dialog/da-dk/report.condition.at.location.dialog
deleted file mode 100644
index 542719e0..00000000
--- a/dialog/da-dk/report.condition.at.location.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# Currently, {condition} in {location} is {value}
-I øjeblikket, {condition} i {location} er {value}
diff --git a/dialog/da-dk/report.condition.dialog b/dialog/da-dk/report.condition.dialog
deleted file mode 100644
index 9179d037..00000000
--- a/dialog/da-dk/report.condition.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# Currently, {condition} is {value}
-I øjeblikket, {condition} er {value}
diff --git a/dialog/da-dk/report.condition.future.at.location.dialog b/dialog/da-dk/report.condition.future.at.location.dialog
deleted file mode 100644
index 0cb9f82b..00000000
--- a/dialog/da-dk/report.condition.future.at.location.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# {condition} in {location} {day} will be {value}
-{condition} i {location} {day} vil være {value}
-# {day} the forecast in {location} calls for {condition} of {value}
-{day} prognosen i {location} kræver {condition} af {value}
diff --git a/dialog/da-dk/report.condition.future.dialog b/dialog/da-dk/report.condition.future.dialog
deleted file mode 100644
index a6ce6059..00000000
--- a/dialog/da-dk/report.condition.future.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# {condition} {day} will be {value}
-{condition} {day} vil være {value}
-# {day} the forecast calls for {condition} of {value}
-{day} prognosen kræver {condition} af {value}
diff --git a/dialog/da-dk/report.wind.dialog b/dialog/da-dk/report.wind.dialog
deleted file mode 100644
index f083500e..00000000
--- a/dialog/da-dk/report.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# {condition} is {value}
-{condition} er {value}
diff --git a/dialog/da-dk/sky is clear.future.dialog b/dialog/da-dk/sky is clear.future.dialog
deleted file mode 100644
index 69e97e40..00000000
--- a/dialog/da-dk/sky is clear.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# a clear sky
-en klar himmel
diff --git a/dialog/da-dk/snowing.alternative.dialog b/dialog/da-dk/snowing.alternative.dialog
deleted file mode 100644
index 6921771c..00000000
--- a/dialog/da-dk/snowing.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to snowing will occur
-# No, but the forecast calls for {condition} in {location}
-Ingen, men prognosen kræver {condition} i {location}
-# There is no snow predicted for today but the chances are that it'll be {condition} in {location}
-Der er ikke forudsagt sne i dag, men chancerne er for, at det bliver {condition} i {location}
diff --git a/dialog/da-dk/storm.alternative.dialog b/dialog/da-dk/storm.alternative.dialog
deleted file mode 100644
index c7db4aa3..00000000
--- a/dialog/da-dk/storm.alternative.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Informing that an alternative to storm will occur (like snow or fog)
-# No, but the forecast calls for {condition} in {location}
-Ingen, men prognosen kræver {condition} i {location}
-# There is no storm predicted for today in {location}, but it looks like there'll be {condition}
-Der er ingen storm forudsagt for i dag i {location}, men det ser ud som der vil være {condition}
diff --git a/dialog/da-dk/sunrise.dialog b/dialog/da-dk/sunrise.dialog
deleted file mode 100644
index 427766df..00000000
--- a/dialog/da-dk/sunrise.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# the sun rose at {time} today
-solen steg kl {time} i dag
-# sunrise was at {time} today
-solopgang var kl {time} i dag
diff --git a/dialog/da-dk/sunset.dialog b/dialog/da-dk/sunset.dialog
deleted file mode 100644
index 63494e47..00000000
--- a/dialog/da-dk/sunset.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# the sun will set at {time} today
-solen går ned kl {time} i dag
-# the sun will go down at {time} today
-solen går ned kl {time} i dag
-# sunset will be at {time} today
-solnedgang er kl {time} i dag
diff --git a/dialog/da-dk/tonight.local.weather.dialog b/dialog/da-dk/tonight.local.weather.dialog
deleted file mode 100644
index 120048ec..00000000
--- a/dialog/da-dk/tonight.local.weather.dialog
+++ /dev/null
@@ -1,8 +0,0 @@
-# Tonight it will be {condition}, with temperatures near {temp}
-I aften bliver det {condition}, med temperaturer nær {temp}
-# Tonight it will be {condition} and around {temp} degrees
-I aften bliver det {condition} og omkring {temp} grader
-# Tonight it will be {condition} and {temp} degrees
-I aften bliver det {condition} og {temp} grader
-# Around {temp} degrees with {condition} tonight
-Rundt om {temp} grader med {condition} i aften
diff --git a/dialog/da-dk/weekly.condition.on.day.dialog b/dialog/da-dk/weekly.condition.on.day.dialog
deleted file mode 100644
index dd061ae5..00000000
--- a/dialog/da-dk/weekly.condition.on.day.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# {day} will be {condition},
-{day} vil være {condition},
diff --git a/dialog/da-dk/weekly.conditions.mostly.one.dialog b/dialog/da-dk/weekly.conditions.mostly.one.dialog
deleted file mode 100644
index 5d8032c6..00000000
--- a/dialog/da-dk/weekly.conditions.mostly.one.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# it will be mostly {condition}.
-det vil være det meste {condition}.
diff --git a/dialog/da-dk/weekly.conditions.seq.extra.dialog b/dialog/da-dk/weekly.conditions.seq.extra.dialog
deleted file mode 100644
index afe2e149..00000000
--- a/dialog/da-dk/weekly.conditions.seq.extra.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# it looks like there will also be
-det ser ud som der også vil være
-# it will also be
-det vil det også være
diff --git a/dialog/da-dk/weekly.conditions.seq.period.dialog b/dialog/da-dk/weekly.conditions.seq.period.dialog
deleted file mode 100644
index 953bd7ef..00000000
--- a/dialog/da-dk/weekly.conditions.seq.period.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# from {from} to {to}
-fra {from} til {to}
diff --git a/dialog/da-dk/weekly.conditions.seq.start.dialog b/dialog/da-dk/weekly.conditions.seq.start.dialog
deleted file mode 100644
index dc3c8dc3..00000000
--- a/dialog/da-dk/weekly.conditions.seq.start.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# it will be {condition}
-det vil være {condition}
diff --git a/dialog/da-dk/weekly.conditions.some.days.dialog b/dialog/da-dk/weekly.conditions.some.days.dialog
deleted file mode 100644
index 9f87b348..00000000
--- a/dialog/da-dk/weekly.conditions.some.days.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# it will be {condition} some days.
-det vil være {condition} nogle dage.
diff --git a/dialog/da-dk/wind.speed.dialog b/dialog/da-dk/wind.speed.dialog
deleted file mode 100644
index 8fd14cd7..00000000
--- a/dialog/da-dk/wind.speed.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# {speed} {unit}
-{speed} {unit}
diff --git a/dialog/da-dk/wind.speed.dir.dialog b/dialog/da-dk/wind.speed.dir.dialog
deleted file mode 100644
index 35c2b774..00000000
--- a/dialog/da-dk/wind.speed.dir.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# at {speed} {unit} from the {dir}
-på {speed} {unit} fra {dir}
-# from the {dir} at {speed} {unit}
-fra {dir} på {speed} {unit}
diff --git a/dialog/da-dk/wind.strength.hard.dialog b/dialog/da-dk/wind.strength.hard.dialog
deleted file mode 100644
index 21dbecf0..00000000
--- a/dialog/da-dk/wind.strength.hard.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# That's quite strong
-Det er ret stærkt
diff --git a/dialog/da-dk/wind.strength.light.dialog b/dialog/da-dk/wind.strength.light.dialog
deleted file mode 100644
index 5390a361..00000000
--- a/dialog/da-dk/wind.strength.light.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# Not very windy
-Ikke meget blæsende
-# Not much wind
-Ikke meget vind
-# Quite calm
-Ganske rolig
diff --git a/dialog/da-dk/wind.strength.medium.dialog b/dialog/da-dk/wind.strength.medium.dialog
deleted file mode 100644
index 0ab15e30..00000000
--- a/dialog/da-dk/wind.strength.medium.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# That's getting breezy.
-Det bliver blæsende.
-# You might want to take a jacket
-Du ønsker måske at tage en jakke
diff --git a/dialog/da-dk/winds.dialog b/dialog/da-dk/winds.dialog
deleted file mode 100644
index 2193f28f..00000000
--- a/dialog/da-dk/winds.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# wind speed
-vindhastighed
diff --git a/dialog/de-de/at.time.forecast.affirmative.condition.dialog b/dialog/de-de/at.time.forecast.affirmative.condition.dialog
deleted file mode 100644
index 90c35490..00000000
--- a/dialog/de-de/at.time.forecast.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Bejahende Antwort auf Fragen wie "Wird es morgen nachmittag in Paris schneien?"
-Ja, aber die Prognose für {location} am {day} um {time} ist {condition}
-Ja, die {time} Vorhersage nennt {condition} in {location} am {day}
diff --git a/dialog/de-de/at.time.forecast.cond.alternative.dialog b/dialog/de-de/at.time.forecast.cond.alternative.dialog
deleted file mode 100644
index 7f67b0e1..00000000
--- a/dialog/de-de/at.time.forecast.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Es wird darauf hingewiesen, dass zu einem bestimmten Zeitpunkt eine Alternative zum klaren Himmel auftreten wird
-Nein, die {time} Vorhersage {day} zeigt {condition} in {location}
-Scheint nicht so, die {time} Vorhersage {day} spricht davon dass {location} {condition} haben wird
diff --git a/dialog/de-de/at.time.forecast.local.affirmative.condition.dialog b/dialog/de-de/at.time.forecast.local.affirmative.condition.dialog
deleted file mode 100644
index 2540df85..00000000
--- a/dialog/de-de/at.time.forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Bejahende Antwort auf Fragen wie "Wird es morgen schneien?"
-Ja, rechne mit {condition} gemäß {time} Prognose {day}
-Ja, die {time} Vorhersage zeigt {condition} {day}
diff --git a/dialog/de-de/at.time.forecast.local.cond.alternative.dialog b/dialog/de-de/at.time.forecast.local.cond.alternative.dialog
deleted file mode 100644
index 7d27a815..00000000
--- a/dialog/de-de/at.time.forecast.local.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zum klaren Himmel gibt
-Nein, die {time} Vorhersage {day} zeigt {condition}
-Scheint nicht so, die {time} Vorhersage {day} legt nahe, dass es {condition} sein wird
diff --git a/dialog/de-de/at.time.forecast.local.no.cond.predicted.dialog b/dialog/de-de/at.time.forecast.local.no.cond.predicted.dialog
deleted file mode 100644
index 563d4e73..00000000
--- a/dialog/de-de/at.time.forecast.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# Wenn der Benutzer fragt, ob es sich um eine Bedingung handelt, dies jedoch nicht
-Nein, die {time} Vorhersage {day} legt {condition} nahe
diff --git a/dialog/de-de/at.time.forecast.no.cond.predicted.dialog b/dialog/de-de/at.time.forecast.no.cond.predicted.dialog
deleted file mode 100644
index ff62485f..00000000
--- a/dialog/de-de/at.time.forecast.no.cond.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es sich um eine Bedingung handelt, dies jedoch nicht
-Nein, die {time} Vorhersage in {location} legt nahe, dass es sich um {condition} handeln wird.
-Es scheint nicht so, die {time} Vorhersage in {location} legt nahe, dass es sich um {condition} handeln wird.
diff --git a/dialog/de-de/at.time.local.high.temperature.dialog b/dialog/de-de/at.time.local.high.temperature.dialog
deleted file mode 100644
index a95bb7f1..00000000
--- a/dialog/de-de/at.time.local.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Es wird so hoch wie {temp} Grad {time} sein
-{time}, wird es auf {temp} Grad kommen
diff --git a/dialog/de-de/at.time.local.low.temperature.dialog b/dialog/de-de/at.time.local.low.temperature.dialog
deleted file mode 100644
index 5c8f5187..00000000
--- a/dialog/de-de/at.time.local.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Es wird so niedrig wie {temp} Grad {time} sein
-{time}, wird auf es auf {temp} Grad herunterkommen
diff --git a/dialog/de-de/at.time.local.weather.dialog b/dialog/de-de/at.time.local.weather.dialog
deleted file mode 100644
index 4948e0b5..00000000
--- a/dialog/de-de/at.time.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Es wird {condition}, mit Temperaturen nahe {temp} Grad um {time}
-{time}, es wird {condition} und ungefähr {temp} Grad geben
-{time}, es werden {condition} und {temp} Grad erwartet
-{time}, es werden {temp} Grad mit {condition}
diff --git a/dialog/de-de/clear.alternative.dialog b/dialog/de-de/clear.alternative.dialog
deleted file mode 100644
index 0f45a147..00000000
--- a/dialog/de-de/clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass es eine Alternative zum klaren Himmel gibt
-Nein, aber die Prognose ist {condition} in {location}
-Es sieht so aus, als wäre {condition} in {location}
-Wahrscheinlich wird es {condition} in {location} sein
diff --git a/dialog/de-de/clear.future.dialog b/dialog/de-de/clear.future.dialog
deleted file mode 100644
index 39e5a15b..00000000
--- a/dialog/de-de/clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Klarer Himmel
diff --git a/dialog/de-de/cloudy.alternative.dialog b/dialog/de-de/cloudy.alternative.dialog
deleted file mode 100644
index 770265b0..00000000
--- a/dialog/de-de/cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass es eine Alternative zum klaren Himmel gibt
-Nein, die Prognose ist {condition}
-Es wird wahrscheinlich nicht bewölkt sein, es sieht so aus, als würde es {condition} geben
-Scheint nicht so; wahrscheinlich wird es {condition}
diff --git a/dialog/de-de/condition.category.value b/dialog/de-de/condition.category.value
deleted file mode 100644
index e8fb8d57..00000000
--- a/dialog/de-de/condition.category.value
+++ /dev/null
@@ -1,15 +0,0 @@
-Wolken, bewölkt
-Klar, klarer Himmel
-Gewitter, Sturm
-Nieselregen, Nieselregen
-regnen|regnet
-schneien|schneit
-Nebel,neblig
-Rauch,rauchig
-Dunst,dunstig
-Staub,staubig
-Nebel,nebelig
-Sand,sandig
-Asche, trübe mit möglicher Vulkanasche
-Böe, stürmend
-Tornado,der mit einem möglichen Tornado stürmt
diff --git a/dialog/de-de/current.hot.dialog b/dialog/de-de/current.hot.dialog
deleted file mode 100644
index 968ecef0..00000000
--- a/dialog/de-de/current.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Es ist {temp} Grad {scale} in {location}, gut innerhalb meiner Betriebstemperatur.
-Es sind {temp} Grad in {location}, das passt zu einer K.I. Alles gut.
diff --git a/dialog/de-de/current.local.cold.dialog b/dialog/de-de/current.local.cold.dialog
deleted file mode 100644
index a8155bd4..00000000
--- a/dialog/de-de/current.local.cold.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-derzeit ist es {temp}, also gut innerhalb meiner Betriebstemperatur
-Es sind {temp} grad, sehr angenehm für eine K. I.
diff --git a/dialog/de-de/current.local.hot.dialog b/dialog/de-de/current.local.hot.dialog
deleted file mode 100644
index 12130428..00000000
--- a/dialog/de-de/current.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Es liegt innerhalb meiner Betriebstemperatur, derzeit bei {temp} Grad
-Es ist {temp} Grad, ziemlich bequem für eine KI
diff --git a/dialog/de-de/do not know.dialog b/dialog/de-de/do not know.dialog
deleted file mode 100644
index 590ef930..00000000
--- a/dialog/de-de/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Ich fürchte, das weiß ich nicht
-Diese Information habe ich nicht
diff --git a/dialog/de-de/fog.alternative.dialog b/dialog/de-de/fog.alternative.dialog
deleted file mode 100644
index 3071cf63..00000000
--- a/dialog/de-de/fog.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Nein, aber die Prognose ist {condition} in {location}
-Wahrscheinlich wird es {condition} in {location} sein
-# Informieren, dass an einem Ort eine Alternative zum Nebel auftritt
-Es sieht so aus, als wäre {condition} in {location}
diff --git a/dialog/de-de/forecast.clear.alternative.dialog b/dialog/de-de/forecast.clear.alternative.dialog
deleted file mode 100644
index 647a3bfb..00000000
--- a/dialog/de-de/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zu Regen gibt
-Nein, aber die Prognose für {day} ist {condition} in {location}
-An {day} ist kein Regen in {location} vorhergesagt, aber es sieht so aus, als ob {day} {condition} kommt
diff --git a/dialog/de-de/forecast.cloudy.alternative.dialog b/dialog/de-de/forecast.cloudy.alternative.dialog
deleted file mode 100644
index 6a1f2adb..00000000
--- a/dialog/de-de/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass es eine Alternative zum klaren Himmel gibt
-# Nein, aber die {day} Prognose ist {condition} in {location}
-# In {location} am {day} sollte es nicht bewölkt sein, es sieht so aus, als gäbe es {condition}
-Scheint nicht so, die Wahrscheinlichkeit, dass {location} {condition} am {day} hat
diff --git a/dialog/de-de/forecast.foggy.alternative.dialog b/dialog/de-de/forecast.foggy.alternative.dialog
deleted file mode 100644
index 5fc8a3bb..00000000
--- a/dialog/de-de/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass eine Alternative zu Nebel auftritt
-Nein, die Prognose für {day} in {location} ruft {condition} auf.
-Es sieht so aus, als wäre {day} {condition} in {location}
-Wahrscheinlich wird es {day} {condition} in {location} sein
diff --git a/dialog/de-de/forecast.hot.dialog b/dialog/de-de/forecast.hot.dialog
deleted file mode 100644
index 3ebda1e2..00000000
--- a/dialog/de-de/forecast.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} Es wird {temp} Grad in {location} sein, ziemlich bequem für eine KI
-{day} die Temperatur wird {temp} in {location} liegen, was meinen Spezifikationen entspricht
diff --git a/dialog/de-de/forecast.local.clear.alternative.dialog b/dialog/de-de/forecast.local.clear.alternative.dialog
deleted file mode 100644
index e66a019f..00000000
--- a/dialog/de-de/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zum klaren Himmel gibt
-Nein, die Prognose {day} ist {condition}
-Es sieht so aus, als gäbe es {condition}{day}
diff --git a/dialog/de-de/forecast.local.cloudy.alternative.dialog b/dialog/de-de/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index c027f799..00000000
--- a/dialog/de-de/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass es eine Alternative zum klaren Himmel gibt
-Nein, die Prognose {day} ist {condition}
-Es wird wahrscheinlich nicht bewölkt sein {day}, es sieht so aus, als würde es {condition} geben
-Scheint nicht so; wahrscheinlich wird es {condition} {day}
diff --git a/dialog/de-de/forecast.local.foggy.alternative.dialog b/dialog/de-de/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 23092a22..00000000
--- a/dialog/de-de/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass eine Alternative zu Nebel auftritt
-Nein, die Prognose {day} ist {condition}
-Es sieht so aus, als gäbe es {condition} {day}
-Chancen stehen gut, dass es {condition} {day} wird
diff --git a/dialog/de-de/forecast.local.hot.dialog b/dialog/de-de/forecast.local.hot.dialog
deleted file mode 100644
index d073dbbe..00000000
--- a/dialog/de-de/forecast.local.hot.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} wird es {temp} sein, ziemlich bequem für eine KI
diff --git a/dialog/de-de/forecast.local.no.clear.predicted.dialog b/dialog/de-de/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 8b009f1d..00000000
--- a/dialog/de-de/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es eindeutig ist, aber eine Alternative angezeigt wird
-Entschuldigung, für {day} wird kein klares Wetter vorausgesagt
-{day} wird es höchstwahrscheinlich nicht klar sein
diff --git a/dialog/de-de/forecast.local.no.cloudy.predicted.dialog b/dialog/de-de/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index 073fcbd6..00000000
--- a/dialog/de-de/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Wenn der Benutzer fragt, ob es bewölkt ist, aber nicht
-Es scheint nicht so, als würde es {day} bewölkt sein
-{day} wird Klarer Himmel vorhergesagt
-Erwarte einen klaren Himmel {day}
-Es sollte {day} nicht bewölkt sein
diff --git a/dialog/de-de/forecast.local.no.fog.predicted.dialog b/dialog/de-de/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index d2f68a19..00000000
--- a/dialog/de-de/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es nebelig ist, aber kein Schnee oder keine Alternative angezeigt wird
-{day} sollte es gute Sicht geben
-{day} wird kein Nebel vorhergesagt
diff --git a/dialog/de-de/forecast.local.no.rain.predicted.dialog b/dialog/de-de/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index 13224ed0..00000000
--- a/dialog/de-de/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber kein Regen oder eine Alternative angezeigt wird
-Es wird kein Regen {day} vorhergesagt
-Es sollte nicht regnen {day}
-Du brauchst keinen Regenschirm {day}
diff --git a/dialog/de-de/forecast.local.no.snow.predicted.dialog b/dialog/de-de/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index 980e8686..00000000
--- a/dialog/de-de/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es schneit, aber kein Schnee oder eine Alternative ist
-Es wird {day} kein Schnee vorhergesagt
-Es wird {day} nicht schneien
diff --git a/dialog/de-de/forecast.local.no.storm.predicted.dialog b/dialog/de-de/forecast.local.no.storm.predicted.dialog
deleted file mode 100644
index d4a8275c..00000000
--- a/dialog/de-de/forecast.local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber kein Regen oder eine Alternative angezeigt wird
-Es wird {day} kein Sturm vorhergesagt
-{day}, sollte es nicht stürmen
-Es sollte nicht stürmen {day}
diff --git a/dialog/de-de/forecast.local.raining.alternative.dialog b/dialog/de-de/forecast.local.raining.alternative.dialog
deleted file mode 100644
index 589242db..00000000
--- a/dialog/de-de/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zu Regen gibt
-Nein, aber die Prognose {day} ist {condition}
-{day} ist kein Regen vorhergesagt, aber es sieht so aus, als ob {condition} kommt
diff --git a/dialog/de-de/forecast.local.storm.alternative.dialog b/dialog/de-de/forecast.local.storm.alternative.dialog
deleted file mode 100644
index 38262cd8..00000000
--- a/dialog/de-de/forecast.local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zu Regen gibt
-Nein, aber die Prognose {day} ist {condition}
-{day} ist kein Sturm vorhergesagt, aber es sieht so aus, als ob {condition} kommt
diff --git a/dialog/de-de/forecast.no.clear.predicted.dialog b/dialog/de-de/forecast.no.clear.predicted.dialog
deleted file mode 100644
index 84baa570..00000000
--- a/dialog/de-de/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es eindeutig ist, aber eine Alternative angezeigt wird
-Entschuldigung, die Vorhersage {day} sagt keine klaren Bedingungen in {location} voraus
-{day} ist es wahrscheinlich nicht klares Wetter in {location}
diff --git a/dialog/de-de/forecast.no.cloudy.predicted.dialog b/dialog/de-de/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index 61f336a5..00000000
--- a/dialog/de-de/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Wenn der Benutzer fragt, ob es bewölkt ist, aber nicht
-Es scheint nicht so, als würde es {day} in {location} bewölkt sein
-Klarer Himmel {day} in {location} wird vorhergesagt
-Ich erwarte klaren Himmel {day} in {location}
-Es wird in {location} {day} nicht schneien
diff --git a/dialog/de-de/forecast.no.fog.predicted.dialog b/dialog/de-de/forecast.no.fog.predicted.dialog
deleted file mode 100644
index 1ec7f003..00000000
--- a/dialog/de-de/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es nebelig ist, aber kein Schnee oder keine Alternative angezeigt wird
-{day} sollte die Sicht in {location} gut sein
-Für {day} wird in {location} kein Nebel vorhergesagt
diff --git a/dialog/de-de/forecast.no.rain.predicted.dialog b/dialog/de-de/forecast.no.rain.predicted.dialog
deleted file mode 100644
index 4fcaf6c0..00000000
--- a/dialog/de-de/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber kein Regen oder eine Alternative angezeigt wird
-Für {location} wird am {day} kein Regen vorhergesagt
-Es wird {day} nicht regnen in {location}
-In {location} brauchst du {day} keinen Regenschirm.
diff --git a/dialog/de-de/forecast.no.snow.predicted.dialog b/dialog/de-de/forecast.no.snow.predicted.dialog
deleted file mode 100644
index 035fb6d8..00000000
--- a/dialog/de-de/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es schneit, aber kein Schnee oder eine Alternative ist
-In {location} wird für {day} kein Schnee vorhergesagt
-Es wird {day} nicht schneien in {location}
diff --git a/dialog/de-de/forecast.no.storm.predicted.dialog b/dialog/de-de/forecast.no.storm.predicted.dialog
deleted file mode 100644
index 841c00f6..00000000
--- a/dialog/de-de/forecast.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber kein Regen oder eine Alternative angezeigt wird
-Für {location} {day} wird kein Sturm vorhergesagt
-Es wird {day} nicht stürmen in {location}
-Es ist unwahrscheinlich, dass {day} in {location} stürmt.
diff --git a/dialog/de-de/forecast.raining.alternative.dialog b/dialog/de-de/forecast.raining.alternative.dialog
deleted file mode 100644
index ff03025c..00000000
--- a/dialog/de-de/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zu Regen gibt
-Nein, aber die Prognose {day} ist {condition} in {location}
-{day} ist kein Regen in {location} vorhergesagt, aber es sieht so aus, als ob {condition} kommt
diff --git a/dialog/de-de/forecast.snowing.alternative.dialog b/dialog/de-de/forecast.snowing.alternative.dialog
deleted file mode 100644
index 21754de1..00000000
--- a/dialog/de-de/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass eine Alternative zum Schneefall auftritt
-Nein, aber die {day} Prognose ist {condition}
-{day} wird kein Schnee vorhergesagt, aber die Chance ist, dass es {condition} ist.
diff --git a/dialog/de-de/forecast.storm.alternative.dialog b/dialog/de-de/forecast.storm.alternative.dialog
deleted file mode 100644
index 5b0b8308..00000000
--- a/dialog/de-de/forecast.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Nein, aber die Prognose {day} ist {condition} in {location}
-# Informieren, dass eine Alternative zum Sturm auftreten wird
-{day} ist kein Regen in {location} vorhergesagt, aber es sieht so aus, als ob {condition} kommt
diff --git a/dialog/de-de/from.day.dialog b/dialog/de-de/from.day.dialog
deleted file mode 100644
index 4e2d099a..00000000
--- a/dialog/de-de/from.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Ab {day}
diff --git a/dialog/de-de/heavy.dialog b/dialog/de-de/heavy.dialog
deleted file mode 100644
index e26309cb..00000000
--- a/dialog/de-de/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-schwerer
diff --git a/dialog/de-de/light.dialog b/dialog/de-de/light.dialog
deleted file mode 100644
index c5141f41..00000000
--- a/dialog/de-de/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-leichter
diff --git a/dialog/de-de/local.clear.alternative.dialog b/dialog/de-de/local.clear.alternative.dialog
deleted file mode 100644
index a02e2288..00000000
--- a/dialog/de-de/local.clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass es eine Alternative zum klaren Himmel gibt
-Nein, die Prognose heute ist {condition}
-Es sieht so aus, als gäbe es heute {condition}
-Chancen stehen gut, dass es heute {condition} wird
diff --git a/dialog/de-de/local.cloudy.alternative.dialog b/dialog/de-de/local.cloudy.alternative.dialog
deleted file mode 100644
index 23d0a4d2..00000000
--- a/dialog/de-de/local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Nein, die Prognose heute ist {condition}
-# Es wird darauf hingewiesen, dass eine Alternative zum bewölkten Himmel auftreten wird
-Es wird wahrscheinlich nicht bewölkt sein, es sieht so aus, als würde es {condition} geben
-Scheint nicht so, es ist wahrscheinlich, dass es heute {condition} sein wird
diff --git a/dialog/de-de/local.foggy.alternative.dialog b/dialog/de-de/local.foggy.alternative.dialog
deleted file mode 100644
index 6b69e3fe..00000000
--- a/dialog/de-de/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informieren, dass eine Alternative zu Nebel auftritt
-Nein, die Prognose heute ist {condition}
-Es sieht so aus, als gäbe es heute {condition}
-Chancen stehen gut, dass es heute {condition} wird
diff --git a/dialog/de-de/local.no.cloudy.predicted.dialog b/dialog/de-de/local.no.cloudy.predicted.dialog
deleted file mode 100644
index 0e918ca4..00000000
--- a/dialog/de-de/local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber keine Wolke oder Alternative vorhergesagt wird
-Für heute ist kein Nebel vorhergesagt
-Es sollte heute nicht bewölkt sein
diff --git a/dialog/de-de/local.no.fog.predicted.dialog b/dialog/de-de/local.no.fog.predicted.dialog
deleted file mode 100644
index f6a8878e..00000000
--- a/dialog/de-de/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es nebelig ist, aber kein Schnee oder keine Alternative angezeigt wird
-Die Sicht scheint heute gut zu sein
-Für heute ist kein Nebel vorhergesagt
diff --git a/dialog/de-de/local.no.rain.predicted.dialog b/dialog/de-de/local.no.rain.predicted.dialog
deleted file mode 100644
index 130edc97..00000000
--- a/dialog/de-de/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber kein Regen oder eine Alternative angezeigt wird
-Es wird heute kein Regen vorhergesagt
-Es sollte heute nicht regnen
-Es ist heute kein Regenschirm nötig
diff --git a/dialog/de-de/local.no.snow.predicted.dialog b/dialog/de-de/local.no.snow.predicted.dialog
deleted file mode 100644
index 18fd8c87..00000000
--- a/dialog/de-de/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es schneit, aber kein Schnee oder keine Alternative vorhergesagt wird
-Es wird heute kein Schnee vorhergesagt
-Es sollte nicht schneien heute
diff --git a/dialog/de-de/local.no.storm.predicted.dialog b/dialog/de-de/local.no.storm.predicted.dialog
deleted file mode 100644
index 0fa4025b..00000000
--- a/dialog/de-de/local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber kein Regen oder eine Alternative angezeigt wird
-Es wird heute kein Sturm vorhergesagt
-Es sollte nicht stürmen heute
-Es sollte heute keinen Sturm geben
-es ist unwahrscheinlich, dass es heute stürmt
-Ein Sturm ist heute nicht wahrscheinlich
diff --git a/dialog/de-de/local.raining.alternative.dialog b/dialog/de-de/local.raining.alternative.dialog
deleted file mode 100644
index e02f96ed..00000000
--- a/dialog/de-de/local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zu Regen gibt (wie Schnee oder Nebel)
-Nein, aber die Prognose ist {condition}
-Es wird kein Regen für heute vorhergesagt, aber es sieht so aus, als würde es {condition} geben.
diff --git a/dialog/de-de/local.snowing.alternative.dialog b/dialog/de-de/local.snowing.alternative.dialog
deleted file mode 100644
index a8818ed7..00000000
--- a/dialog/de-de/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass eine Alternative zum Schneefall auftritt
-Nein, aber die Prognose ist {condition}
-Es ist kein Schnee für heute vorhergesagt, aber die Chancen stehen gut, dass es {condition} wird.
diff --git a/dialog/de-de/local.storm.alternative.dialog b/dialog/de-de/local.storm.alternative.dialog
deleted file mode 100644
index a27813e9..00000000
--- a/dialog/de-de/local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Nein, aber die Prognose ist {condition}
-# Informieren, dass es eine Alternative zu Regen gibt (wie Schnee oder Nebel)
-Es wird kein Sturm für heute vorhergesagt, aber es sieht so aus, als würde es {condition}
diff --git a/dialog/de-de/no.clear.predicted.dialog b/dialog/de-de/no.clear.predicted.dialog
deleted file mode 100644
index 9c262a51..00000000
--- a/dialog/de-de/no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es klar ist, aber nicht
-Sorry, es sieht so aus, als würde es {condition} geben
-Es wird wahrscheinlich keinen klaren Himmel geben
diff --git a/dialog/de-de/no.cloudy.predicted.dialog b/dialog/de-de/no.cloudy.predicted.dialog
deleted file mode 100644
index 9c61f05f..00000000
--- a/dialog/de-de/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es bewölkt ist, aber nicht
-Es scheint heute nicht bewölkt zu sein
-Es sollte nicht bewölkt sein
diff --git a/dialog/de-de/no.fog.predicted.dialog b/dialog/de-de/no.fog.predicted.dialog
deleted file mode 100644
index e2925588..00000000
--- a/dialog/de-de/no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es nebelig ist, aber kein Schnee oder keine Alternative angezeigt wird
-Die Sicht scheint gut zu sein in {location}
-Für {location} wird heute kein Nebel vorhergesagt
diff --git a/dialog/de-de/no.rain.predicted.dialog b/dialog/de-de/no.rain.predicted.dialog
deleted file mode 100644
index e5cf5958..00000000
--- a/dialog/de-de/no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Wenn der Benutzer fragt, ob es regnet, aber kein Regen oder eine Alternative angezeigt wird
-Es wird kein Regen für {location} vorhergesagt
-Es sollte nicht regnen in {location}
-In {location} brauchst du keinen Regenschirm.
diff --git a/dialog/de-de/no.snow.predicted.dialog b/dialog/de-de/no.snow.predicted.dialog
deleted file mode 100644
index 32e17841..00000000
--- a/dialog/de-de/no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wenn der Benutzer fragt, ob es schneit, aber kein Schnee oder eine Alternative ist
-Es wird kein Schnee für {location} vorhergesagt
-Es wird nicht schneien in {location}
diff --git a/dialog/de-de/no.storm.predicted.dialog b/dialog/de-de/no.storm.predicted.dialog
deleted file mode 100644
index ac1605c0..00000000
--- a/dialog/de-de/no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Wenn der Benutzer fragt, ob es schneit, aber kein Schnee oder eine Alternative ist
-Es wird kein Sturm für {location} vorhergesagt
-Es wird nicht stürmisch in {location}
-Es wird nicht stürmen in {location}
diff --git a/dialog/de-de/on.date.dialog b/dialog/de-de/on.date.dialog
deleted file mode 100644
index 1b65dc25..00000000
--- a/dialog/de-de/on.date.dialog
+++ /dev/null
@@ -1 +0,0 @@
-am
diff --git a/dialog/de-de/on.dialog b/dialog/de-de/on.dialog
deleted file mode 100644
index 17f49231..00000000
--- a/dialog/de-de/on.dialog
+++ /dev/null
@@ -1 +0,0 @@
-ein
diff --git a/dialog/de-de/raining.alternative.dialog b/dialog/de-de/raining.alternative.dialog
deleted file mode 100644
index f011f726..00000000
--- a/dialog/de-de/raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass es eine Alternative zu Regen gibt (wie Schnee oder Nebel)
-Nein, aber die Prognose ist {condition} in {location}
-Es wird in {location} kein Regen vorhergesagt heute, aber es sieht so aus, als würde es {condition} geben.
diff --git a/dialog/de-de/report.condition.at.location.dialog b/dialog/de-de/report.condition.at.location.dialog
deleted file mode 100644
index 672df5bb..00000000
--- a/dialog/de-de/report.condition.at.location.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Derzeit ist {condition} in {location} {value}
diff --git a/dialog/de-de/report.condition.dialog b/dialog/de-de/report.condition.dialog
deleted file mode 100644
index 868277ff..00000000
--- a/dialog/de-de/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Derzeit ist {condition} {value}
diff --git a/dialog/de-de/report.condition.future.at.location.dialog b/dialog/de-de/report.condition.future.at.location.dialog
deleted file mode 100644
index 71064758..00000000
--- a/dialog/de-de/report.condition.future.at.location.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} in {location} {day} wird {value}
-Am {day} wird in {location} für {condition} {value} vorhergesagt
diff --git a/dialog/de-de/report.condition.future.dialog b/dialog/de-de/report.condition.future.dialog
deleted file mode 100644
index e7f4397c..00000000
--- a/dialog/de-de/report.condition.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} am {day} wird {value} sein
-Am {day} wird für {condition} {value} vorhergesagt
diff --git a/dialog/de-de/report.wind.dialog b/dialog/de-de/report.wind.dialog
deleted file mode 100644
index e6628b93..00000000
--- a/dialog/de-de/report.wind.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{condition} ist {value}
diff --git a/dialog/de-de/sky is clear.future.dialog b/dialog/de-de/sky is clear.future.dialog
deleted file mode 100644
index 39e5a15b..00000000
--- a/dialog/de-de/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Klarer Himmel
diff --git a/dialog/de-de/snowing.alternative.dialog b/dialog/de-de/snowing.alternative.dialog
deleted file mode 100644
index 90916ab7..00000000
--- a/dialog/de-de/snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informieren, dass eine Alternative zum Schneefall auftritt
-Nein, aber die Prognose ist {condition} in {location}
-Es ist kein Schnee {location} vorhergesagt heute, aber die Chancen stehen gut, dass es {condition} wird.
diff --git a/dialog/de-de/storm.alternative.dialog b/dialog/de-de/storm.alternative.dialog
deleted file mode 100644
index 3ca8e4d8..00000000
--- a/dialog/de-de/storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Nein, aber die Prognose ist {condition} in {location}
-# Informieren, dass es eine Alternative zu Regen gibt (wie Schnee oder Nebel)
-Für heute ist in {location} kein Sturm vorhergesagt, aber es sieht so aus, als gäbe es {condition}
diff --git a/dialog/de-de/sunrise.dialog b/dialog/de-de/sunrise.dialog
deleted file mode 100644
index 85e35337..00000000
--- a/dialog/de-de/sunrise.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Die Sonne geht heute um {time} auf
-Sonnenaufgang war heute um {time}
diff --git a/dialog/de-de/sunset.dialog b/dialog/de-de/sunset.dialog
deleted file mode 100644
index 767cbe42..00000000
--- a/dialog/de-de/sunset.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-die sonne geht heute um {time} unter
-Die Sonne wird heute um {time} untergehen
-Der Sonnenuntergang ist heute um {time}
diff --git a/dialog/de-de/tonight.local.weather.dialog b/dialog/de-de/tonight.local.weather.dialog
deleted file mode 100644
index 8116b065..00000000
--- a/dialog/de-de/tonight.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Heute Abend wird es {condition}, mit Temperaturen nahe {temp}
-Später wird es {condition} und wir haben um die {temp} Grad
-Später wird es {condition} und wir haben {temp} Grad
-Um die {temp} Grad bei {condition} Heute Abend
diff --git a/dialog/de-de/weekly.condition.on.day.dialog b/dialog/de-de/weekly.condition.on.day.dialog
deleted file mode 100644
index 045a35e8..00000000
--- a/dialog/de-de/weekly.condition.on.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} wird es {condition},
diff --git a/dialog/de-de/weekly.conditions.mostly.one.dialog b/dialog/de-de/weekly.conditions.mostly.one.dialog
deleted file mode 100644
index 28481a0e..00000000
--- a/dialog/de-de/weekly.conditions.mostly.one.dialog
+++ /dev/null
@@ -1 +0,0 @@
-es wird meistens {condition}.
diff --git a/dialog/de-de/weekly.conditions.seq.extra.dialog b/dialog/de-de/weekly.conditions.seq.extra.dialog
deleted file mode 100644
index 9fa71f00..00000000
--- a/dialog/de-de/weekly.conditions.seq.extra.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-wie es aussieht wird es auch
-es wird auch
diff --git a/dialog/de-de/weekly.conditions.seq.period.dialog b/dialog/de-de/weekly.conditions.seq.period.dialog
deleted file mode 100644
index 5e29471a..00000000
--- a/dialog/de-de/weekly.conditions.seq.period.dialog
+++ /dev/null
@@ -1 +0,0 @@
-von {from} zu {to}
diff --git a/dialog/de-de/weekly.conditions.seq.start.dialog b/dialog/de-de/weekly.conditions.seq.start.dialog
deleted file mode 100644
index 8ef6acc6..00000000
--- a/dialog/de-de/weekly.conditions.seq.start.dialog
+++ /dev/null
@@ -1 +0,0 @@
-es wird {condition}
diff --git a/dialog/de-de/weekly.conditions.some.days.dialog b/dialog/de-de/weekly.conditions.some.days.dialog
deleted file mode 100644
index 2908f4c2..00000000
--- a/dialog/de-de/weekly.conditions.some.days.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Es wird einige Tage {condition} geben.
diff --git a/dialog/de-de/wind.speed.dialog b/dialog/de-de/wind.speed.dialog
deleted file mode 100644
index b98efb6f..00000000
--- a/dialog/de-de/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{speed} {unit}
diff --git a/dialog/de-de/wind.speed.dir.dialog b/dialog/de-de/wind.speed.dir.dialog
deleted file mode 100644
index da512647..00000000
--- a/dialog/de-de/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-mit {speed} {unit} aus Richtung {dir}
-aus Richtung {dir} mit {speed} {unit}
diff --git a/dialog/de-de/wind.strength.hard.dialog b/dialog/de-de/wind.strength.hard.dialog
deleted file mode 100644
index 3658ef1e..00000000
--- a/dialog/de-de/wind.strength.hard.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Das ist ziemlich stark
diff --git a/dialog/de-de/wind.strength.light.dialog b/dialog/de-de/wind.strength.light.dialog
deleted file mode 100644
index 89b5b96f..00000000
--- a/dialog/de-de/wind.strength.light.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Nicht sehr windig
-Nicht viel Wind
-Ziemlich ruhig
diff --git a/dialog/de-de/wind.strength.medium.dialog b/dialog/de-de/wind.strength.medium.dialog
deleted file mode 100644
index 36811db0..00000000
--- a/dialog/de-de/wind.strength.medium.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Das wird luftig.
-Vielleicht möchten Sie eine Jacke mitnehmen
diff --git a/dialog/de-de/winds.dialog b/dialog/de-de/winds.dialog
deleted file mode 100644
index 837d8988..00000000
--- a/dialog/de-de/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Windgeschwindigkeit
diff --git a/dialog/en-us/RelativeDay.voc b/dialog/en-us/RelativeDay.voc
deleted file mode 100644
index ebcd27a6..00000000
--- a/dialog/en-us/RelativeDay.voc
+++ /dev/null
@@ -1,6 +0,0 @@
-today
-today's
-tomorrow
-tomorrow's
-yesterday
-yesterday's
diff --git a/dialog/en-us/and.dialog b/dialog/en-us/and.dialog
deleted file mode 100644
index cfa2dcfb..00000000
--- a/dialog/en-us/and.dialog
+++ /dev/null
@@ -1 +0,0 @@
-, and
diff --git a/dialog/en-us/at.time.cond.alternative.dialog b/dialog/en-us/at.time.cond.alternative.dialog
deleted file mode 100644
index e18a7ee1..00000000
--- a/dialog/en-us/at.time.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that at a specified time an alternative to some condition will occur
-No, the {time} forecast calls for {condition} in {location}
-Doesn't seem so, the {time} forecast suggests it's going to be {condition} in {location}
diff --git a/dialog/en-us/at.time.forecast.affirmative.condition.dialog b/dialog/en-us/at.time.forecast.affirmative.condition.dialog
deleted file mode 100644
index 2955d7db..00000000
--- a/dialog/en-us/at.time.forecast.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Affirmative response to questions like "is it going to snow in Paris tomorrow afternoon"
-Yes, the {time} forecast suggests {condition} in {location} {day}
-Yes, the {time} forecast calls for {condition} in {location} {day}
diff --git a/dialog/en-us/at.time.forecast.cond.alternative.dialog b/dialog/en-us/at.time.forecast.cond.alternative.dialog
deleted file mode 100644
index 4ff83c19..00000000
--- a/dialog/en-us/at.time.forecast.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to clear skies will occur at specified time
-No, the {time} forecast {day} calls for {condition} in {location}
-Doesn't seem so, the {time} forecast {day} suggests {location} will have {condition}
diff --git a/dialog/en-us/at.time.forecast.local.affirmative.condition.dialog b/dialog/en-us/at.time.forecast.local.affirmative.condition.dialog
deleted file mode 100644
index c1fb5a12..00000000
--- a/dialog/en-us/at.time.forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Affirmative response to questions like "is it going to snow tomorrow"
-Yes, expect {condition} according to the {time} forecast {day}
-Yes, the {time} forecast calls for {condition} {day}
diff --git a/dialog/en-us/at.time.forecast.local.cond.alternative.dialog b/dialog/en-us/at.time.forecast.local.cond.alternative.dialog
deleted file mode 100644
index a6d9dbfa..00000000
--- a/dialog/en-us/at.time.forecast.local.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, the {time} forecast {day} calls for {condition}
-Doesn't seem so, the {time} forecast {day} suggests it's going to be {condition}
diff --git a/dialog/en-us/at.time.forecast.local.no.cond.predicted.dialog b/dialog/en-us/at.time.forecast.local.no.cond.predicted.dialog
deleted file mode 100644
index d787d2e8..00000000
--- a/dialog/en-us/at.time.forecast.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# When user asks if it's one condition but it's not
-No, the {time} forecast {day} suggests {condition}
diff --git a/dialog/en-us/at.time.forecast.no.cond.predicted.dialog b/dialog/en-us/at.time.forecast.no.cond.predicted.dialog
deleted file mode 100644
index ff6d148e..00000000
--- a/dialog/en-us/at.time.forecast.no.cond.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's a condition but it's not
-No, the {time} forecast in {location} suggests it will be {condition}
-It doesn't seem so, the {time} forecast in {location} suggests it will be {condition}
diff --git a/dialog/en-us/at.time.local.cond.alternative.dialog b/dialog/en-us/at.time.local.cond.alternative.dialog
deleted file mode 100644
index b6f5ee33..00000000
--- a/dialog/en-us/at.time.local.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to a condition will occur
-No, the {time} forecast calls for {condition} today
-Doesn't seem so, the {time} forecast suggests it will be {condition}
diff --git a/dialog/en-us/at.time.local.high.temperature.dialog b/dialog/en-us/at.time.local.high.temperature.dialog
deleted file mode 100644
index 38a48b84..00000000
--- a/dialog/en-us/at.time.local.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will be as high as {temp} degrees {time}
-{time}, it will get up to {temp} degrees
diff --git a/dialog/en-us/at.time.local.low.temperature.dialog b/dialog/en-us/at.time.local.low.temperature.dialog
deleted file mode 100644
index 7b074b0b..00000000
--- a/dialog/en-us/at.time.local.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will be as low as {temp} degrees {time}
-{time}, it will get down to {temp} degrees
diff --git a/dialog/en-us/at.time.local.no.cond.predicted.dialog b/dialog/en-us/at.time.local.no.cond.predicted.dialog
deleted file mode 100644
index f4b343c0..00000000
--- a/dialog/en-us/at.time.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# When user asks if it's raining but no cloud or alternative is forcasted
-No the {time} forecast suggests not
diff --git a/dialog/en-us/at.time.local.temperature.dialog b/dialog/en-us/at.time.local.temperature.dialog
deleted file mode 100644
index a9ee4112..00000000
--- a/dialog/en-us/at.time.local.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will be about {temp} degrees {time}
-{time}, it will be {temp} degrees
diff --git a/dialog/en-us/at.time.local.weather.dialog b/dialog/en-us/at.time.local.weather.dialog
deleted file mode 100644
index 4f00a10f..00000000
--- a/dialog/en-us/at.time.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-It will be {condition}, with temperatures near {temp} in the {time}
-{time}, it will be {condition} and around {temp} degrees
-{time}, it will be {condition} and {temp} degrees
-{time}, it will be {temp} degrees with {condition}
diff --git a/dialog/en-us/at.time.no.cond.predicted.dialog b/dialog/en-us/at.time.no.cond.predicted.dialog
deleted file mode 100644
index 708d79d4..00000000
--- a/dialog/en-us/at.time.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# When user asks if it's a conditions but it's not
-No, the {time} forecast in {location} suggests not
diff --git a/dialog/en-us/clear.alternative.dialog b/dialog/en-us/clear.alternative.dialog
deleted file mode 100644
index b8ce4992..00000000
--- a/dialog/en-us/clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, the forecast calls for {condition} in {location}
-It looks like there will be {condition} in {location}
-Chances are it's going to be {condition} in {location}
diff --git a/dialog/en-us/clear.future.dialog b/dialog/en-us/clear.future.dialog
deleted file mode 100644
index dceb7a14..00000000
--- a/dialog/en-us/clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-a clear sky
diff --git a/dialog/en-us/cloudy.alternative.dialog b/dialog/en-us/cloudy.alternative.dialog
deleted file mode 100644
index 90295084..00000000
--- a/dialog/en-us/cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, the forecast calls for {condition}
-It should not be cloudy, it looks like there'll be {condition}
-Doesn't seem so, chances are it's going to be {condition}
diff --git a/dialog/en-us/condition.category.value b/dialog/en-us/condition.category.value
deleted file mode 100644
index d8a78348..00000000
--- a/dialog/en-us/condition.category.value
+++ /dev/null
@@ -1,15 +0,0 @@
-Clouds,cloudy
-Clear,a clear sky
-Thunderstorm,storming
-Drizzle,drizzling
-Rain,raining
-Snow,snowing
-Mist,misty
-Smoke,smokey
-Haze,hazey
-Dust,dusty
-Fog,foggy
-Sand,sandy
-Ash,cloudy with possible volcanic ash
-Squall,storming
-Tornado,storming with a possible tornado
diff --git a/dialog/en-us/current.high.temperature.dialog b/dialog/en-us/current.high.temperature.dialog
deleted file mode 100644
index 36619745..00000000
--- a/dialog/en-us/current.high.temperature.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-A high of {temp_max} degrees {scale} is expected in {location}.
-A high of {temp_max} degrees can be expected in {location}.
-Today a the temperature will reach {temp_max} degrees in {location}.
-
diff --git a/dialog/en-us/current.hot.dialog b/dialog/en-us/current.hot.dialog
deleted file mode 100644
index dab62958..00000000
--- a/dialog/en-us/current.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It's {temp} degrees {scale} in {location}, well within my operational temperature.
-It's {temp} degrees in {location} which suits an A.I. just fine.
diff --git a/dialog/en-us/current.local.cold.dialog b/dialog/en-us/current.local.cold.dialog
deleted file mode 100644
index a2d3aec2..00000000
--- a/dialog/en-us/current.local.cold.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-currently it's {temp}, well within my operational temperature
-It's {temp}, quite comfy for an A. I.
diff --git a/dialog/en-us/current.local.high.temperature.dialog b/dialog/en-us/current.local.high.temperature.dialog
deleted file mode 100644
index 789f7c3e..00000000
--- a/dialog/en-us/current.local.high.temperature.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-A high of {temp_max} degrees {scale} is expected.
-A high of {temp_max} degrees can be expected.
-Today the temperature will reach {temp_max} degrees.
-
diff --git a/dialog/en-us/current.local.hot.dialog b/dialog/en-us/current.local.hot.dialog
deleted file mode 100644
index 8b6a065c..00000000
--- a/dialog/en-us/current.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It's within my operational temperature, currently at {temp} degrees
-It's {temp} degrees, quite comfy for an AI
diff --git a/dialog/en-us/current.local.low.temperature.dialog b/dialog/en-us/current.local.low.temperature.dialog
deleted file mode 100644
index 8cde8694..00000000
--- a/dialog/en-us/current.local.low.temperature.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-A low of {temp_min} degrees {scale} is expected.
-A low of {temp_min} degrees can be expected.
-Today it will be as low as {temp_min} degrees.
-
diff --git a/dialog/en-us/current.local.temperature.dialog b/dialog/en-us/current.local.temperature.dialog
deleted file mode 100644
index 728a4c23..00000000
--- a/dialog/en-us/current.local.temperature.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-It's currently {temp} degrees {scale}.
-It's currently {temp} degrees.
-Right now, it's {temp} degrees.
-
diff --git a/dialog/en-us/current.local.weather.dialog b/dialog/en-us/current.local.weather.dialog
deleted file mode 100644
index b38fd0a1..00000000
--- a/dialog/en-us/current.local.weather.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-It's currently {condition} and {temp} degrees {scale}.
-It's currently {condition} and {temp} degrees.
-Right now, it's {condition} and {temp} degrees.
diff --git a/dialog/en-us/current.low.temperature.dialog b/dialog/en-us/current.low.temperature.dialog
deleted file mode 100644
index 0f45c4e5..00000000
--- a/dialog/en-us/current.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Today the temperature will be as low as {temp_min} degrees {scale} in {location}.
-Temperatures can be as low as {temp_min} degrees in {location}.
diff --git a/dialog/en-us/current.temperature.dialog b/dialog/en-us/current.temperature.dialog
deleted file mode 100644
index c7857bef..00000000
--- a/dialog/en-us/current.temperature.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-It's currently {temp} degrees {scale} in {location}.
-It's currently {temp} degrees in {location}.
-Right now, it's {temp} degrees in {location}.
-
diff --git a/dialog/en-us/current.weather.dialog b/dialog/en-us/current.weather.dialog
deleted file mode 100644
index 72eed86d..00000000
--- a/dialog/en-us/current.weather.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-It's currently {condition} and {temp} degrees {scale} in {location}. Today's forecast is for a high of {temp_max} and a low of {temp_min}.
-Right now, it's {condition} and {temp} degrees, for a high of {temp_max} and a low of {temp_min} in {location}.
-With a high of {temp_max} and a low of {temp_min}, {location} has {condition} and is currently {temp} degrees.
diff --git a/dialog/en-us/do not know.dialog b/dialog/en-us/do not know.dialog
deleted file mode 100644
index 6467724d..00000000
--- a/dialog/en-us/do not know.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-I'm afraid I don't know that
-I don't have that information
-
diff --git a/dialog/en-us/fog.alternative.dialog b/dialog/en-us/fog.alternative.dialog
deleted file mode 100644
index 4018ff7f..00000000
--- a/dialog/en-us/fog.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to fog will occur at a location
-No, the forecast calls for {condition} in {location}
-It looks like there'll be {condition} in {location}
-Chances are it's going to be {condition} in {location}
diff --git a/dialog/en-us/forecast.clear.alternative.dialog b/dialog/en-us/forecast.clear.alternative.dialog
deleted file mode 100644
index 2d412d9e..00000000
--- a/dialog/en-us/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, but the forecast {day} calls for {condition} in {location}
-{day}, there is no rain predicted {day} for {location} but it looks like there'll be {condition}
diff --git a/dialog/en-us/forecast.cloudy.alternative.dialog b/dialog/en-us/forecast.cloudy.alternative.dialog
deleted file mode 100644
index b83a80db..00000000
--- a/dialog/en-us/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# No, the forecast {day} calls for {condition} in {location}
-# It should not be cloudy in {location} {day}, it looks like there'll be {condition}
-Doesn't seem so, chances are {location} will have {condition} {day}
diff --git a/dialog/en-us/forecast.foggy.alternative.dialog b/dialog/en-us/forecast.foggy.alternative.dialog
deleted file mode 100644
index 25966c4b..00000000
--- a/dialog/en-us/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to fog will occur
-No, the forecast {day} for {location} calls for {condition}
-It looks like there'll be {condition} in {location} {day}
-Chances are it's going to be {condition} in {location} {day}
diff --git a/dialog/en-us/forecast.hard.wind.dialog b/dialog/en-us/forecast.hard.wind.dialog
deleted file mode 100644
index f0cca68f..00000000
--- a/dialog/en-us/forecast.hard.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will be {wind} {wind_unit} in {location} {day}
-The wind will be as strong as {wind} {wind_unit} in {location} {day}
diff --git a/dialog/en-us/forecast.high.temperature.dialog b/dialog/en-us/forecast.high.temperature.dialog
deleted file mode 100644
index c90de69b..00000000
--- a/dialog/en-us/forecast.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will be as high as {temp_max} degrees in {location} {day}
-{location} will have a high of {temp_max} degrees {day}
diff --git a/dialog/en-us/forecast.hot.dialog b/dialog/en-us/forecast.hot.dialog
deleted file mode 100644
index b1c64f99..00000000
--- a/dialog/en-us/forecast.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} it'll be {temp} degrees in {location}, quite comfy for an A.I.
-{day} the temperature will be {temp} in {location}, well within my specifications
diff --git a/dialog/en-us/forecast.light.wind.dialog b/dialog/en-us/forecast.light.wind.dialog
deleted file mode 100644
index 0e010c1b..00000000
--- a/dialog/en-us/forecast.light.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will not be very windy in {location} {day}
-In {location} {day} there's going to be no wind to speak of
diff --git a/dialog/en-us/forecast.local.affirmative.condition.dialog b/dialog/en-us/forecast.local.affirmative.condition.dialog
deleted file mode 100644
index 066ed694..00000000
--- a/dialog/en-us/forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Affirmative response to questions like "is it going to snow tomorrow"
-Yes, expect {condition}
-Yes, the forecast calls for {condition}
diff --git a/dialog/en-us/forecast.local.clear.alternative.dialog b/dialog/en-us/forecast.local.clear.alternative.dialog
deleted file mode 100644
index 9b427c06..00000000
--- a/dialog/en-us/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, the forecast {day} calls for {condition}
-{day}, it looks like there'll be {condition}
diff --git a/dialog/en-us/forecast.local.cloudy.alternative.dialog b/dialog/en-us/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index 42a473bf..00000000
--- a/dialog/en-us/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, the forecast {day} calls for {condition}
-It should not be cloudy, it looks like there'll be {condition} {day}
-Doesn't seem so, chances are it's going to be {condition} {day}
diff --git a/dialog/en-us/forecast.local.foggy.alternative.dialog b/dialog/en-us/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 5b9a7b0f..00000000
--- a/dialog/en-us/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to fog will occur
-No, the forecast {day} calls for {condition}
-It looks like there'll be {condition} {day}
-Chances are it's going to be {condition} {day}
diff --git a/dialog/en-us/forecast.local.hard.wind.dialog b/dialog/en-us/forecast.local.hard.wind.dialog
deleted file mode 100644
index eb7794f3..00000000
--- a/dialog/en-us/forecast.local.hard.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will be {wind} {wind_unit} {day}
-The wind will be as strong as {wind} {wind_unit} {day}
diff --git a/dialog/en-us/forecast.local.high.temperature.dialog b/dialog/en-us/forecast.local.high.temperature.dialog
deleted file mode 100644
index 156cddfc..00000000
--- a/dialog/en-us/forecast.local.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} it will be as high as {temp_max}
-{day} the temperature will be as high as {temp_max} degrees.
diff --git a/dialog/en-us/forecast.local.hot.dialog b/dialog/en-us/forecast.local.hot.dialog
deleted file mode 100644
index 6ad4c1a2..00000000
--- a/dialog/en-us/forecast.local.hot.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} it'll be {temp}, quite comfy for an AI
diff --git a/dialog/en-us/forecast.local.light.wind.dialog b/dialog/en-us/forecast.local.light.wind.dialog
deleted file mode 100644
index 8d7efbf0..00000000
--- a/dialog/en-us/forecast.local.light.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-It will not be very windy {day}
-There's going to be no wind to speak of {day}
diff --git a/dialog/en-us/forecast.local.low.temperature.dialog b/dialog/en-us/forecast.local.low.temperature.dialog
deleted file mode 100644
index af82ed3f..00000000
--- a/dialog/en-us/forecast.local.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} it will be as low as {temp_min}
-{day} the temperature will be as low as {temp_min} degrees.
diff --git a/dialog/en-us/forecast.local.medium.wind.dialog b/dialog/en-us/forecast.local.medium.wind.dialog
deleted file mode 100644
index 927f3f4b..00000000
--- a/dialog/en-us/forecast.local.medium.wind.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-The wind will not be too bad, about {wind} {wind_unit} {day}
-The forecast says {wind} {wind_unit} {day}, not too bad
-You can expect a wind of about {wind} {wind_unit} {day}
diff --git a/dialog/en-us/forecast.local.no.clear.predicted.dialog b/dialog/en-us/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 358a7bae..00000000
--- a/dialog/en-us/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's clear but an alternative is forcasted
-Sorry, the forecast doesn't predict clear conditions {day}
-{day}, it is not likely to be clear
diff --git a/dialog/en-us/forecast.local.no.cloudy.predicted.dialog b/dialog/en-us/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index ffe9d171..00000000
--- a/dialog/en-us/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's cloudy but it's not
-It doesn't seem like it's going to be cloudy {day}
-Clear skies are forecast {day}
-Expect clear skies {day}
-It should not be cloudy {day}
diff --git a/dialog/en-us/forecast.local.no.fog.predicted.dialog b/dialog/en-us/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index 77ab2208..00000000
--- a/dialog/en-us/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-{day} the visibility should be good
-No fog is predicted {day}
diff --git a/dialog/en-us/forecast.local.no.rain.predicted.dialog b/dialog/en-us/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index 9d8d8c98..00000000
--- a/dialog/en-us/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-No rain is predicted {day}
-It should not rain {day}
-You won't need an umbrella {day}
diff --git a/dialog/en-us/forecast.local.no.snow.predicted.dialog b/dialog/en-us/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index 9fa7a729..00000000
--- a/dialog/en-us/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-No snow is predicted {day}
-It will not snow {day}
diff --git a/dialog/en-us/forecast.local.no.storm.predicted.dialog b/dialog/en-us/forecast.local.no.storm.predicted.dialog
deleted file mode 100644
index cebb8664..00000000
--- a/dialog/en-us/forecast.local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-No storm is predicted {day}
-{day}, it should not storm
-It should not storm {day}
diff --git a/dialog/en-us/forecast.local.raining.alternative.dialog b/dialog/en-us/forecast.local.raining.alternative.dialog
deleted file mode 100644
index 27fd124e..00000000
--- a/dialog/en-us/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, but the forecast {day} calls for {condition}
-{day}, there is no rain predicted but it looks like there'll be {condition}
diff --git a/dialog/en-us/forecast.local.storm.alternative.dialog b/dialog/en-us/forecast.local.storm.alternative.dialog
deleted file mode 100644
index 50503cb6..00000000
--- a/dialog/en-us/forecast.local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, but the forecast {day} calls for {condition}
-{day}, there is no storm predicted but it looks like there'll be {condition}
diff --git a/dialog/en-us/forecast.local.temperature.dialog b/dialog/en-us/forecast.local.temperature.dialog
deleted file mode 100644
index 9b0f64bd..00000000
--- a/dialog/en-us/forecast.local.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} it will be {temp}
-{day} the temperature will be {temp} degrees.
diff --git a/dialog/en-us/forecast.local.weather.dialog b/dialog/en-us/forecast.local.weather.dialog
deleted file mode 100644
index 3f43accd..00000000
--- a/dialog/en-us/forecast.local.weather.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-{day} expect {condition}, with a high of {temp_max} and a low of {temp_min}
-Expect {condition}, with a high of {temp_max} and a low of {temp_min} {day}
-{day} the high will be {temp_max} and the low {temp_min}, with {condition}
-{day} it will be {condition} with a high of {temp_max} and a low of {temp_min}
-The forecast {day} is a high of {temp_max} and a low of {temp_min}
diff --git a/dialog/en-us/forecast.low.temperature.dialog b/dialog/en-us/forecast.low.temperature.dialog
deleted file mode 100644
index 4b5bd097..00000000
--- a/dialog/en-us/forecast.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} it will be as low as {temp_min} degrees in {location}
-{day}, {location} will be as low as {temp} degrees
diff --git a/dialog/en-us/forecast.medium.wind.dialog b/dialog/en-us/forecast.medium.wind.dialog
deleted file mode 100644
index 5c20f443..00000000
--- a/dialog/en-us/forecast.medium.wind.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-The wind will not be too bad in {location}, about {wind} {wind_unit} {day}
-The forecast {day} says {location} will have {wind} {wind_unit}, not too bad
-You can expect a wind of about {wind} {wind_unit} in {location} {day}
diff --git a/dialog/en-us/forecast.no.clear.predicted.dialog b/dialog/en-us/forecast.no.clear.predicted.dialog
deleted file mode 100644
index 5441faca..00000000
--- a/dialog/en-us/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's clear but an alternative is forcasted
-Sorry, the forecast {day} doesn't predict clear conditions for {location}
-{day}, it is not likely to be clear weather in {location}
diff --git a/dialog/en-us/forecast.no.cloudy.predicted.dialog b/dialog/en-us/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index bd9a08f6..00000000
--- a/dialog/en-us/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's cloudy but it's not
-It doesn't seem like it's going to be cloudy in {location} {day}
-Clear skies are forecast in {location} {day}
-Expect clear skies in {location} {day}
-It should not be cloudy in {location} {day}
diff --git a/dialog/en-us/forecast.no.fog.predicted.dialog b/dialog/en-us/forecast.no.fog.predicted.dialog
deleted file mode 100644
index 9fed10f8..00000000
--- a/dialog/en-us/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-{day} the visibility should be good in {location}
-No fog is predicted {day} in {location}
diff --git a/dialog/en-us/forecast.no.rain.predicted.dialog b/dialog/en-us/forecast.no.rain.predicted.dialog
deleted file mode 100644
index 0a915db0..00000000
--- a/dialog/en-us/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-No rain is predicted for {location} {day}
-{day}, it should not rain in {location}
-There's no need for an umbrella in {location} {day}
diff --git a/dialog/en-us/forecast.no.snow.predicted.dialog b/dialog/en-us/forecast.no.snow.predicted.dialog
deleted file mode 100644
index 31828b0c..00000000
--- a/dialog/en-us/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-No snow is predicted in {location} {day}
-It should not snow in {location} {day}
diff --git a/dialog/en-us/forecast.no.storm.predicted.dialog b/dialog/en-us/forecast.no.storm.predicted.dialog
deleted file mode 100644
index 5a028b54..00000000
--- a/dialog/en-us/forecast.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-No storm is predicted for {location} {day}
-{day}, it should not storm in {location}
-It is unlikely to storm {day} in {location}
diff --git a/dialog/en-us/forecast.raining.alternative.dialog b/dialog/en-us/forecast.raining.alternative.dialog
deleted file mode 100644
index 48dc1cc9..00000000
--- a/dialog/en-us/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, but the forecast calls for {condition} in {location} {day}
-{day}, there is no rain predicted for {location} but it looks like there'll be {condition}
diff --git a/dialog/en-us/forecast.snowing.alternative.dialog b/dialog/en-us/forecast.snowing.alternative.dialog
deleted file mode 100644
index 08c34229..00000000
--- a/dialog/en-us/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to snowing will occur
-No, but the forecast calls for {condition} {day}
-{day} there is no snow predicted but the chances are that it'll be {condition}
diff --git a/dialog/en-us/forecast.storm.alternative.dialog b/dialog/en-us/forecast.storm.alternative.dialog
deleted file mode 100644
index 0cb8fde0..00000000
--- a/dialog/en-us/forecast.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to storm will occur
-No, but the forecast calls for {condition} in {location} {day}
-{day}, there is no storm predicted for {location} but it looks like there'll be {condition}
diff --git a/dialog/en-us/forecast.temperature.dialog b/dialog/en-us/forecast.temperature.dialog
deleted file mode 100644
index c0bf8ffd..00000000
--- a/dialog/en-us/forecast.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} it will be {temp} degrees in {location}
-{day}, {location} will have a temperature of {temp} degrees
diff --git a/dialog/en-us/forecast.weather.dialog b/dialog/en-us/forecast.weather.dialog
deleted file mode 100644
index 061322ea..00000000
--- a/dialog/en-us/forecast.weather.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-{day} it will be {condition}, with a high of {temp_max} and a low of {temp_min} in {location}
-{day}, {location} will have a high of {temp_max} and a low of {temp_min}, with {condition}
-The forecast {day} is {temp_max} for a high and {temp_min} for a low in {location}
diff --git a/dialog/en-us/from.day.dialog b/dialog/en-us/from.day.dialog
deleted file mode 100644
index 6c0a30d9..00000000
--- a/dialog/en-us/from.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-From {day}
diff --git a/dialog/en-us/hard.wind.dialog b/dialog/en-us/hard.wind.dialog
deleted file mode 100644
index fdfae231..00000000
--- a/dialog/en-us/hard.wind.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-It's {wind} {wind_unit} in {location}, a good day to stay inside
-The wind is very strong in {location} today, {wind} {wind_unit}
-{location} will have quite strong winds today, {wind} {wind_unit}
diff --git a/dialog/en-us/heavy.dialog b/dialog/en-us/heavy.dialog
deleted file mode 100644
index 9d1f86a0..00000000
--- a/dialog/en-us/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-heavy
diff --git a/dialog/en-us/hour.local.weather.dialog b/dialog/en-us/hour.local.weather.dialog
deleted file mode 100644
index 64df1274..00000000
--- a/dialog/en-us/hour.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-It will be {condition}, with temperatures near {temp}
-Later it will be {condition} and around {temp} degrees
-Later it will be {condition} and {temp} degrees
-Around {temp} degrees with {condition}
diff --git a/dialog/en-us/hour.weather.dialog b/dialog/en-us/hour.weather.dialog
deleted file mode 100644
index f796ff3a..00000000
--- a/dialog/en-us/hour.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-{location} weather in the next few hours will be {condition} and {temp} degrees
-Later it will be {condition} in {location}, with temperatures around {temp}
-{location} will be around {temp} with {condition}
-{location} will be about {temp} degrees with {condition}
diff --git a/dialog/en-us/light.dialog b/dialog/en-us/light.dialog
deleted file mode 100644
index 162faa69..00000000
--- a/dialog/en-us/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-light
diff --git a/dialog/en-us/light.wind.dialog b/dialog/en-us/light.wind.dialog
deleted file mode 100644
index f589cdd2..00000000
--- a/dialog/en-us/light.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-There's no wind to speak about today in {location}
-It's not very windy at all in {location} today
diff --git a/dialog/en-us/local.clear.alternative.dialog b/dialog/en-us/local.clear.alternative.dialog
deleted file mode 100644
index 77ae6f37..00000000
--- a/dialog/en-us/local.clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, the forecast calls for {condition} today
-It looks like there'll be {condition} today
-Chances are it's going to be {condition} today
diff --git a/dialog/en-us/local.foggy.alternative.dialog b/dialog/en-us/local.foggy.alternative.dialog
deleted file mode 100644
index d6c25852..00000000
--- a/dialog/en-us/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to fog will occur
-No, the forecast calls for {condition} today
-It looks like there'll be {condition} today
-Chances are it's going to be {condition} today
diff --git a/dialog/en-us/local.hard.wind.dialog b/dialog/en-us/local.hard.wind.dialog
deleted file mode 100644
index d50d1bc0..00000000
--- a/dialog/en-us/local.hard.wind.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-It's {wind} {wind_unit}, might be good to stay inside today
-The wind is very strong today, {wind} {wind_unit}
-It's very windy today, {wind} {wind_unit}
diff --git a/dialog/en-us/local.light.wind.dialog b/dialog/en-us/local.light.wind.dialog
deleted file mode 100644
index 8bfa0ad7..00000000
--- a/dialog/en-us/local.light.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Today there's no wind to speak about
-It's not very windy at all today
diff --git a/dialog/en-us/local.medium.wind.dialog b/dialog/en-us/local.medium.wind.dialog
deleted file mode 100644
index 6ef8a31b..00000000
--- a/dialog/en-us/local.medium.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Currently {wind} {wind_unit}, so a bit windy
-It's a bit windy today, currently {wind} {wind_unit}
diff --git a/dialog/en-us/local.no.cloudy.predicted.dialog b/dialog/en-us/local.no.cloudy.predicted.dialog
deleted file mode 100644
index 1dd69ccd..00000000
--- a/dialog/en-us/local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's raining but no cloud or alternative is forcasted
-No clouds are predicted for today
-It should not be cloudy today
diff --git a/dialog/en-us/local.no.fog.predicted.dialog b/dialog/en-us/local.no.fog.predicted.dialog
deleted file mode 100644
index 2ad54756..00000000
--- a/dialog/en-us/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-Seems like the visibility will be good today
-No fog is predicted for today
diff --git a/dialog/en-us/local.no.rain.predicted.dialog b/dialog/en-us/local.no.rain.predicted.dialog
deleted file mode 100644
index bf5fb348..00000000
--- a/dialog/en-us/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-No rain is predicted today
-It should not rain today
-There's no need for an umbrella today
diff --git a/dialog/en-us/local.no.snow.predicted.dialog b/dialog/en-us/local.no.snow.predicted.dialog
deleted file mode 100644
index 164d6d42..00000000
--- a/dialog/en-us/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forecasted
-No snow is predicted today
-It should not snow today
diff --git a/dialog/en-us/local.no.storm.predicted.dialog b/dialog/en-us/local.no.storm.predicted.dialog
deleted file mode 100644
index 67679186..00000000
--- a/dialog/en-us/local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-No storm is predicted today
-It should not storm today
-There should not be a storm today
-Today it is unlikely to storm
-A storm is not likely today
diff --git a/dialog/en-us/local.raining.alternative.dialog b/dialog/en-us/local.raining.alternative.dialog
deleted file mode 100644
index 1005d2ea..00000000
--- a/dialog/en-us/local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur (like snow or fog)
-No, but today the forecast calls for {condition}
-There is no rain predicted for today but it looks like there'll be {condition}
diff --git a/dialog/en-us/local.snowing.alternative.dialog b/dialog/en-us/local.snowing.alternative.dialog
deleted file mode 100644
index 08ea49e1..00000000
--- a/dialog/en-us/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to snowing will occur
-No, but today the forecast calls for {condition}
-There is no snow predicted for today but the chances are that it'll be {condition}
diff --git a/dialog/en-us/local.storm.alternative.dialog b/dialog/en-us/local.storm.alternative.dialog
deleted file mode 100644
index 14e9771f..00000000
--- a/dialog/en-us/local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to a storm will occur (like snow or fog)
-No, but today the forecast calls for {condition}
-There is no storm predicted for today but it looks like there'll be {condition}
diff --git a/dialog/en-us/location.not.found.dialog b/dialog/en-us/location.not.found.dialog
deleted file mode 100644
index e08d065a..00000000
--- a/dialog/en-us/location.not.found.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-I not sure where that is
-I don't know that location
-I don't know that place
diff --git a/dialog/en-us/medium.wind.dialog b/dialog/en-us/medium.wind.dialog
deleted file mode 100644
index ae05ccc9..00000000
--- a/dialog/en-us/medium.wind.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Currently {wind} {wind_unit} in {location}, so a bit windy today
-It's a bit windy in {location} today, currently {wind} {wind_unit}
diff --git a/dialog/en-us/min.max.dialog b/dialog/en-us/min.max.dialog
deleted file mode 100644
index 1e6e8093..00000000
--- a/dialog/en-us/min.max.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Today's forecast is for a high of {temp_max} and a low of {temp_min}.
diff --git a/dialog/en-us/no precipitation expected.dialog b/dialog/en-us/no precipitation expected.dialog
deleted file mode 100644
index 6ccf889a..00000000
--- a/dialog/en-us/no precipitation expected.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-No precipitation is in the forecast
-None is forecasted
diff --git a/dialog/en-us/no.clear.predicted.dialog b/dialog/en-us/no.clear.predicted.dialog
deleted file mode 100644
index 0db30deb..00000000
--- a/dialog/en-us/no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's clear but it's not
-Sorry, it seems like it's going to be {condition}
-It's not likely to be a clear sky
diff --git a/dialog/en-us/no.cloudy.predicted.dialog b/dialog/en-us/no.cloudy.predicted.dialog
deleted file mode 100644
index e53f0b1f..00000000
--- a/dialog/en-us/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's cloudy but it's not
-It doesn't seem to be cloudy today
-It should not be cloudy
diff --git a/dialog/en-us/no.fog.predicted.dialog b/dialog/en-us/no.fog.predicted.dialog
deleted file mode 100644
index aac9a3fe..00000000
--- a/dialog/en-us/no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-Seems like the visibility will be good in {location}
-No fog is predicted for {location} today
diff --git a/dialog/en-us/no.rain.predicted.dialog b/dialog/en-us/no.rain.predicted.dialog
deleted file mode 100644
index 08dc0f39..00000000
--- a/dialog/en-us/no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-No rain is predicted for {location}
-It should not be raining in {location}
-There's no need for an umbrella in {location}
diff --git a/dialog/en-us/no.snow.predicted.dialog b/dialog/en-us/no.snow.predicted.dialog
deleted file mode 100644
index 774c89b4..00000000
--- a/dialog/en-us/no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-No snow is predicted for {location}
-It will not snow in {location}
diff --git a/dialog/en-us/no.storm.predicted.dialog b/dialog/en-us/no.storm.predicted.dialog
deleted file mode 100644
index 35aadc46..00000000
--- a/dialog/en-us/no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's storming but no storm or alternative is forcasted
-No storm is predicted for {location}
-There should not be a storm in {location}
-It should not storm in {location}
diff --git a/dialog/en-us/on.date.dialog b/dialog/en-us/on.date.dialog
deleted file mode 100644
index 59cef6f7..00000000
--- a/dialog/en-us/on.date.dialog
+++ /dev/null
@@ -1 +0,0 @@
-on
diff --git a/dialog/en-us/on.dialog b/dialog/en-us/on.dialog
deleted file mode 100644
index e8fd9030..00000000
--- a/dialog/en-us/on.dialog
+++ /dev/null
@@ -1 +0,0 @@
-on
\ No newline at end of file
diff --git a/dialog/en-us/percentage.number.dialog b/dialog/en-us/percentage.number.dialog
deleted file mode 100644
index 1cbe1219..00000000
--- a/dialog/en-us/percentage.number.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{num} percent
diff --git a/dialog/en-us/precipitation expected.dialog b/dialog/en-us/precipitation expected.dialog
deleted file mode 100644
index cdd515a3..00000000
--- a/dialog/en-us/precipitation expected.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{modifier} {precip} is expected {day}
-The forecast calls for {modifier} {precip} {day}
diff --git a/dialog/en-us/raining.alternative.dialog b/dialog/en-us/raining.alternative.dialog
deleted file mode 100644
index 72c16809..00000000
--- a/dialog/en-us/raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur (like snow or fog)
-No, but the forecast calls for {condition} in {location}
-There is no rain predicted for today in {location}, but it looks like there'll be {condition}
diff --git a/dialog/en-us/report.condition.at.location.dialog b/dialog/en-us/report.condition.at.location.dialog
deleted file mode 100644
index 2ee6d8dd..00000000
--- a/dialog/en-us/report.condition.at.location.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Currently, {condition} in {location} is {value}
diff --git a/dialog/en-us/report.condition.dialog b/dialog/en-us/report.condition.dialog
deleted file mode 100644
index 50caa9e6..00000000
--- a/dialog/en-us/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Currently, {condition} is {value}
diff --git a/dialog/en-us/report.condition.future.at.location.dialog b/dialog/en-us/report.condition.future.at.location.dialog
deleted file mode 100644
index b77cc567..00000000
--- a/dialog/en-us/report.condition.future.at.location.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} in {location} {day} will be {value}
-{day} the forecast in {location} calls for {condition} of {value}
diff --git a/dialog/en-us/report.condition.future.dialog b/dialog/en-us/report.condition.future.dialog
deleted file mode 100644
index dd7f8a54..00000000
--- a/dialog/en-us/report.condition.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} {day} will be {value}
-{day} the forecast calls for {condition} of {value}
diff --git a/dialog/en-us/report.wind.dialog b/dialog/en-us/report.wind.dialog
deleted file mode 100644
index 02fe30e5..00000000
--- a/dialog/en-us/report.wind.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{condition} is {value}
diff --git a/dialog/en-us/sky is clear.future.dialog b/dialog/en-us/sky is clear.future.dialog
deleted file mode 100644
index dceb7a14..00000000
--- a/dialog/en-us/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-a clear sky
diff --git a/dialog/en-us/snowing.alternative.dialog b/dialog/en-us/snowing.alternative.dialog
deleted file mode 100644
index fe7d2869..00000000
--- a/dialog/en-us/snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to snowing will occur
-No, but the forecast calls for {condition} in {location}
-There is no snow predicted for today but the chances are that it'll be {condition} in {location}
diff --git a/dialog/en-us/storm.alternative.dialog b/dialog/en-us/storm.alternative.dialog
deleted file mode 100644
index 4e6e8174..00000000
--- a/dialog/en-us/storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to storm will occur (like snow or fog)
-No, but the forecast calls for {condition} in {location}
-There is no storm predicted for today in {location}, but it looks like there'll be {condition}
diff --git a/dialog/en-us/this.week.dialog b/dialog/en-us/this.week.dialog
deleted file mode 100644
index e69de29b..00000000
diff --git a/dialog/en-us/tonight.local.weather.dialog b/dialog/en-us/tonight.local.weather.dialog
deleted file mode 100644
index 67efb070..00000000
--- a/dialog/en-us/tonight.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Tonight it will be {condition}, with temperatures near {temp}
-Tonight it will be {condition} and around {temp} degrees
-Tonight it will be {condition} and {temp} degrees
-Around {temp} degrees with {condition} tonight
diff --git a/dialog/en-us/weekly.condition.on.day.dialog b/dialog/en-us/weekly.condition.on.day.dialog
deleted file mode 100644
index 1634763e..00000000
--- a/dialog/en-us/weekly.condition.on.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} will be {condition},
diff --git a/dialog/en-us/weekly.conditions.mostly.one.dialog b/dialog/en-us/weekly.conditions.mostly.one.dialog
deleted file mode 100644
index b3d40af2..00000000
--- a/dialog/en-us/weekly.conditions.mostly.one.dialog
+++ /dev/null
@@ -1 +0,0 @@
-it will be mostly {condition}.
diff --git a/dialog/en-us/weekly.conditions.seq.extra.dialog b/dialog/en-us/weekly.conditions.seq.extra.dialog
deleted file mode 100644
index 498d2ed4..00000000
--- a/dialog/en-us/weekly.conditions.seq.extra.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-it looks like there will also be
-it will also be
diff --git a/dialog/en-us/weekly.conditions.seq.period.dialog b/dialog/en-us/weekly.conditions.seq.period.dialog
deleted file mode 100644
index ccf787ed..00000000
--- a/dialog/en-us/weekly.conditions.seq.period.dialog
+++ /dev/null
@@ -1 +0,0 @@
-from {from} to {to}
diff --git a/dialog/en-us/weekly.conditions.seq.start.dialog b/dialog/en-us/weekly.conditions.seq.start.dialog
deleted file mode 100644
index cd5183ae..00000000
--- a/dialog/en-us/weekly.conditions.seq.start.dialog
+++ /dev/null
@@ -1 +0,0 @@
-it will be {condition}
diff --git a/dialog/en-us/weekly.conditions.some.days.dialog b/dialog/en-us/weekly.conditions.some.days.dialog
deleted file mode 100644
index 244dc951..00000000
--- a/dialog/en-us/weekly.conditions.some.days.dialog
+++ /dev/null
@@ -1 +0,0 @@
-it will be {condition} some days.
diff --git a/dialog/en-us/wind.speed.dialog b/dialog/en-us/wind.speed.dialog
deleted file mode 100644
index b98efb6f..00000000
--- a/dialog/en-us/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{speed} {unit}
diff --git a/dialog/en-us/wind.speed.dir.dialog b/dialog/en-us/wind.speed.dir.dialog
deleted file mode 100644
index 9baf235d..00000000
--- a/dialog/en-us/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-at {speed} {unit} from the {dir}
-from the {dir} at {speed} {unit}
diff --git a/dialog/en-us/wind.strength.hard.dialog b/dialog/en-us/wind.strength.hard.dialog
deleted file mode 100644
index d22605f7..00000000
--- a/dialog/en-us/wind.strength.hard.dialog
+++ /dev/null
@@ -1 +0,0 @@
-That's quite strong
diff --git a/dialog/en-us/wind.strength.light.dialog b/dialog/en-us/wind.strength.light.dialog
deleted file mode 100644
index 54d137e5..00000000
--- a/dialog/en-us/wind.strength.light.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Not very windy
-Not much wind
-Quite calm
diff --git a/dialog/en-us/wind.strength.medium.dialog b/dialog/en-us/wind.strength.medium.dialog
deleted file mode 100644
index 718d8843..00000000
--- a/dialog/en-us/wind.strength.medium.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-That's getting breezy.
-You might want to take a jacket
diff --git a/dialog/en-us/winds.dialog b/dialog/en-us/winds.dialog
deleted file mode 100644
index 7042ea3d..00000000
--- a/dialog/en-us/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-wind speed
diff --git a/dialog/es-es/do not know.dialog b/dialog/es-es/do not know.dialog
deleted file mode 100644
index 43086b9f..00000000
--- a/dialog/es-es/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Me temo que no sé qué
-No tengo esa información
diff --git a/dialog/es-es/heavy.dialog b/dialog/es-es/heavy.dialog
deleted file mode 100644
index e524be2f..00000000
--- a/dialog/es-es/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-pesado
diff --git a/dialog/es-es/light.dialog b/dialog/es-es/light.dialog
deleted file mode 100644
index abd55634..00000000
--- a/dialog/es-es/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-luz
diff --git a/dialog/es-es/no forecast.dialog b/dialog/es-es/no forecast.dialog
deleted file mode 100644
index 43bc181d..00000000
--- a/dialog/es-es/no forecast.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Lo siento, no conozco el pronóstico para el {{day}}
-No tengo un pronóstico para el {{day}}
diff --git a/dialog/es-es/report.condition.dialog b/dialog/es-es/report.condition.dialog
deleted file mode 100644
index 3cd26d5d..00000000
--- a/dialog/es-es/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{condition}} es {{value}}
diff --git a/dialog/es-es/report.future.condition.dialog b/dialog/es-es/report.future.condition.dialog
deleted file mode 100644
index c633dff6..00000000
--- a/dialog/es-es/report.future.condition.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{{condition}} para el {{day}} será de {{value}}
-El {{day}}, el pronóstico indica {{condition}} de {{value}}
diff --git a/dialog/es-es/sky is clear.future.dialog b/dialog/es-es/sky is clear.future.dialog
deleted file mode 100644
index 126bbb7b..00000000
--- a/dialog/es-es/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-despejado
diff --git a/dialog/es-es/wind.speed.dialog b/dialog/es-es/wind.speed.dialog
deleted file mode 100644
index cff9d7e4..00000000
--- a/dialog/es-es/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{speed}} {{unit}}
diff --git a/dialog/es-es/wind.speed.dir.dialog b/dialog/es-es/wind.speed.dir.dialog
deleted file mode 100644
index 1a4c3cfc..00000000
--- a/dialog/es-es/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-a {{speed}} {{unit}} desde el {{dir}}
-desde el {{dir}} a {{speed}} {{unit}}
diff --git a/dialog/es-es/winds.dialog b/dialog/es-es/winds.dialog
deleted file mode 100644
index c3abf711..00000000
--- a/dialog/es-es/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-el viento
diff --git a/dialog/fr-fr/do not know.dialog b/dialog/fr-fr/do not know.dialog
deleted file mode 100644
index 39258797..00000000
--- a/dialog/fr-fr/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-J'ai bien peur de ne pas le savoir
-Je n'ai pas cette information
diff --git a/dialog/fr-fr/heavy.dialog b/dialog/fr-fr/heavy.dialog
deleted file mode 100644
index c1992a78..00000000
--- a/dialog/fr-fr/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-forte
diff --git a/dialog/fr-fr/light.dialog b/dialog/fr-fr/light.dialog
deleted file mode 100644
index a974bef3..00000000
--- a/dialog/fr-fr/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-faible
diff --git a/dialog/fr-fr/no forecast.dialog b/dialog/fr-fr/no forecast.dialog
deleted file mode 100644
index c4c861cf..00000000
--- a/dialog/fr-fr/no forecast.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Je regrette, je ne connais pas la prévision pour {{day}}
-Je n'ai pas une prévision pour {{day}}
diff --git a/dialog/fr-fr/report.condition.dialog b/dialog/fr-fr/report.condition.dialog
deleted file mode 100644
index e4e7e279..00000000
--- a/dialog/fr-fr/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{condition}} est {{value}}
diff --git a/dialog/fr-fr/report.future.condition.dialog b/dialog/fr-fr/report.future.condition.dialog
deleted file mode 100644
index d693ffcf..00000000
--- a/dialog/fr-fr/report.future.condition.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{{condition}} pour {{day}} sera {{value}}
-Pour {{day}} la prévision annonce {{condition}} de {{value}}
diff --git a/dialog/fr-fr/sky is clear.future.dialog b/dialog/fr-fr/sky is clear.future.dialog
deleted file mode 100644
index 09b10976..00000000
--- a/dialog/fr-fr/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-clair
diff --git a/dialog/fr-fr/wind.speed.dialog b/dialog/fr-fr/wind.speed.dialog
deleted file mode 100644
index cff9d7e4..00000000
--- a/dialog/fr-fr/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{speed}} {{unit}}
diff --git a/dialog/fr-fr/wind.speed.dir.dialog b/dialog/fr-fr/wind.speed.dir.dialog
deleted file mode 100644
index ea683eb8..00000000
--- a/dialog/fr-fr/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-de {{speed}} {{unit}} du {{dir}}
-du {{dir}} à {{speed}} {{unit}}
diff --git a/dialog/fr-fr/winds.dialog b/dialog/fr-fr/winds.dialog
deleted file mode 100644
index 41cbb5b9..00000000
--- a/dialog/fr-fr/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-le vent
diff --git a/dialog/gl-es/at.time.forecast.affirmative.condition.dialog b/dialog/gl-es/at.time.forecast.affirmative.condition.dialog
deleted file mode 100644
index af78c0a3..00000000
--- a/dialog/gl-es/at.time.forecast.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Resposta afirmativa a cuestións como "vai nevar en Paris mañá á tarde"
-Si, o {time} pronóstico suxire {condition} en {location} o {day}
-Si, o {time} pronóstico require {condition} en {location} o {day}
diff --git a/dialog/gl-es/at.time.forecast.cond.alternative.dialog b/dialog/gl-es/at.time.forecast.cond.alternative.dialog
deleted file mode 100644
index 95544ccb..00000000
--- a/dialog/gl-es/at.time.forecast.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer nun horario especificado
-Si, o {time} pronóstico o {day} require {condition} en {location} {day}
-Parece que non, a previsión de {time} {day} suxire que será {condition} en {location}
diff --git a/dialog/gl-es/at.time.forecast.local.affirmative.condition.dialog b/dialog/gl-es/at.time.forecast.local.affirmative.condition.dialog
deleted file mode 100644
index 99756987..00000000
--- a/dialog/gl-es/at.time.forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Resposta afirmativa a cuestións como "vai nevar mañá"
-Si, esperado {condition} de acordo coa previsión ás {time} o {day}
-Si, o pronóstico do {time} require {condition} {day}
diff --git a/dialog/gl-es/at.time.forecast.local.cond.alternative.dialog b/dialog/gl-es/at.time.forecast.local.cond.alternative.dialog
deleted file mode 100644
index 7df3d2e8..00000000
--- a/dialog/gl-es/at.time.forecast.local.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer
-Non, a previsión de {time} {day} require {condition}
-Parece que non, a previsión de {time} {day} suxire que será {condition}
diff --git a/dialog/gl-es/at.time.forecast.local.no.cond.predicted.dialog b/dialog/gl-es/at.time.forecast.local.no.cond.predicted.dialog
deleted file mode 100644
index e4323016..00000000
--- a/dialog/gl-es/at.time.forecast.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# Cando o usuario pregunta se hai unha condición pero non a hai
-Non, a previsión do {time} {day} indica {condition}
diff --git a/dialog/gl-es/at.time.forecast.no.cond.predicted.dialog b/dialog/gl-es/at.time.forecast.no.cond.predicted.dialog
deleted file mode 100644
index 58afc181..00000000
--- a/dialog/gl-es/at.time.forecast.no.cond.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se hai unha condición pero non a hai
-Non, a previsión para {time} en {location} suxire que se dará {condition}
-Parece que non, a previsión de {time} en {location} suxire que será {condition}
diff --git a/dialog/gl-es/at.time.local.high.temperature.dialog b/dialog/gl-es/at.time.local.high.temperature.dialog
deleted file mode 100644
index 9618e75c..00000000
--- a/dialog/gl-es/at.time.local.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-A temperatura vai subir ata {temp} graos {time}
-{time}, a temperatura vai subir ata {temp} graos
diff --git a/dialog/gl-es/at.time.local.low.temperature.dialog b/dialog/gl-es/at.time.local.low.temperature.dialog
deleted file mode 100644
index 54d10235..00000000
--- a/dialog/gl-es/at.time.local.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-A temperatura vai baixar ata {temp} graos {time}
-{time}, vai enfriar ata os {temp} graos
diff --git a/dialog/gl-es/at.time.local.weather.dialog b/dialog/gl-es/at.time.local.weather.dialog
deleted file mode 100644
index 65fce356..00000000
--- a/dialog/gl-es/at.time.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Teremos {condition}, con temperaturas preto de {temp} ás {time}
-{time}, teremos {condition} e temperatura ao redor de {temp} graos
-{time}, teremos {condition} e {temp} graos
-{time}, teremos {condition} con {temp} graos
diff --git a/dialog/gl-es/clear.alternative.dialog b/dialog/gl-es/clear.alternative.dialog
deleted file mode 100644
index 4d978203..00000000
--- a/dialog/gl-es/clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer
-Non, a previsión require {condition} en {location}
-Parece que haberá {condition} en {location}
-As opcións son que vai estar {condition} en {location}
diff --git a/dialog/gl-es/clear.future.dialog b/dialog/gl-es/clear.future.dialog
deleted file mode 100644
index 969865c8..00000000
--- a/dialog/gl-es/clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-un ceo despexado
diff --git a/dialog/gl-es/cloudy.alternative.dialog b/dialog/gl-es/cloudy.alternative.dialog
deleted file mode 100644
index 70bca1f2..00000000
--- a/dialog/gl-es/cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer
-Non, a previsión require {condition}
-Probablemente non estará nubrado, parece que estará {condition}
-Parece que non, as opcións son de que estea {condition}
diff --git a/dialog/gl-es/condition.category.value b/dialog/gl-es/condition.category.value
deleted file mode 100644
index f42da6dd..00000000
--- a/dialog/gl-es/condition.category.value
+++ /dev/null
@@ -1,15 +0,0 @@
-Nubes, nubrado
-despexado, un ceo despexado
-Tempestades con trombas, tempestades
-Chuviscos, chuviscando
-Chuvia,chovendo
-Neve,nevando
-Néboa,neboado
-Fume,fumento
-neblina,nubrado
-Poeira, empoeirado
-Neboeiro, neboento
-Area, areoso
-Cinza, nubrado con posíble cinza volcánica
-Borrasca, tempestuoso
-Tornado, tempestuoso con posibilidade de tornado
diff --git a/dialog/gl-es/current.hot.dialog b/dialog/gl-es/current.hot.dialog
deleted file mode 100644
index 8a5ec8c8..00000000
--- a/dialog/gl-es/current.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Está {temp} graos {scale} en {location}, ben dentro da miña temperatura operacional.
-Está a {temp} graos en {location}, o que vai ben para unha I.A.
diff --git a/dialog/gl-es/current.local.cold.dialog b/dialog/gl-es/current.local.cold.dialog
deleted file mode 100644
index 5a6db354..00000000
--- a/dialog/gl-es/current.local.cold.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-neste momento fai {temp}, ben dentro da miña temperatura operacional
-Fai {temp}, bastante confortable para unha I.A.
diff --git a/dialog/gl-es/current.local.hot.dialog b/dialog/gl-es/current.local.hot.dialog
deleted file mode 100644
index f76fc00e..00000000
--- a/dialog/gl-es/current.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Está dentro da miña temperatura operacional, actualmente en {temp} graos
-Fai {temp} graus, bastante confortable para unha I.A.
diff --git a/dialog/gl-es/do not know.dialog b/dialog/gl-es/do not know.dialog
deleted file mode 100644
index 44c84bca..00000000
--- a/dialog/gl-es/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Temo que eu non saiba isto
-Non teño esta información
diff --git a/dialog/gl-es/fog.alternative.dialog b/dialog/gl-es/fog.alternative.dialog
deleted file mode 100644
index 3721230c..00000000
--- a/dialog/gl-es/fog.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Non, a previsión require {condition} en {location}
-As opcións son que vai estar {condition} en {location}
-# Informando que unha alternativa ao neboeiro ocorrerá nunha localización
-Parece que haberá {condition} en {location}
diff --git a/dialog/gl-es/forecast.clear.alternative.dialog b/dialog/gl-es/forecast.clear.alternative.dialog
deleted file mode 100644
index 4214cf9c..00000000
--- a/dialog/gl-es/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que unha alternativa á chuvia ocorrerá
-Non, pero a previsión {day} require {condition} en {location}
-No {day}, non hai previsión de chuvia para {location}, mais parece que haberá {condition}
diff --git a/dialog/gl-es/forecast.cloudy.alternative.dialog b/dialog/gl-es/forecast.cloudy.alternative.dialog
deleted file mode 100644
index 4c6c7b41..00000000
--- a/dialog/gl-es/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer
-# Non, a previsión para o {day} require {condition} en {location}
-# Probablemente non estará nubrado {day} en {location}, parece que estará {condition}
-Parece que non, as opcións son de que en {location} haberá {condition} {day}
diff --git a/dialog/gl-es/forecast.foggy.alternative.dialog b/dialog/gl-es/forecast.foggy.alternative.dialog
deleted file mode 100644
index 96362359..00000000
--- a/dialog/gl-es/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao bo tempo ocorrerá
-Non, a previsión para {location} {day} é de {condition}
-Parece que haberá {condition} en {location} {day}
-As opcións din que vai ser {condition} en {location} {day}
diff --git a/dialog/gl-es/forecast.hot.dialog b/dialog/gl-es/forecast.hot.dialog
deleted file mode 100644
index b1cd4163..00000000
--- a/dialog/gl-es/forecast.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} fará {temp} graos en {location}, bastante confortable para unha I.A.
-{day} a temperatura será de {temp} en {location}, dentro das miñas especificacións
diff --git a/dialog/gl-es/forecast.local.clear.alternative.dialog b/dialog/gl-es/forecast.local.clear.alternative.dialog
deleted file mode 100644
index ac92fcbd..00000000
--- a/dialog/gl-es/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer
-Non, a previsión para o {day} require {condition}
-{day}, parece que haberá {condition}
diff --git a/dialog/gl-es/forecast.local.cloudy.alternative.dialog b/dialog/gl-es/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index ef3be97f..00000000
--- a/dialog/gl-es/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer
-Non, a previsión para o {day} require {condition}
-Probablemente non estará nubrado, parece que {day} estará {condition}
-Parece que non, as opcións son de que {day} estea {condition}
diff --git a/dialog/gl-es/forecast.local.foggy.alternative.dialog b/dialog/gl-es/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 8dc2a4d9..00000000
--- a/dialog/gl-es/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao bo tempo ocorrerá
-Non, a previsión para o {day} require {condition}
-Parece que {day} teremos {condition}
-Vai estar {condition} {day}
diff --git a/dialog/gl-es/forecast.local.hot.dialog b/dialog/gl-es/forecast.local.hot.dialog
deleted file mode 100644
index e3192961..00000000
--- a/dialog/gl-es/forecast.local.hot.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} fará {temp}, bastante confortable para unha IA
diff --git a/dialog/gl-es/forecast.local.no.clear.predicted.dialog b/dialog/gl-es/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 5ac34af9..00000000
--- a/dialog/gl-es/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se o ceo está claro mais unha previsión alternativa é feita
-Desculpa, a previsión non prevé condicións de céeo despexado o {day}
-{day}, non é probable que o tempo estea bo.
diff --git a/dialog/gl-es/forecast.local.no.cloudy.predicted.dialog b/dialog/gl-es/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index c37494e4..00000000
--- a/dialog/gl-es/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Cando o usuario pregunta se está nubrado mais non o está
-Non parece probable que vai estar nubrado {day}
-Está previsto ceo despexado {day}
-É esperado un ceo despexado {day}
-Non debe estar nubrado {day}
diff --git a/dialog/gl-es/forecast.local.no.fog.predicted.dialog b/dialog/gl-es/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index 8073dc5f..00000000
--- a/dialog/gl-es/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nubrado mais ningunha neve ou alternativa é feita como previsión
-o {day} a visibilidade debería ser boa
-Ningún noboeiroestá previsto para {day}
diff --git a/dialog/gl-es/forecast.local.no.rain.predicted.dialog b/dialog/gl-es/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index 8afd19d8..00000000
--- a/dialog/gl-es/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais ningunha chuvia ou alternativa está prevista
-Ningunha chuvia está prevista {day}
-Non debe chover {day}
-Non vas precisar dun paraugas {day}
diff --git a/dialog/gl-es/forecast.local.no.snow.predicted.dialog b/dialog/gl-es/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index 39631591..00000000
--- a/dialog/gl-es/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nevando mais ningunha neve ou alternativa está prevista
-Non está prevista a neve {day}
-Non vai nevar o {day}
diff --git a/dialog/gl-es/forecast.local.no.storm.predicted.dialog b/dialog/gl-es/forecast.local.no.storm.predicted.dialog
deleted file mode 100644
index 6ec7062d..00000000
--- a/dialog/gl-es/forecast.local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais ningunha chuvia ou alternativa está prevista
-Non está previsto que neve o {day}
-o {day}, non debería haber tempestade
-Non debe haber tempestade o {day}
diff --git a/dialog/gl-es/forecast.local.raining.alternative.dialog b/dialog/gl-es/forecast.local.raining.alternative.dialog
deleted file mode 100644
index 2c143c01..00000000
--- a/dialog/gl-es/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que unha alternativa á chuvia ocorrerá
-Non, a previsión para o {day} require {condition}
-o {day}, non hai previsión de chuvia, mais parece que haberá {condition}
diff --git a/dialog/gl-es/forecast.local.storm.alternative.dialog b/dialog/gl-es/forecast.local.storm.alternative.dialog
deleted file mode 100644
index a0a1ac1d..00000000
--- a/dialog/gl-es/forecast.local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que unha alternativa á chuvia ocorrerá
-Non, a previsión para o {day} require {condition}
-{day}, non hai previsión de tempestade, mais parece que haberá {condition}
diff --git a/dialog/gl-es/forecast.no.clear.predicted.dialog b/dialog/gl-es/forecast.no.clear.predicted.dialog
deleted file mode 100644
index fb8148ce..00000000
--- a/dialog/gl-es/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se o ceo está claro mais unha previsión alternativa é feita
-Desculpa, a previsión non indica condicións de ceo despexado para {location} o {day}
-{day}, é probable que o tempo non estea bo en {location}
diff --git a/dialog/gl-es/forecast.no.cloudy.predicted.dialog b/dialog/gl-es/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index b21b8575..00000000
--- a/dialog/gl-es/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Cando o usuario pregunta se está nubrado mais non o está
-Non parece probable que vaia estar nubrado en {location} o {day}
-O ceo despexado está previsto en {location} o {day}
-É esperado o ceo despexado en {location} o {day}
-Non vai nevar en {location} o {day}
diff --git a/dialog/gl-es/forecast.no.fog.predicted.dialog b/dialog/gl-es/forecast.no.fog.predicted.dialog
deleted file mode 100644
index 8f3c7096..00000000
--- a/dialog/gl-es/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nubrado mais ningunha neve ou alternativa é feita como previsión
-o {day} a visibilidade debe estar boa en {location}
-Ningún neboeiro está previsto para o {day} en {location}
diff --git a/dialog/gl-es/forecast.no.rain.predicted.dialog b/dialog/gl-es/forecast.no.rain.predicted.dialog
deleted file mode 100644
index ed17800d..00000000
--- a/dialog/gl-es/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais ningunha chuvia ou alternativa está prevista
-Non está prevista ninguha chuvia para {location} o {day}
-{day}, non vai nevar en {location}
-Non hai necesidade dun paraugas en {location} o {day}
diff --git a/dialog/gl-es/forecast.no.snow.predicted.dialog b/dialog/gl-es/forecast.no.snow.predicted.dialog
deleted file mode 100644
index 8e0f7939..00000000
--- a/dialog/gl-es/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nevando mais ningunha neve ou alternativa está prevista
-Non está prevista a neve en {location} o {day}
-Non debería nevar en {location} o {day}
diff --git a/dialog/gl-es/forecast.no.storm.predicted.dialog b/dialog/gl-es/forecast.no.storm.predicted.dialog
deleted file mode 100644
index cd9f7708..00000000
--- a/dialog/gl-es/forecast.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais ningunha chuvia ou alternativa está prevista
-Non está previsto ningún neboeiro en {location} o {day}
-{day}, non debería nevar en {location}
-Non debería haber treboadas o {day} en {location}
diff --git a/dialog/gl-es/forecast.raining.alternative.dialog b/dialog/gl-es/forecast.raining.alternative.dialog
deleted file mode 100644
index 0b6eb58f..00000000
--- a/dialog/gl-es/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que unha alternativa á chuvia ocorrerá
-Non, pero a previsión require {condition} en {location} {day}
-o {day}, non hai previsión de chuvia en {location} mais parece que haberá {condition}
diff --git a/dialog/gl-es/forecast.snowing.alternative.dialog b/dialog/gl-es/forecast.snowing.alternative.dialog
deleted file mode 100644
index 2c2ef207..00000000
--- a/dialog/gl-es/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando de que unha alternativa ao bo tempo vai ocorrer
-Non, pero a previsión require {condition} {day}
-{day} non hai previsión de neve mais as opcións son que será {condition}
diff --git a/dialog/gl-es/forecast.storm.alternative.dialog b/dialog/gl-es/forecast.storm.alternative.dialog
deleted file mode 100644
index 9eb25558..00000000
--- a/dialog/gl-es/forecast.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Non, pero a previsión require {condition} en {location} {day}
-# Informando de que vai ocorrer unha alternativa ao bo tempo
-o {day}, non hai previsión de tormenta en {location}, mais parece que haberá {condition}
diff --git a/dialog/gl-es/from.day.dialog b/dialog/gl-es/from.day.dialog
deleted file mode 100644
index 971c5767..00000000
--- a/dialog/gl-es/from.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Desde o {day}
diff --git a/dialog/gl-es/heavy.dialog b/dialog/gl-es/heavy.dialog
deleted file mode 100644
index e524be2f..00000000
--- a/dialog/gl-es/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-pesado
diff --git a/dialog/gl-es/light.dialog b/dialog/gl-es/light.dialog
deleted file mode 100644
index 86fcb7d6..00000000
--- a/dialog/gl-es/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-leve
diff --git a/dialog/gl-es/local.clear.alternative.dialog b/dialog/gl-es/local.clear.alternative.dialog
deleted file mode 100644
index 1b1b2fff..00000000
--- a/dialog/gl-es/local.clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao tempo bo vai ocorrer
-Non, a previsión require {condition} hoxe
-Parece que hoxe teremos {condition}
-Si, vai estar {condition} hoxe
diff --git a/dialog/gl-es/local.cloudy.alternative.dialog b/dialog/gl-es/local.cloudy.alternative.dialog
deleted file mode 100644
index fe6d6040..00000000
--- a/dialog/gl-es/local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Non, a previsión require {condition} hoxe
-# Informando de que unha alternativa ao ceo nubrado vai ocorrer
-Non debería estar nubrado, parece que estará {condition} hoxe
-Parece que non, as opcións son de que estea {condition} hoxe
diff --git a/dialog/gl-es/local.foggy.alternative.dialog b/dialog/gl-es/local.foggy.alternative.dialog
deleted file mode 100644
index fb1c910a..00000000
--- a/dialog/gl-es/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que unha alternativa ao bo tempo ocorrerá
-Non, a previsión require {condition} hoxe
-Parece que hoxe teremos {condition}
-Si, vai estar {condition} hoxe
diff --git a/dialog/gl-es/local.no.cloudy.predicted.dialog b/dialog/gl-es/local.no.cloudy.predicted.dialog
deleted file mode 100644
index de0e27ba..00000000
--- a/dialog/gl-es/local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais non hai previsión de nubes ou alternativa
-Non hai previsto nubes para hoxe
-Non debería estar nubrado hoxe
diff --git a/dialog/gl-es/local.no.fog.predicted.dialog b/dialog/gl-es/local.no.fog.predicted.dialog
deleted file mode 100644
index 195a3741..00000000
--- a/dialog/gl-es/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nubrado mais ningunha neve ou alternativa é feita como previsión
-Parece que a visibilidade será boa hoxe
-Non hai previsto neboeiros para hoxe
diff --git a/dialog/gl-es/local.no.rain.predicted.dialog b/dialog/gl-es/local.no.rain.predicted.dialog
deleted file mode 100644
index faa9491d..00000000
--- a/dialog/gl-es/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais ningunha chuvia ou alternativa está prevista
-Non está prevista para hoxe a chuvia
-Non debería chover hoxe
-Non hai necesidade dun paraugas hoxe
diff --git a/dialog/gl-es/local.no.snow.predicted.dialog b/dialog/gl-es/local.no.snow.predicted.dialog
deleted file mode 100644
index c022bdb9..00000000
--- a/dialog/gl-es/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nevando mais non hai previsión dela
-Esta previsto que neve hoxe
-Non debería nevar hoxe
diff --git a/dialog/gl-es/local.no.storm.predicted.dialog b/dialog/gl-es/local.no.storm.predicted.dialog
deleted file mode 100644
index b56ae2d3..00000000
--- a/dialog/gl-es/local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais ningunha chuvia ou alternativa está prevista
-Non está prevista a neve para hoxe
-Non debería facer tormenta hoxe
-Non debería haber tormenta hoxe
-O máis probable é que hoxe non haxa tormenta
-Non está prevista unha tormenta hoxe
diff --git a/dialog/gl-es/local.raining.alternative.dialog b/dialog/gl-es/local.raining.alternative.dialog
deleted file mode 100644
index b03d7d8a..00000000
--- a/dialog/gl-es/local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando de que unha alternativa para a chuvia vai acontecer (como neve ou neboeiro)
-Non, pero hoxe a previsión require {condition}
-Non hai previsión de chuvia hoxe mais parece que haberá {condition}
diff --git a/dialog/gl-es/local.snowing.alternative.dialog b/dialog/gl-es/local.snowing.alternative.dialog
deleted file mode 100644
index 05e53278..00000000
--- a/dialog/gl-es/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando de que unha alternativa ao bo tempo vai ocorrer
-Non, pero hoxe a previsión require {condition}
-Non hai previsión de neve para hoxe, mais as oportunidades son de {condition}
diff --git a/dialog/gl-es/local.storm.alternative.dialog b/dialog/gl-es/local.storm.alternative.dialog
deleted file mode 100644
index 659cbdee..00000000
--- a/dialog/gl-es/local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Non, pero hoxe a previsión require {condition}
-# Informando de que unha alternativa para a tempestade vai acontecer (como neve ou nevoeiro)
-Non hai previsión de tempestades para hoxe, mais parece que haberá {condition}
diff --git a/dialog/gl-es/no.clear.predicted.dialog b/dialog/gl-es/no.clear.predicted.dialog
deleted file mode 100644
index 719aaaac..00000000
--- a/dialog/gl-es/no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está despexado ou non
-Desculpa, parece que vai ocorrer {condition}
-Non é probable que faga bo tempo
diff --git a/dialog/gl-es/no.cloudy.predicted.dialog b/dialog/gl-es/no.cloudy.predicted.dialog
deleted file mode 100644
index 07309eb0..00000000
--- a/dialog/gl-es/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nubrado mais non o está
-Non parece estar nubrado hoxe
-Non debería estar nubrado
diff --git a/dialog/gl-es/no.fog.predicted.dialog b/dialog/gl-es/no.fog.predicted.dialog
deleted file mode 100644
index d1b60e50..00000000
--- a/dialog/gl-es/no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nubrado mais ningunha neve ou alternativa é feita como previsión
-Parece que a visibilidade será boa en {location}
-Non está previsto ningún nevoeiro en {location} hoxe
diff --git a/dialog/gl-es/no.rain.predicted.dialog b/dialog/gl-es/no.rain.predicted.dialog
deleted file mode 100644
index 6947a572..00000000
--- a/dialog/gl-es/no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Cando o usuario pregunta se está chovendo mais ningunha chuvia ou alternativa está prevista
-Non está prevista chuvia en {location}
-Non debría estar chovendo en {location}
-Non hai necesidade de usar paraugas en {location}
diff --git a/dialog/gl-es/no.snow.predicted.dialog b/dialog/gl-es/no.snow.predicted.dialog
deleted file mode 100644
index 2ba435f5..00000000
--- a/dialog/gl-es/no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cando o usuario pregunta se está nevando mais ningunha neve ou alternativa está prevista
-Non está prevista a neve en {location}
-Non vai nevar en {location}
diff --git a/dialog/gl-es/no.storm.predicted.dialog b/dialog/gl-es/no.storm.predicted.dialog
deleted file mode 100644
index dacfe066..00000000
--- a/dialog/gl-es/no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Cando o usuario pregunta se hai tormenta mais non hai previsión dela
-Non está prevista ningunha tempestade en {location}
-Non debería haber unha tormenta en {location}
-Non debería haber unha tormenta en {location}
diff --git a/dialog/gl-es/on.date.dialog b/dialog/gl-es/on.date.dialog
deleted file mode 100644
index c574d073..00000000
--- a/dialog/gl-es/on.date.dialog
+++ /dev/null
@@ -1 +0,0 @@
-en
diff --git a/dialog/gl-es/on.dialog b/dialog/gl-es/on.dialog
deleted file mode 100644
index c574d073..00000000
--- a/dialog/gl-es/on.dialog
+++ /dev/null
@@ -1 +0,0 @@
-en
diff --git a/dialog/gl-es/raining.alternative.dialog b/dialog/gl-es/raining.alternative.dialog
deleted file mode 100644
index 7e663e4f..00000000
--- a/dialog/gl-es/raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando de que unha alternativa para a chuvia vai acontecer (como neve ou neboeiro)
-Non, pero a previsión require {condition} en {location}
-Non hai previsión de chuvia para hoxe en {location}, mais parece que haberá {condition}
diff --git a/dialog/gl-es/report.condition.at.location.dialog b/dialog/gl-es/report.condition.at.location.dialog
deleted file mode 100644
index 5a1d967e..00000000
--- a/dialog/gl-es/report.condition.at.location.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Actualmente, {condition} en {location} é de {value}
diff --git a/dialog/gl-es/report.condition.dialog b/dialog/gl-es/report.condition.dialog
deleted file mode 100644
index fd6ac7a8..00000000
--- a/dialog/gl-es/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Neste momento, {condition} é de {value}
diff --git a/dialog/gl-es/report.condition.future.at.location.dialog b/dialog/gl-es/report.condition.future.at.location.dialog
deleted file mode 100644
index e6f5cc14..00000000
--- a/dialog/gl-es/report.condition.future.at.location.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} en {location} o {day} será de {value}
-{day} a previsión en {location} indica {condition} de {value}
diff --git a/dialog/gl-es/report.condition.future.dialog b/dialog/gl-es/report.condition.future.dialog
deleted file mode 100644
index 402816cb..00000000
--- a/dialog/gl-es/report.condition.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} o {day} será {value}
-o {day} a previsión indica {condition} de {value}
diff --git a/dialog/gl-es/report.wind.dialog b/dialog/gl-es/report.wind.dialog
deleted file mode 100644
index ec0a3932..00000000
--- a/dialog/gl-es/report.wind.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{condition} é {value}
diff --git a/dialog/gl-es/sky is clear.future.dialog b/dialog/gl-es/sky is clear.future.dialog
deleted file mode 100644
index 969865c8..00000000
--- a/dialog/gl-es/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-un ceo despexado
diff --git a/dialog/gl-es/snowing.alternative.dialog b/dialog/gl-es/snowing.alternative.dialog
deleted file mode 100644
index 5e3eb760..00000000
--- a/dialog/gl-es/snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando de que unha alternativa ao bo tempo vai ocorrer
-Non, pero a previsión require {condition} en {location}
-Non está previsto que neve hoxe pero as opcións son que haxa {condition} en {location}
diff --git a/dialog/gl-es/storm.alternative.dialog b/dialog/gl-es/storm.alternative.dialog
deleted file mode 100644
index 65613323..00000000
--- a/dialog/gl-es/storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Non, pero a previsión require {condition} en {location}
-# Informando de que unha alternativa para a chuvia forte vai acontecer (como neve ou nevoeiro)
-Non hai previsión de chuvia para hoxe en {location}, mais parece que haberá {condition}
diff --git a/dialog/gl-es/sunrise.dialog b/dialog/gl-es/sunrise.dialog
deleted file mode 100644
index ad9b61ff..00000000
--- a/dialog/gl-es/sunrise.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-o sol naceu ás {time} hoxe
-o nacer do sol foi ás {time} hoxe
diff --git a/dialog/gl-es/sunset.dialog b/dialog/gl-es/sunset.dialog
deleted file mode 100644
index cebd1363..00000000
--- a/dialog/gl-es/sunset.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-o sol vai poñerse hoxe ás {time}
-o sol vai poñerse ás {time} hoxe
-o solpor será ás {time} hoxe
diff --git a/dialog/gl-es/tonight.local.weather.dialog b/dialog/gl-es/tonight.local.weather.dialog
deleted file mode 100644
index b2085f81..00000000
--- a/dialog/gl-es/tonight.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Esta noite teremos {condition}, con temperaturas preto de {temp}
-Esta noite teremos {condition} e ao redor de {temp} graos
-Esta noite teremos {condition} e {temp} graos
-Cerca de {temp} graos con {condition} esta noite
diff --git a/dialog/gl-es/weekly.condition.on.day.dialog b/dialog/gl-es/weekly.condition.on.day.dialog
deleted file mode 100644
index 5a1d1c07..00000000
--- a/dialog/gl-es/weekly.condition.on.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-o {day} será {condition},
diff --git a/dialog/gl-es/weekly.conditions.mostly.one.dialog b/dialog/gl-es/weekly.conditions.mostly.one.dialog
deleted file mode 100644
index 5d4c0182..00000000
--- a/dialog/gl-es/weekly.conditions.mostly.one.dialog
+++ /dev/null
@@ -1 +0,0 @@
-será principalmente {condition}.
diff --git a/dialog/gl-es/weekly.conditions.seq.extra.dialog b/dialog/gl-es/weekly.conditions.seq.extra.dialog
deleted file mode 100644
index 7fc55f59..00000000
--- a/dialog/gl-es/weekly.conditions.seq.extra.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-parece que tamén haberá
-tamén será
diff --git a/dialog/gl-es/weekly.conditions.seq.period.dialog b/dialog/gl-es/weekly.conditions.seq.period.dialog
deleted file mode 100644
index 667d1e84..00000000
--- a/dialog/gl-es/weekly.conditions.seq.period.dialog
+++ /dev/null
@@ -1 +0,0 @@
-de {from} ata {to}
diff --git a/dialog/gl-es/weekly.conditions.seq.start.dialog b/dialog/gl-es/weekly.conditions.seq.start.dialog
deleted file mode 100644
index 324e1d91..00000000
--- a/dialog/gl-es/weekly.conditions.seq.start.dialog
+++ /dev/null
@@ -1 +0,0 @@
-será {condition}
diff --git a/dialog/gl-es/weekly.conditions.some.days.dialog b/dialog/gl-es/weekly.conditions.some.days.dialog
deleted file mode 100644
index ebf61df2..00000000
--- a/dialog/gl-es/weekly.conditions.some.days.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Será {condition} algúns días.
diff --git a/dialog/gl-es/wind.speed.dialog b/dialog/gl-es/wind.speed.dialog
deleted file mode 100644
index b98efb6f..00000000
--- a/dialog/gl-es/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{speed} {unit}
diff --git a/dialog/gl-es/wind.speed.dir.dialog b/dialog/gl-es/wind.speed.dir.dialog
deleted file mode 100644
index 34e1bde8..00000000
--- a/dialog/gl-es/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-a {speed} {unit} vindo do {dir}
-do {dir} a {speed} {unit}
diff --git a/dialog/gl-es/wind.strength.hard.dialog b/dialog/gl-es/wind.strength.hard.dialog
deleted file mode 100644
index e1f92e9f..00000000
--- a/dialog/gl-es/wind.strength.hard.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Isto é bastante forte
diff --git a/dialog/gl-es/wind.strength.light.dialog b/dialog/gl-es/wind.strength.light.dialog
deleted file mode 100644
index ad7d4c42..00000000
--- a/dialog/gl-es/wind.strength.light.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Non fai moito vento
-Non fai moito vento
-Un pouco calmado
diff --git a/dialog/gl-es/wind.strength.medium.dialog b/dialog/gl-es/wind.strength.medium.dialog
deleted file mode 100644
index d58a7c04..00000000
--- a/dialog/gl-es/wind.strength.medium.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Está soprando unha brisa.
-Deberías levar unha chaqueta
diff --git a/dialog/gl-es/winds.dialog b/dialog/gl-es/winds.dialog
deleted file mode 100644
index 1bd4fbcb..00000000
--- a/dialog/gl-es/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-velocidade do vento
diff --git a/dialog/it-it/clear.alternative.dialog b/dialog/it-it/clear.alternative.dialog
deleted file mode 100644
index 708d8ccc..00000000
--- a/dialog/it-it/clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, la previsione indica {condition} a {location}
-Sembra che a {location} ci sarà {condition}
-Sì, sarà {condition} a {location}
diff --git a/dialog/it-it/cloudy.alternative.dialog b/dialog/it-it/cloudy.alternative.dialog
deleted file mode 100644
index d1dca18c..00000000
--- a/dialog/it-it/cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, la previsione indica {condition}
-Probabilmente non sarà nuvoloso, sembra che ci sarà {condition}
-Non sembra così, è probabile che sarà {condition}
diff --git a/dialog/it-it/current.hot.dialog b/dialog/it-it/current.hot.dialog
deleted file mode 100644
index 459d32c3..00000000
--- a/dialog/it-it/current.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Ci sono {{temp}} gradi {{scale}} a {{location}}, ben all'interno della mia temperatura operativa.
-Ci sono {{temp}} gradi a {{location}} che si adattano bene ad un A.I.
diff --git a/dialog/it-it/current.local.cold.dialog b/dialog/it-it/current.local.cold.dialog
deleted file mode 100644
index 8bd82967..00000000
--- a/dialog/it-it/current.local.cold.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-attualmente ci sono {{temp}} gradi, bene entro la mia temperatura operativa
-Ci sono {{temp}} gradi, abbastanza comodo per un A. I.
diff --git a/dialog/it-it/current.local.hot.dialog b/dialog/it-it/current.local.hot.dialog
deleted file mode 100644
index c20c5da6..00000000
--- a/dialog/it-it/current.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Rientra nella mia temperatura operazionale, correntemente {{temp}} gradi
-Ci sono {{temp}} gradi, abbastanza comodo per un A.I.
diff --git a/dialog/it-it/do not know.dialog b/dialog/it-it/do not know.dialog
deleted file mode 100644
index f07fc380..00000000
--- a/dialog/it-it/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Purtroppo non lo so
-Non ho questa informazione
diff --git a/dialog/it-it/fog.alternative.dialog b/dialog/it-it/fog.alternative.dialog
deleted file mode 100644
index a70a797e..00000000
--- a/dialog/it-it/fog.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-No, la previsione indica {condition} a {location}
-Sembra che a {location} ci sarà {condition}
-Sì, sarà {condition} a {location}
-# Informing that an alternative to fog will occur at a location
diff --git a/dialog/it-it/forecast.clear.alternative.dialog b/dialog/it-it/forecast.clear.alternative.dialog
deleted file mode 100644
index 4e432239..00000000
--- a/dialog/it-it/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, la previsione a {location} indica {condition}
-Per {day} non è prevista pioggia a {location}, ma sembra che ci sarà {condition}
diff --git a/dialog/it-it/forecast.cloudy.alternative.dialog b/dialog/it-it/forecast.cloudy.alternative.dialog
deleted file mode 100644
index 52a3c7d3..00000000
--- a/dialog/it-it/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, la previsione indica {condition} a {location}
-Probabilmente non sarà nuvoloso a {location}, sembra che ci sarà {condition}
-Non sembra così, è probabile a {location} avremo {condition}
diff --git a/dialog/it-it/forecast.foggy.alternative.dialog b/dialog/it-it/forecast.foggy.alternative.dialog
deleted file mode 100644
index 887a9ad1..00000000
--- a/dialog/it-it/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Sembra che a {location} ci sarà {condition}
-Sì, sarà {condition} a {location}
-# Informing that an alternative to fog will occur
-No, a {location} si prevede {condition}
diff --git a/dialog/it-it/forecast.hot.dialog b/dialog/it-it/forecast.hot.dialog
deleted file mode 100644
index 4c520b87..00000000
--- a/dialog/it-it/forecast.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} a {{location}} ci saranno {{temp}} gradi, abbastanza confortevole per una A.I.
-{{day}} a {{location}} la temperatura sarà di {{temp}}, perfettamente tra le mie specifiche
diff --git a/dialog/it-it/forecast.local.clear.alternative.dialog b/dialog/it-it/forecast.local.clear.alternative.dialog
deleted file mode 100644
index 2bd64a46..00000000
--- a/dialog/it-it/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, ma la previsione indica {condition}
-Per {day} non è prevista pioggia, ma sembra che ci sarà {condition}
diff --git a/dialog/it-it/forecast.local.cloudy.alternative.dialog b/dialog/it-it/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index d1dca18c..00000000
--- a/dialog/it-it/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, la previsione indica {condition}
-Probabilmente non sarà nuvoloso, sembra che ci sarà {condition}
-Non sembra così, è probabile che sarà {condition}
diff --git a/dialog/it-it/forecast.local.foggy.alternative.dialog b/dialog/it-it/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 6fff95a5..00000000
--- a/dialog/it-it/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-No, la previsione indica {condition}
-# Informing that an alternative to fog will occur
-Sembra che sarà {condition}
-Probabilmente sarà {condition}
diff --git a/dialog/it-it/forecast.local.hot.dialog b/dialog/it-it/forecast.local.hot.dialog
deleted file mode 100644
index 4a7505d0..00000000
--- a/dialog/it-it/forecast.local.hot.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} ci saranno {{temp}}, abbastanza confortevole per una A.I.
diff --git a/dialog/it-it/forecast.local.no.clear.predicted.dialog b/dialog/it-it/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 0b7caaef..00000000
--- a/dialog/it-it/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-Somo spiacente, la previsione non prevede condizioni serene
-{day}, molto probabilmente il cielo non sarà sereno
diff --git a/dialog/it-it/forecast.local.no.cloudy.predicted.dialog b/dialog/it-it/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index 0d34307b..00000000
--- a/dialog/it-it/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's cloudy but it's not
-Non sembra che sarà nuvoloso
-Le previsioni dicono che il cielo sarà sereno
-Aspettati un cielo sereno
-Molto probabilmente non pioverà
diff --git a/dialog/it-it/forecast.local.no.fog.predicted.dialog b/dialog/it-it/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index 1475bdd4..00000000
--- a/dialog/it-it/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-{day} le condizioni di visibilità dovrebbero essere buone
-Per {day} non è prevista alcuna nebbia
diff --git a/dialog/it-it/forecast.local.no.rain.predicted.dialog b/dialog/it-it/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index 7717cb5b..00000000
--- a/dialog/it-it/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-Non c'è previsione di pioggia
-{day}, molto probabilmente non pioverà
-Non c'è bisogno dell'ombrello
diff --git a/dialog/it-it/forecast.local.no.snow.predicted.dialog b/dialog/it-it/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index a62eaceb..00000000
--- a/dialog/it-it/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se nevica ma non viene proiettata neve o alternativa
-Non c'è previsione di neve
-Non nevicherà
diff --git a/dialog/it-it/forecast.local.raining.alternative.dialog b/dialog/it-it/forecast.local.raining.alternative.dialog
deleted file mode 100644
index 2bd64a46..00000000
--- a/dialog/it-it/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, ma la previsione indica {condition}
-Per {day} non è prevista pioggia, ma sembra che ci sarà {condition}
diff --git a/dialog/it-it/forecast.no.clear.predicted.dialog b/dialog/it-it/forecast.no.clear.predicted.dialog
deleted file mode 100644
index b61c7164..00000000
--- a/dialog/it-it/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-Sono spiacente, a {location} non si prevede tempo sereno
-{day}, a {location} molto probabilmente il cielo non sarà sereno
diff --git a/dialog/it-it/forecast.no.cloudy.predicted.dialog b/dialog/it-it/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index a47d6111..00000000
--- a/dialog/it-it/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's cloudy but it's not
-A {location} non sembra che sarà nuvoloso.
-A {location} il meteo dice che il cielo sarà sereno
-A {location} aspettati un cielo sereno
-A {location} probabilmente non sarà nuvoloso
diff --git a/dialog/it-it/forecast.no.fog.predicted.dialog b/dialog/it-it/forecast.no.fog.predicted.dialog
deleted file mode 100644
index d7f0e30e..00000000
--- a/dialog/it-it/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-{day} a {location} le condizioni di visibilità dovrebbero essere buone
-A {location}, {day} non è prevista nebbia
diff --git a/dialog/it-it/forecast.no.rain.predicted.dialog b/dialog/it-it/forecast.no.rain.predicted.dialog
deleted file mode 100644
index 07b71321..00000000
--- a/dialog/it-it/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-A {location}, {day} non è prevista pioggia
-A {location}, molto probabilmente {day} non pioverà
-Non c'è bisogno di ombrelli a {location}
diff --git a/dialog/it-it/forecast.no.snow.predicted.dialog b/dialog/it-it/forecast.no.snow.predicted.dialog
deleted file mode 100644
index 457e7606..00000000
--- a/dialog/it-it/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se nevica ma non viene proiettata neve o alternativa
-A {location} per {day} non è prevista neve
-A {location} non pioverà
diff --git a/dialog/it-it/forecast.raining.alternative.dialog b/dialog/it-it/forecast.raining.alternative.dialog
deleted file mode 100644
index 4e432239..00000000
--- a/dialog/it-it/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-No, la previsione a {location} indica {condition}
-Per {day} non è prevista pioggia a {location}, ma sembra che ci sarà {condition}
diff --git a/dialog/it-it/forecast.snowing.alternative.dialog b/dialog/it-it/forecast.snowing.alternative.dialog
deleted file mode 100644
index a5b15b43..00000000
--- a/dialog/it-it/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, ma la previsione indica {condition}
-# Informing that an alternative to snowing will occur
-Non è prevista neve per {day}, ma è probabile che sarà {condition}
diff --git a/dialog/it-it/heavy.dialog b/dialog/it-it/heavy.dialog
deleted file mode 100644
index 5c0ee68c..00000000
--- a/dialog/it-it/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-pesante
diff --git a/dialog/it-it/light.dialog b/dialog/it-it/light.dialog
deleted file mode 100644
index d52ad3d6..00000000
--- a/dialog/it-it/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-luminoso
diff --git a/dialog/it-it/local.clear.alternative.dialog b/dialog/it-it/local.clear.alternative.dialog
deleted file mode 100644
index aa71efc2..00000000
--- a/dialog/it-it/local.clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, la previsione indica {condition}
-Sembra che sarà {condition}
-Probabilmente sarà {condition}
diff --git a/dialog/it-it/local.cloudy.alternative.dialog b/dialog/it-it/local.cloudy.alternative.dialog
deleted file mode 100644
index d1dca18c..00000000
--- a/dialog/it-it/local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-No, la previsione indica {condition}
-Probabilmente non sarà nuvoloso, sembra che ci sarà {condition}
-Non sembra così, è probabile che sarà {condition}
diff --git a/dialog/it-it/local.foggy.alternative.dialog b/dialog/it-it/local.foggy.alternative.dialog
deleted file mode 100644
index 6fff95a5..00000000
--- a/dialog/it-it/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-No, la previsione indica {condition}
-# Informing that an alternative to fog will occur
-Sembra che sarà {condition}
-Probabilmente sarà {condition}
diff --git a/dialog/it-it/local.no.fog.predicted.dialog b/dialog/it-it/local.no.fog.predicted.dialog
deleted file mode 100644
index 2fc152cc..00000000
--- a/dialog/it-it/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-Sembra che la visibilità sarà buona
-Per oggi non è prevista alcuna nebbia
diff --git a/dialog/it-it/local.no.rain.predicted.dialog b/dialog/it-it/local.no.rain.predicted.dialog
deleted file mode 100644
index 6c3d5367..00000000
--- a/dialog/it-it/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Non c'è previsione di pioggia
-Non c'è bisogno dell'ombrello
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-Molto probabilmente non pioverà
diff --git a/dialog/it-it/local.no.snow.predicted.dialog b/dialog/it-it/local.no.snow.predicted.dialog
deleted file mode 100644
index a62eaceb..00000000
--- a/dialog/it-it/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se nevica ma non viene proiettata neve o alternativa
-Non c'è previsione di neve
-Non nevicherà
diff --git a/dialog/it-it/local.raining.alternative.dialog b/dialog/it-it/local.raining.alternative.dialog
deleted file mode 100644
index d0c6837a..00000000
--- a/dialog/it-it/local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, ma la previsione indica {condition}
-# Informa che si verificherà un'alternativa alla pioggia (come neve o nebbia)
-Non è prevista pioggia per oggi ma sembra che sarà {condition}
diff --git a/dialog/it-it/local.snowing.alternative.dialog b/dialog/it-it/local.snowing.alternative.dialog
deleted file mode 100644
index 1ee8df70..00000000
--- a/dialog/it-it/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, ma la previsione indica {condition}
-# Informing that an alternative to snowing will occur
-Non è prevista neve per oggi, ma è probabile che sarà {condition}
diff --git a/dialog/it-it/no forecast.dialog b/dialog/it-it/no forecast.dialog
deleted file mode 100644
index aec0e030..00000000
--- a/dialog/it-it/no forecast.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Scusa, non ho le previsioni per {{day}}
-Non ho una previsione per {{day}}
diff --git a/dialog/it-it/no.clear.predicted.dialog b/dialog/it-it/no.clear.predicted.dialog
deleted file mode 100644
index 5ee26992..00000000
--- a/dialog/it-it/no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's clear but it's not
-Mi dispiace, sembra che sarà {condition}
-Molto probabilmente il cielo non sarà sereno
diff --git a/dialog/it-it/no.cloudy.predicted.dialog b/dialog/it-it/no.cloudy.predicted.dialog
deleted file mode 100644
index 19000698..00000000
--- a/dialog/it-it/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's cloudy but it's not
-Molto probabilmente non pioverà
-Oggi non sembra che sia nuvoloso
diff --git a/dialog/it-it/no.fog.predicted.dialog b/dialog/it-it/no.fog.predicted.dialog
deleted file mode 100644
index 9d80a6d5..00000000
--- a/dialog/it-it/no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-Sembra che a {location} le condizioni di visibilità saranno buone
-Oggi a {location} non si prevede nebbia
diff --git a/dialog/it-it/no.rain.predicted.dialog b/dialog/it-it/no.rain.predicted.dialog
deleted file mode 100644
index 47760995..00000000
--- a/dialog/it-it/no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Non c'è bisogno di ombrelli a {location}
-# Quando l'utente chiede se piove ma non viene proiettata neve o alternativa
-A {location} non si prevede pioggia
-A {location} probabilmente non pioverà
diff --git a/dialog/it-it/no.snow.predicted.dialog b/dialog/it-it/no.snow.predicted.dialog
deleted file mode 100644
index eab8347e..00000000
--- a/dialog/it-it/no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando l'utente chiede se nevica ma non viene proiettata neve o alternativa
-A {location} non pioverà
-A {location} non si prevede neve
diff --git a/dialog/it-it/raining.alternative.dialog b/dialog/it-it/raining.alternative.dialog
deleted file mode 100644
index d85055c1..00000000
--- a/dialog/it-it/raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, la previsione a {location} indica {condition}
-# Informa che si verificherà un'alternativa alla pioggia (come neve o nebbia)
-Per oggi a {location} non è prevista pioggia, ma sembra che ci sarà {condition}
diff --git a/dialog/it-it/report.condition.dialog b/dialog/it-it/report.condition.dialog
deleted file mode 100644
index c822ce42..00000000
--- a/dialog/it-it/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{condition}} è {{value}}
diff --git a/dialog/it-it/report.future.condition.dialog b/dialog/it-it/report.future.condition.dialog
deleted file mode 100644
index fab31071..00000000
--- a/dialog/it-it/report.future.condition.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{{condition}} per {{day}} sarà {{value}}
-Per {{day}} la previsione indica {{condition}} al {{value}}
diff --git a/dialog/it-it/sky is clear.future.dialog b/dialog/it-it/sky is clear.future.dialog
deleted file mode 100644
index b719f7bd..00000000
--- a/dialog/it-it/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-chiaro
diff --git a/dialog/it-it/snowing.alternative.dialog b/dialog/it-it/snowing.alternative.dialog
deleted file mode 100644
index 8fea273f..00000000
--- a/dialog/it-it/snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-No, la previsione a {location} indica {condition}
-# Informing that an alternative to snowing will occur
-A {location} per oggi non è prevista neve, ma è probabile che sarà {condition}
diff --git a/dialog/it-it/wind.speed.dialog b/dialog/it-it/wind.speed.dialog
deleted file mode 100644
index cff9d7e4..00000000
--- a/dialog/it-it/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{speed}} {{unit}}
diff --git a/dialog/it-it/wind.speed.dir.dialog b/dialog/it-it/wind.speed.dir.dialog
deleted file mode 100644
index 56c35fb1..00000000
--- a/dialog/it-it/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-di {{speed}} {{unit}} proveniente da {{dir}}
-proveniente da {{dir}} a {{speed}} {{unit}}
diff --git a/dialog/it-it/winds.dialog b/dialog/it-it/winds.dialog
deleted file mode 100644
index 57d1c7df..00000000
--- a/dialog/it-it/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-il vento
diff --git a/dialog/nl-nl/W.dialog b/dialog/nl-nl/W.dialog
deleted file mode 100644
index f25afc34..00000000
--- a/dialog/nl-nl/W.dialog
+++ /dev/null
@@ -1 +0,0 @@
-west
diff --git a/dialog/nl-nl/do not know.dialog b/dialog/nl-nl/do not know.dialog
deleted file mode 100644
index 0b4a6501..00000000
--- a/dialog/nl-nl/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Ik ben bang dat ik dat niet weet
-Die informatie heb ik niet
diff --git a/dialog/nl-nl/heavy.dialog b/dialog/nl-nl/heavy.dialog
deleted file mode 100644
index 2522541d..00000000
--- a/dialog/nl-nl/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-zware
diff --git a/dialog/nl-nl/light.dialog b/dialog/nl-nl/light.dialog
deleted file mode 100644
index 554fef73..00000000
--- a/dialog/nl-nl/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-lichte
diff --git a/dialog/nl-nl/no forecast.dialog b/dialog/nl-nl/no forecast.dialog
deleted file mode 100644
index a5a53da4..00000000
--- a/dialog/nl-nl/no forecast.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Sorry, ik ken de weersverwachting voor {{day}} niet
-Ik heb geen weersvoorspelling voor {{day}}
diff --git a/dialog/nl-nl/report.condition.dialog b/dialog/nl-nl/report.condition.dialog
deleted file mode 100644
index 1aee200b..00000000
--- a/dialog/nl-nl/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{condition}} is {{value}}
diff --git a/dialog/nl-nl/report.future.condition.dialog b/dialog/nl-nl/report.future.condition.dialog
deleted file mode 100644
index 6d0d4268..00000000
--- a/dialog/nl-nl/report.future.condition.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{{condition}} voor {{day}} zal {{value}} zijn
-Op {{day}} is de verwachting met een {{condition}} van {{value}}
diff --git a/dialog/nl-nl/sky is clear.future.dialog b/dialog/nl-nl/sky is clear.future.dialog
deleted file mode 100644
index baf7e603..00000000
--- a/dialog/nl-nl/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-helder
diff --git a/dialog/nl-nl/wind.speed.dialog b/dialog/nl-nl/wind.speed.dialog
deleted file mode 100644
index cff9d7e4..00000000
--- a/dialog/nl-nl/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{speed}} {{unit}}
diff --git a/dialog/nl-nl/wind.speed.dir.dialog b/dialog/nl-nl/wind.speed.dir.dialog
deleted file mode 100644
index 6c6262e4..00000000
--- a/dialog/nl-nl/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-met {{speed}} {{unit}} vanuit {{dir}}
-vanuit het {{dir}} met {{speed}} {{unit}}
diff --git a/dialog/nl-nl/winds.dialog b/dialog/nl-nl/winds.dialog
deleted file mode 100644
index 20268dd3..00000000
--- a/dialog/nl-nl/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-de wind
diff --git a/dialog/pt-br/at.time.forecast.affirmative.condition.dialog b/dialog/pt-br/at.time.forecast.affirmative.condition.dialog
deleted file mode 100644
index 66293ab2..00000000
--- a/dialog/pt-br/at.time.forecast.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Resposta afirmativa a questões como "vai nevar em Paris amanhã de tarde"
-Sim, a previsão para {day}{time} indica {condition} em {location}
-Sim, a previsão para {time} de {day} em {location} indica {condition}
diff --git a/dialog/pt-br/at.time.forecast.cond.alternative.dialog b/dialog/pt-br/at.time.forecast.cond.alternative.dialog
deleted file mode 100644
index 0fa80f50..00000000
--- a/dialog/pt-br/at.time.forecast.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa ao tempo bom vai ocorrer em um horário especificado
-Não, a previsão para {time} de {day} indica {condition} em {location}
-Parece que não, a previsão às {time} em {day} sugere que {location} terá {condition}
diff --git a/dialog/pt-br/at.time.forecast.local.affirmative.condition.dialog b/dialog/pt-br/at.time.forecast.local.affirmative.condition.dialog
deleted file mode 100644
index 12b78fa1..00000000
--- a/dialog/pt-br/at.time.forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Resposta afirmativa a questões como "vai nevar amanhã"
-Sim, esperado {condition} de acordo com a previsão às {time} em {day}
-Sim, a previsão para {time} indica {condition} {day}
diff --git a/dialog/pt-br/at.time.forecast.local.cond.alternative.dialog b/dialog/pt-br/at.time.forecast.local.cond.alternative.dialog
deleted file mode 100644
index 977c0de7..00000000
--- a/dialog/pt-br/at.time.forecast.local.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa para limpar o tempo vai ocorrer
-Não, a previsão para {time} indica {condition} {day}
-Parece que não, a previsão às {time} em {day} sugere que será {condition}
diff --git a/dialog/pt-br/at.time.forecast.local.no.cond.predicted.dialog b/dialog/pt-br/at.time.forecast.local.no.cond.predicted.dialog
deleted file mode 100644
index a7485b37..00000000
--- a/dialog/pt-br/at.time.forecast.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# Quando o usuário pergunta se uma condição de tempo mas isso não acontece
-Não, a previsão para {time} indica {condition} {day}
diff --git a/dialog/pt-br/at.time.forecast.no.cond.predicted.dialog b/dialog/pt-br/at.time.forecast.no.cond.predicted.dialog
deleted file mode 100644
index b4db78fe..00000000
--- a/dialog/pt-br/at.time.forecast.no.cond.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se ocorre uma condição de tempo mas isso não acontece
-Não, a previsão de {time} em {location} sugere que será {condition}
-Parece que não, a previsão de {time} em {location} sugere que será {condition}
diff --git a/dialog/pt-br/at.time.local.high.temperature.dialog b/dialog/pt-br/at.time.local.high.temperature.dialog
deleted file mode 100644
index 03ac176e..00000000
--- a/dialog/pt-br/at.time.local.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-A temperatura vai subir até {temp} graus {time}
-{time}, a temperatura vai subir até {temp} graus
diff --git a/dialog/pt-br/at.time.local.low.temperature.dialog b/dialog/pt-br/at.time.local.low.temperature.dialog
deleted file mode 100644
index 5e22b979..00000000
--- a/dialog/pt-br/at.time.local.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-A temperatura vai baixar até {temp} graus {time}
-{time}, vai esfriar até {temp} graus
diff --git a/dialog/pt-br/at.time.local.weather.dialog b/dialog/pt-br/at.time.local.weather.dialog
deleted file mode 100644
index 6b36e8ba..00000000
--- a/dialog/pt-br/at.time.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Teremos {condition}, com temperaturas perto de {temp} às {time}
-{time}, teremos {condition} e temperatura por volta de {temp} graus
-{time}, teremos {condition} e {temp} graus
-{time}, teremos {condition} com {temp} graus
diff --git a/dialog/pt-br/clear.alternative.dialog b/dialog/pt-br/clear.alternative.dialog
deleted file mode 100644
index 6b61e56c..00000000
--- a/dialog/pt-br/clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa para limpar o tempo vai ocorrer
-Não, a previsão indica {condition} em {location}
-Parece que haverá {condition} em {location}
-As chances são que vai estar {condition} em {location}
diff --git a/dialog/pt-br/clear.future.dialog b/dialog/pt-br/clear.future.dialog
deleted file mode 100644
index b657c448..00000000
--- a/dialog/pt-br/clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-um céu limpo
diff --git a/dialog/pt-br/cloudy.alternative.dialog b/dialog/pt-br/cloudy.alternative.dialog
deleted file mode 100644
index 9031cc47..00000000
--- a/dialog/pt-br/cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa para limpar o tempo vai ocorrer
-Não, a previsão indica {condition}
-Provavelmente não estará nublado, parece que estará {condition}
-Parece que não, as chances são de que esteja {condition}
diff --git a/dialog/pt-br/condition.category.value b/dialog/pt-br/condition.category.value
deleted file mode 100644
index 3db11587..00000000
--- a/dialog/pt-br/condition.category.value
+++ /dev/null
@@ -1,15 +0,0 @@
-nuvens,nublado
-limpo,um céu limpo
-Tempestades com trovões, tempestades
-Chuviscos, chuviscando
-chuva|chovendo
-neve|nevando
-Névoa, enevoado
-Fumaça, fumacento
-neblina,nublado
-Poeira, empoeirado
-Nevoeiro, nevoento
-Areia, poeirento
-Cinza, nublado com possível cinza vulcânica
-Borrasca, tempestuoso
-Tornado, tempestuoso com possibilidade de tornado
diff --git a/dialog/pt-br/current.hot.dialog b/dialog/pt-br/current.hot.dialog
deleted file mode 100644
index 4c77b3ba..00000000
--- a/dialog/pt-br/current.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Está {temp} graus {scale} em {location}, bem dentro da minha temperatura operacional.
-Está {temp} graus em {location}, o que cai bem para uma I.A..
diff --git a/dialog/pt-br/current.local.cold.dialog b/dialog/pt-br/current.local.cold.dialog
deleted file mode 100644
index 88900389..00000000
--- a/dialog/pt-br/current.local.cold.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-no momento faz {temp}, bem dentro da minha temperatura operacional
-Faz {temp}, bastante confortável para uma I.A.
diff --git a/dialog/pt-br/current.local.hot.dialog b/dialog/pt-br/current.local.hot.dialog
deleted file mode 100644
index f1127be5..00000000
--- a/dialog/pt-br/current.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Está dentro da minha temperatura operacional, atualmente em {temp} graus
-Faz {temp} graus, bastante confortável para uma I.A.
diff --git a/dialog/pt-br/do not know.dialog b/dialog/pt-br/do not know.dialog
deleted file mode 100644
index 29401b1a..00000000
--- a/dialog/pt-br/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Eu receio que eu não saiba isso
-Eu não tenho essa informação
diff --git a/dialog/pt-br/fog.alternative.dialog b/dialog/pt-br/fog.alternative.dialog
deleted file mode 100644
index b6078143..00000000
--- a/dialog/pt-br/fog.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Não, a previsão indica {condition} em {location}
-As chances são que vai estar {condition} em {location}
-# Informando que uma alternativa ao nevoeiro ocorrerá em um local
-Parece que haverá {condition} em {location}
diff --git a/dialog/pt-br/forecast.clear.alternative.dialog b/dialog/pt-br/forecast.clear.alternative.dialog
deleted file mode 100644
index b6d463aa..00000000
--- a/dialog/pt-br/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa à chuva ocorrerá
-Não, mas a previsão indica {condition} em {location} {day}
-No {day}, não há previsão de chuva para {location}, mas parece que haverá {condition}
diff --git a/dialog/pt-br/forecast.cloudy.alternative.dialog b/dialog/pt-br/forecast.cloudy.alternative.dialog
deleted file mode 100644
index 501c0696..00000000
--- a/dialog/pt-br/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa para limpar o tempo vai ocorrer
-# Não, a previsão indica {condition} em {location} {day}
-# Provavelmente não estará nublado {day} em {location}, parece que estará {condition}
-Parece que não, as chances são de que em {location} haverá {condition} {day}
diff --git a/dialog/pt-br/forecast.foggy.alternative.dialog b/dialog/pt-br/forecast.foggy.alternative.dialog
deleted file mode 100644
index ffc2cd26..00000000
--- a/dialog/pt-br/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa ao nevoeiro vai ocorrer
-Não, a previsão para {location} {day} é de {condition}
-Parece que haverá {condition} em {location} {day}
-Chances são de que vai estar {condition} em {location} {day}
diff --git a/dialog/pt-br/forecast.hot.dialog b/dialog/pt-br/forecast.hot.dialog
deleted file mode 100644
index badfaab9..00000000
--- a/dialog/pt-br/forecast.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} fará {temp} graus em {location}, bastante confortável para uma I.A.
-{day} a temperatura será de {temp} em {location}, bem dentro das minhas especificações
diff --git a/dialog/pt-br/forecast.local.clear.alternative.dialog b/dialog/pt-br/forecast.local.clear.alternative.dialog
deleted file mode 100644
index 75e3067d..00000000
--- a/dialog/pt-br/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa para limpar o tempo vai ocorrer
-Não, a previsão para {day} indica {condition}
-{day}, parece que haverá {condition}
diff --git a/dialog/pt-br/forecast.local.cloudy.alternative.dialog b/dialog/pt-br/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index 99641ed7..00000000
--- a/dialog/pt-br/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa para limpar o tempo vai ocorrer
-Não, a previsão para {day} indica {condition}
-Provavelmente não estará nublado, parece que {day} estará {condition}
-Parece que não, as chances são de que {day} esteja {condition}
diff --git a/dialog/pt-br/forecast.local.foggy.alternative.dialog b/dialog/pt-br/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 0bb4abe6..00000000
--- a/dialog/pt-br/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa ao nevoeiro vai ocorrer
-Não, a previsão para {day} indica {condition}
-Parece que {day} teremos {condition}
-Chances são de que fará {condition} {day}
diff --git a/dialog/pt-br/forecast.local.hot.dialog b/dialog/pt-br/forecast.local.hot.dialog
deleted file mode 100644
index 3daa600b..00000000
--- a/dialog/pt-br/forecast.local.hot.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} fará {temp}, bastante confortável para uma IA
diff --git a/dialog/pt-br/forecast.local.no.clear.predicted.dialog b/dialog/pt-br/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 750c6ab5..00000000
--- a/dialog/pt-br/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se o céu está claro mas uma previsão alternativa é feita
-Desculpe, a previsão não prevê condições de céu claro {day}
-{day}, não é provável que o tempo esteja bom.
diff --git a/dialog/pt-br/forecast.local.no.cloudy.predicted.dialog b/dialog/pt-br/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index dfb3ef1c..00000000
--- a/dialog/pt-br/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Quando o usuário pergunta se está nublado mas não está
-Não parece provável que vá estar nublado {day}
-Está previsto céu claro {day}
-É esperado céu claro {day}
-Não deve estar nublado {day}
diff --git a/dialog/pt-br/forecast.local.no.fog.predicted.dialog b/dialog/pt-br/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index 9d6163f1..00000000
--- a/dialog/pt-br/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nublado mas nenhuma neve ou alternativa é feita como previsão
-{day} a visibilidade deve estar boa
-Nenhum nevoeiro está previsto para {day}
diff --git a/dialog/pt-br/forecast.local.no.rain.predicted.dialog b/dialog/pt-br/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index 22b17dca..00000000
--- a/dialog/pt-br/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas nenhuma chuva ou alternativa é prevista
-Nenhuma chuva está prevista {day}
-Não deve chover {day}
-Você não vai precisar de um guarda-chuva {day}
diff --git a/dialog/pt-br/forecast.local.no.snow.predicted.dialog b/dialog/pt-br/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index f54836af..00000000
--- a/dialog/pt-br/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nevando mas nenhuma neve ou alternativa é prevista
-Nenhuma neve é prevista {day}
-Não vai nevar {day}
diff --git a/dialog/pt-br/forecast.local.no.storm.predicted.dialog b/dialog/pt-br/forecast.local.no.storm.predicted.dialog
deleted file mode 100644
index 35206051..00000000
--- a/dialog/pt-br/forecast.local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas nenhuma chuva ou alternativa é prevista
-Nenhuma neve é prevista {day}
-{day}, não deve ter tempestade
-Não deve ter tempestade {day}
diff --git a/dialog/pt-br/forecast.local.raining.alternative.dialog b/dialog/pt-br/forecast.local.raining.alternative.dialog
deleted file mode 100644
index 6ff6a55c..00000000
--- a/dialog/pt-br/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa à chuva ocorrerá
-Não, mas a previsão indica {condition} {day}
-{day}, não há previsão de chuva, mas parece que haverá {condition}
diff --git a/dialog/pt-br/forecast.local.storm.alternative.dialog b/dialog/pt-br/forecast.local.storm.alternative.dialog
deleted file mode 100644
index 61c90260..00000000
--- a/dialog/pt-br/forecast.local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa à chuva ocorrerá
-Não, mas a previsão indica {condition} {day}
-{day}, não há previsão de tempestade, mas parece que haverá {condition}
diff --git a/dialog/pt-br/forecast.no.clear.predicted.dialog b/dialog/pt-br/forecast.no.clear.predicted.dialog
deleted file mode 100644
index a1cd6478..00000000
--- a/dialog/pt-br/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se o céu está claro mas uma previsão alternativa é feita
-Desculpe, a previsão não indica condições de céu claro para {location}{day}
-{day}, é provável que o tempo não esteja bom em {location}
diff --git a/dialog/pt-br/forecast.no.cloudy.predicted.dialog b/dialog/pt-br/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index 5e289e8b..00000000
--- a/dialog/pt-br/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# Quando o usuário pergunta se está nublado mas não está
-Não parece provável que vá estar nublado em {location}{day}
-Céu claro está previsto em {location} {day}
-É esperado céu claro em {location} {day}
-Não vai nevar em {location} {day}
diff --git a/dialog/pt-br/forecast.no.fog.predicted.dialog b/dialog/pt-br/forecast.no.fog.predicted.dialog
deleted file mode 100644
index 52508cf0..00000000
--- a/dialog/pt-br/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nublado mas nenhuma neve ou alternativa é feita como previsão
-{day} a visibilidade deve estar boa em {location}
-Nenhum nevoeiro está previsto para {day} em {location}
diff --git a/dialog/pt-br/forecast.no.rain.predicted.dialog b/dialog/pt-br/forecast.no.rain.predicted.dialog
deleted file mode 100644
index 8b6db478..00000000
--- a/dialog/pt-br/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas nenhuma chuva ou alternativa é prevista
-Nenhuma chuva está prevista para {location} {day}
-{day}, não vai nevar em {location}
-Não há necessidade para guarda-chuva em {location} {day}
diff --git a/dialog/pt-br/forecast.no.snow.predicted.dialog b/dialog/pt-br/forecast.no.snow.predicted.dialog
deleted file mode 100644
index c65e5198..00000000
--- a/dialog/pt-br/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nevando mas nenhuma neve ou alternativa é prevista
-Nenhuma neve está prevista em {location} para {day}
-Não deve nevar em {location} {day}
diff --git a/dialog/pt-br/forecast.no.storm.predicted.dialog b/dialog/pt-br/forecast.no.storm.predicted.dialog
deleted file mode 100644
index 43dd8421..00000000
--- a/dialog/pt-br/forecast.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas nenhuma chuva ou alternativa é prevista
-Nenhum nevoeiro está previsto para {location} {day}
-{day}, Não deve nevar em {location}
-Não deve ter trovoadas {day} em {location}
diff --git a/dialog/pt-br/forecast.raining.alternative.dialog b/dialog/pt-br/forecast.raining.alternative.dialog
deleted file mode 100644
index b2ce3400..00000000
--- a/dialog/pt-br/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa à chuva ocorrerá
-Não, mas a previsão indica {condition} em {location} {day}
-{day}, não há previsão de chuva para {location}, mas parece que haverá {condition}
diff --git a/dialog/pt-br/forecast.snowing.alternative.dialog b/dialog/pt-br/forecast.snowing.alternative.dialog
deleted file mode 100644
index 0de48735..00000000
--- a/dialog/pt-br/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa para neve vai ocorrer
-Não, mas a previsão indica {condition} {day}
-{day} não há previsão de neve mas as chances são que irá {condition}
diff --git a/dialog/pt-br/forecast.storm.alternative.dialog b/dialog/pt-br/forecast.storm.alternative.dialog
deleted file mode 100644
index 54285ec9..00000000
--- a/dialog/pt-br/forecast.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Não, mas a previsão indica {condition} em {location} {day}
-# Informando que uma alternativa a tempestade vai ocorrer
-{day}, não há previsão de chuva para {location}, mas parece que haverá {condition}
diff --git a/dialog/pt-br/from.day.dialog b/dialog/pt-br/from.day.dialog
deleted file mode 100644
index ac74c195..00000000
--- a/dialog/pt-br/from.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-desde {day}
diff --git a/dialog/pt-br/heavy.dialog b/dialog/pt-br/heavy.dialog
deleted file mode 100644
index e524be2f..00000000
--- a/dialog/pt-br/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-pesado
diff --git a/dialog/pt-br/light.dialog b/dialog/pt-br/light.dialog
deleted file mode 100644
index 86fcb7d6..00000000
--- a/dialog/pt-br/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-leve
diff --git a/dialog/pt-br/local.clear.alternative.dialog b/dialog/pt-br/local.clear.alternative.dialog
deleted file mode 100644
index e1a226d0..00000000
--- a/dialog/pt-br/local.clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa para limpar o tempo vai ocorrer
-Não, a previsão indica {condition} hoje
-Parece que haverá {condition} hoje
-As chances são que fará {condition} hoje
diff --git a/dialog/pt-br/local.cloudy.alternative.dialog b/dialog/pt-br/local.cloudy.alternative.dialog
deleted file mode 100644
index d6ed0986..00000000
--- a/dialog/pt-br/local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Não, a previsão indica {condition} hoje
-# Informando que uma alternativa para tempo nublado vai ocorrer
-Provavelmente não será nublado, parece que será {condition} hoje
-Não parece assim, as chances são de que esteja {condition} hoje
diff --git a/dialog/pt-br/local.foggy.alternative.dialog b/dialog/pt-br/local.foggy.alternative.dialog
deleted file mode 100644
index 620d0c19..00000000
--- a/dialog/pt-br/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informando que uma alternativa ao nevoeiro vai ocorrer
-Não, a previsão indica {condition} hoje
-Parece que haverá {condition} hoje
-As chances são que fará {condition} hoje
diff --git a/dialog/pt-br/local.no.cloudy.predicted.dialog b/dialog/pt-br/local.no.cloudy.predicted.dialog
deleted file mode 100644
index a4f139a0..00000000
--- a/dialog/pt-br/local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas não há previsão de nuvens ou alternativa
-Não há previsão de nuvens para hoje
-Não deve estar nublado hoje
diff --git a/dialog/pt-br/local.no.fog.predicted.dialog b/dialog/pt-br/local.no.fog.predicted.dialog
deleted file mode 100644
index aceb1200..00000000
--- a/dialog/pt-br/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nublado mas nenhuma neve ou alternativa é feita como previsão
-Parece que a visibilidade será boa hoje
-Não há previsão de nevoeiro para hoje
diff --git a/dialog/pt-br/local.no.rain.predicted.dialog b/dialog/pt-br/local.no.rain.predicted.dialog
deleted file mode 100644
index 5c6175d6..00000000
--- a/dialog/pt-br/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas nenhuma chuva ou alternativa é prevista
-Nenhuma chuva está prevista para hoje
-Não deve chover hoje
-Não há necessidade de um guarda-chuva para hoje
diff --git a/dialog/pt-br/local.no.snow.predicted.dialog b/dialog/pt-br/local.no.snow.predicted.dialog
deleted file mode 100644
index d7733ed1..00000000
--- a/dialog/pt-br/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nevando mas nenhuma neve ou alternativa é prevista
-Nenhuma neve é prevista para hoje
-Não deve nevar hoje
diff --git a/dialog/pt-br/local.no.storm.predicted.dialog b/dialog/pt-br/local.no.storm.predicted.dialog
deleted file mode 100644
index 51920acc..00000000
--- a/dialog/pt-br/local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas nenhuma chuva ou alternativa é prevista
-Nenhuma neve é prevista para hoje
-Não deve haver tempestade hoje
-Não deve haver nenhuma tempestade hoje
-Hoje não é provável que haja trovoadas
-Tempestades não são prováveis para hoje
diff --git a/dialog/pt-br/local.raining.alternative.dialog b/dialog/pt-br/local.raining.alternative.dialog
deleted file mode 100644
index bf20e061..00000000
--- a/dialog/pt-br/local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa para chuva vai acontecer (como neve ou nevoeiro)
-Não, mas a previsão indica {condition} hoje
-Não há previsão de chuva para hoje, mas parece que haverá {condition}
diff --git a/dialog/pt-br/local.snowing.alternative.dialog b/dialog/pt-br/local.snowing.alternative.dialog
deleted file mode 100644
index eb7f78ee..00000000
--- a/dialog/pt-br/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa para neve vai ocorrer
-Não, mas a previsão indica {condition} hoje
-Não há previsão de neve para hoje, mas as chances são de {condition}
diff --git a/dialog/pt-br/local.storm.alternative.dialog b/dialog/pt-br/local.storm.alternative.dialog
deleted file mode 100644
index b4f3015b..00000000
--- a/dialog/pt-br/local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Não, mas a previsão indica {condition} hoje
-# Informando que uma alternativa para tempestade vai acontecer (como neve ou nevoeiro)
-Não há previsão de tempestades para hoje, mas parece que haverá {condition}
diff --git a/dialog/pt-br/no.clear.predicted.dialog b/dialog/pt-br/no.clear.predicted.dialog
deleted file mode 100644
index 3a450cbc..00000000
--- a/dialog/pt-br/no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta o tempo está claro, mas não está
-Desculpe, parece que vai ocorrer {condition}
-Não é provável que faça tempo bom
diff --git a/dialog/pt-br/no.cloudy.predicted.dialog b/dialog/pt-br/no.cloudy.predicted.dialog
deleted file mode 100644
index c6561514..00000000
--- a/dialog/pt-br/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nublado mas não está
-Não parece estar nublado hoje
-Não deve estar nublado
diff --git a/dialog/pt-br/no.fog.predicted.dialog b/dialog/pt-br/no.fog.predicted.dialog
deleted file mode 100644
index be956b4f..00000000
--- a/dialog/pt-br/no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nublado mas nenhuma neve ou alternativa é feita como previsão
-Parece que a visibilidade será boa em {location}
-Nenhum nevoeiro está previsto para {location} hoje
diff --git a/dialog/pt-br/no.forecast.dialog b/dialog/pt-br/no.forecast.dialog
deleted file mode 100644
index 3662d054..00000000
--- a/dialog/pt-br/no.forecast.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Desculpe, eu não tenho a previsão para {day}
-Eu não tenho uma previsão para {day}
diff --git a/dialog/pt-br/no.rain.predicted.dialog b/dialog/pt-br/no.rain.predicted.dialog
deleted file mode 100644
index 6d49f704..00000000
--- a/dialog/pt-br/no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando o usuário pergunta se está chovendo mas nenhuma chuva ou alternativa é prevista
-Nenhuma chuva está prevista para {location}
-Não deve estar chovendo em {location}
-Não há necessidade para guarda-chuva em {location}
diff --git a/dialog/pt-br/no.snow.predicted.dialog b/dialog/pt-br/no.snow.predicted.dialog
deleted file mode 100644
index e8d651b8..00000000
--- a/dialog/pt-br/no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Quando o usuário pergunta se está nevando mas nenhuma neve ou alternativa é prevista
-Nenhuma neve está prevista para {location}
-Não vai nevar em {location}
diff --git a/dialog/pt-br/no.storm.predicted.dialog b/dialog/pt-br/no.storm.predicted.dialog
deleted file mode 100644
index de22a04a..00000000
--- a/dialog/pt-br/no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Quando o usuário pergunta se está chovendo forte mas nenhuma chuva forte ou alternativa é prevista
-Nenhuma tempestade está prevista para {location}
-Não vai haver tempestades em {location}
-Não vai haver tempestades em {location}
diff --git a/dialog/pt-br/on.date.dialog b/dialog/pt-br/on.date.dialog
deleted file mode 100644
index 6fc4557f..00000000
--- a/dialog/pt-br/on.date.dialog
+++ /dev/null
@@ -1 +0,0 @@
-em
diff --git a/dialog/pt-br/on.dialog b/dialog/pt-br/on.dialog
deleted file mode 100644
index 6fc4557f..00000000
--- a/dialog/pt-br/on.dialog
+++ /dev/null
@@ -1 +0,0 @@
-em
diff --git a/dialog/pt-br/raining.alternative.dialog b/dialog/pt-br/raining.alternative.dialog
deleted file mode 100644
index f1c54f8f..00000000
--- a/dialog/pt-br/raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa para chuva vai acontecer (como neve ou nevoeiro)
-Não, mas a previsão indica {condition} em {location}
-Não há previsão de chuva para hoje em {location}, mas parece que haverá {condition}
diff --git a/dialog/pt-br/report.condition.at.location.dialog b/dialog/pt-br/report.condition.at.location.dialog
deleted file mode 100644
index 9b8f844b..00000000
--- a/dialog/pt-br/report.condition.at.location.dialog
+++ /dev/null
@@ -1 +0,0 @@
-No momento, {condition} em {location} é {value}
diff --git a/dialog/pt-br/report.condition.dialog b/dialog/pt-br/report.condition.dialog
deleted file mode 100644
index 291251b1..00000000
--- a/dialog/pt-br/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-No momento, {condition} é {value}
diff --git a/dialog/pt-br/report.condition.future.at.location.dialog b/dialog/pt-br/report.condition.future.at.location.dialog
deleted file mode 100644
index 15e83b08..00000000
--- a/dialog/pt-br/report.condition.future.at.location.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} em {location} {day} será {value}
-{day} a previsão em {location} indica {condition} de {value}
diff --git a/dialog/pt-br/report.condition.future.dialog b/dialog/pt-br/report.condition.future.dialog
deleted file mode 100644
index 1012b036..00000000
--- a/dialog/pt-br/report.condition.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} {day} será {value}
-{day} a previsão indica {condition} de {value}
diff --git a/dialog/pt-br/report.wind.dialog b/dialog/pt-br/report.wind.dialog
deleted file mode 100644
index ec0a3932..00000000
--- a/dialog/pt-br/report.wind.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{condition} é {value}
diff --git a/dialog/pt-br/sky is clear.future.dialog b/dialog/pt-br/sky is clear.future.dialog
deleted file mode 100644
index b657c448..00000000
--- a/dialog/pt-br/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-um céu limpo
diff --git a/dialog/pt-br/snowing.alternative.dialog b/dialog/pt-br/snowing.alternative.dialog
deleted file mode 100644
index ee03d763..00000000
--- a/dialog/pt-br/snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informando que uma alternativa para neve vai ocorrer
-Não, mas a previsão indica {condition} em {location}
-Não há previsão de neve para hoje, mas as chances são de que haja {condition} em {location}
diff --git a/dialog/pt-br/storm.alternative.dialog b/dialog/pt-br/storm.alternative.dialog
deleted file mode 100644
index 92e1ed4a..00000000
--- a/dialog/pt-br/storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Não, mas a previsão indica {condition} em {location}
-# Informando que uma alternativa para chuva forte vai acontecer (como neve ou nevoeiro)
-Não há previsão de chuva forte para hoje em {location}, mas parece que haverá {condition}
diff --git a/dialog/pt-br/sunrise.dialog b/dialog/pt-br/sunrise.dialog
deleted file mode 100644
index 2e1f57a3..00000000
--- a/dialog/pt-br/sunrise.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-o sol nasceu às {time} hoje
-o nascer do sol foi às {time} hoje
diff --git a/dialog/pt-br/sunset.dialog b/dialog/pt-br/sunset.dialog
deleted file mode 100644
index 74759a30..00000000
--- a/dialog/pt-br/sunset.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-o sol vai se pôr hoje às {time}
-o sol vai se pôr às {time} hoje
-o pôr do sol será às {time} hoje
diff --git a/dialog/pt-br/tonight.local.weather.dialog b/dialog/pt-br/tonight.local.weather.dialog
deleted file mode 100644
index ec7c4b5e..00000000
--- a/dialog/pt-br/tonight.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Hoje a noite teremos {condition}, com temperaturas de aproximadamente {temp}
-Hoje a noite teremos {condition} e cerca de {temp} graus
-Hoje a noite estará {condition} e {temp} graus
-Cerca de {temp} graus com {condition} hoje a noite
diff --git a/dialog/pt-br/weekly.condition.on.day.dialog b/dialog/pt-br/weekly.condition.on.day.dialog
deleted file mode 100644
index 8e2f79c7..00000000
--- a/dialog/pt-br/weekly.condition.on.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} será {condition},
diff --git a/dialog/pt-br/weekly.conditions.mostly.one.dialog b/dialog/pt-br/weekly.conditions.mostly.one.dialog
deleted file mode 100644
index 5d4c0182..00000000
--- a/dialog/pt-br/weekly.conditions.mostly.one.dialog
+++ /dev/null
@@ -1 +0,0 @@
-será principalmente {condition}.
diff --git a/dialog/pt-br/weekly.conditions.seq.extra.dialog b/dialog/pt-br/weekly.conditions.seq.extra.dialog
deleted file mode 100644
index be418116..00000000
--- a/dialog/pt-br/weekly.conditions.seq.extra.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-parece que também haverá
-também será
diff --git a/dialog/pt-br/weekly.conditions.seq.period.dialog b/dialog/pt-br/weekly.conditions.seq.period.dialog
deleted file mode 100644
index ea20c7e1..00000000
--- a/dialog/pt-br/weekly.conditions.seq.period.dialog
+++ /dev/null
@@ -1 +0,0 @@
-de {from} até {to}
diff --git a/dialog/pt-br/weekly.conditions.seq.start.dialog b/dialog/pt-br/weekly.conditions.seq.start.dialog
deleted file mode 100644
index ab7de457..00000000
--- a/dialog/pt-br/weekly.conditions.seq.start.dialog
+++ /dev/null
@@ -1 +0,0 @@
-irá {condition}
diff --git a/dialog/pt-br/weekly.conditions.some.days.dialog b/dialog/pt-br/weekly.conditions.some.days.dialog
deleted file mode 100644
index f5140076..00000000
--- a/dialog/pt-br/weekly.conditions.some.days.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Será {condition} alguns dias.
diff --git a/dialog/pt-br/wind.speed.dialog b/dialog/pt-br/wind.speed.dialog
deleted file mode 100644
index b98efb6f..00000000
--- a/dialog/pt-br/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{speed} {unit}
diff --git a/dialog/pt-br/wind.speed.dir.dialog b/dialog/pt-br/wind.speed.dir.dialog
deleted file mode 100644
index 34e1bde8..00000000
--- a/dialog/pt-br/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-a {speed} {unit} vindo do {dir}
-do {dir} a {speed} {unit}
diff --git a/dialog/pt-br/wind.strength.hard.dialog b/dialog/pt-br/wind.strength.hard.dialog
deleted file mode 100644
index f3bfb8f3..00000000
--- a/dialog/pt-br/wind.strength.hard.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Isso é bastante forte
diff --git a/dialog/pt-br/wind.strength.light.dialog b/dialog/pt-br/wind.strength.light.dialog
deleted file mode 100644
index 40b73147..00000000
--- a/dialog/pt-br/wind.strength.light.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Não muito vento
-Não muto vento
-Bem calmo
diff --git a/dialog/pt-br/wind.strength.medium.dialog b/dialog/pt-br/wind.strength.medium.dialog
deleted file mode 100644
index b5105fa5..00000000
--- a/dialog/pt-br/wind.strength.medium.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Está soprando uma brisa
-Você deve levar um casaco
diff --git a/dialog/pt-br/winds.dialog b/dialog/pt-br/winds.dialog
deleted file mode 100644
index 1bd4fbcb..00000000
--- a/dialog/pt-br/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-velocidade do vento
diff --git a/dialog/ru-ru/do not know.dialog b/dialog/ru-ru/do not know.dialog
deleted file mode 100644
index df072712..00000000
--- a/dialog/ru-ru/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Боюсь, я не знаю этого
-У меня нет этой информации
diff --git a/dialog/ru-ru/heavy.dialog b/dialog/ru-ru/heavy.dialog
deleted file mode 100644
index 00d7ab62..00000000
--- a/dialog/ru-ru/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-сильный
diff --git a/dialog/ru-ru/light.dialog b/dialog/ru-ru/light.dialog
deleted file mode 100644
index ac92829f..00000000
--- a/dialog/ru-ru/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-легкий
diff --git a/dialog/ru-ru/no forecast.dialog b/dialog/ru-ru/no forecast.dialog
deleted file mode 100644
index 344d10f1..00000000
--- a/dialog/ru-ru/no forecast.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Извини, я не знаю прогноз на {{day}}
-У меня нет прогноза погоды для {{day}}
diff --git a/dialog/ru-ru/report.condition.dialog b/dialog/ru-ru/report.condition.dialog
deleted file mode 100644
index 48565ab0..00000000
--- a/dialog/ru-ru/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{condition}} {{value}}
diff --git a/dialog/ru-ru/report.future.condition.dialog b/dialog/ru-ru/report.future.condition.dialog
deleted file mode 100644
index fbf1b01c..00000000
--- a/dialog/ru-ru/report.future.condition.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{{condition}} в {{day}} будет{{value}}
-В {{day}} прогноз погоды предсказывает {{condition}} {{value}}
diff --git a/dialog/ru-ru/sky is clear.future.dialog b/dialog/ru-ru/sky is clear.future.dialog
deleted file mode 100644
index 1fab83e8..00000000
--- a/dialog/ru-ru/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-чистое
diff --git a/dialog/ru-ru/wind.speed.dialog b/dialog/ru-ru/wind.speed.dialog
deleted file mode 100644
index cff9d7e4..00000000
--- a/dialog/ru-ru/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{{speed}} {{unit}}
diff --git a/dialog/ru-ru/wind.speed.dir.dialog b/dialog/ru-ru/wind.speed.dir.dialog
deleted file mode 100644
index 4c76e5c2..00000000
--- a/dialog/ru-ru/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-со {{speed}} {{unit}} из {{dir}}
-от {{dir}} со {{speed}} {{unit}}
diff --git a/dialog/ru-ru/winds.dialog b/dialog/ru-ru/winds.dialog
deleted file mode 100644
index 99ae9ac2..00000000
--- a/dialog/ru-ru/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-ветер
diff --git a/dialog/sv-se/at.time.forecast.affirmative.condition.dialog b/dialog/sv-se/at.time.forecast.affirmative.condition.dialog
deleted file mode 100644
index c37cbf31..00000000
--- a/dialog/sv-se/at.time.forecast.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Bekräftande svar på frågor som "kommer det att snöa i Paris i morgon eftermiddag"
-Ja, för {day} visar prognosen för {time} på {condition} i {location}
-Ja, prognosen för {time} verkar bli {condition} i {location} på {day}
diff --git a/dialog/sv-se/at.time.forecast.cond.alternative.dialog b/dialog/sv-se/at.time.forecast.cond.alternative.dialog
deleted file mode 100644
index 94d19cb9..00000000
--- a/dialog/sv-se/at.time.forecast.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informera att ett alternativ till klar himmel kommer att ske på bestämda tidpunkter
-Nej, {day} så visar prognosen för {time} på {condition} i {location}
-Det verkar inte så, {time} prognosen för {day} antyder {location} kommer att ha {condition}
diff --git a/dialog/sv-se/at.time.forecast.local.affirmative.condition.dialog b/dialog/sv-se/at.time.forecast.local.affirmative.condition.dialog
deleted file mode 100644
index 2ed28245..00000000
--- a/dialog/sv-se/at.time.forecast.local.affirmative.condition.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Bekräftande svar på frågor som "kommer det att snöa imorgon"
-Ja, förvänta dig {condition} enligt {time} prognosen {day}
-Ja, enligt prognosen för {time} blir det {condition} på {day}
diff --git a/dialog/sv-se/at.time.forecast.local.cond.alternative.dialog b/dialog/sv-se/at.time.forecast.local.cond.alternative.dialog
deleted file mode 100644
index 6e5d6f65..00000000
--- a/dialog/sv-se/at.time.forecast.local.cond.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to clear skies will occur
-Nej, prognosen för {time} på {day} hävdar {condition}
-Det verkar inte så, {time} prognosen {day} antyder att det kommer att vara {condition}
diff --git a/dialog/sv-se/at.time.forecast.local.no.cond.predicted.dialog b/dialog/sv-se/at.time.forecast.local.no.cond.predicted.dialog
deleted file mode 100644
index 6656bb23..00000000
--- a/dialog/sv-se/at.time.forecast.local.no.cond.predicted.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-# När användaren frågar om ett villkor men det är inte
-Nej, vid {time} på {day} hävdar prognosen att det blir {condition}
diff --git a/dialog/sv-se/at.time.forecast.no.cond.predicted.dialog b/dialog/sv-se/at.time.forecast.no.cond.predicted.dialog
deleted file mode 100644
index 800377d5..00000000
--- a/dialog/sv-se/at.time.forecast.no.cond.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# När användaren frågar om ett villkor men det inte är
-Nej, {time} prognosen på {location} antyder att det kommer att vara {condition}
-Det verkar inte så, {time} prognosen på {location} antyder att det kommer att vara {condition}
diff --git a/dialog/sv-se/at.time.local.high.temperature.dialog b/dialog/sv-se/at.time.local.high.temperature.dialog
deleted file mode 100644
index 01840cef..00000000
--- a/dialog/sv-se/at.time.local.high.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Det kommer att vara så högt som {temp} grader {time}
-{time} kommer det att komma upp till {temp} grader
diff --git a/dialog/sv-se/at.time.local.low.temperature.dialog b/dialog/sv-se/at.time.local.low.temperature.dialog
deleted file mode 100644
index beffb766..00000000
--- a/dialog/sv-se/at.time.local.low.temperature.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Det kommer att vara så lågt som {temp} grader {time}
-{time}, kommer det att gå ner till {temp} grader
diff --git a/dialog/sv-se/at.time.local.weather.dialog b/dialog/sv-se/at.time.local.weather.dialog
deleted file mode 100644
index 2924a2e7..00000000
--- a/dialog/sv-se/at.time.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Det kommer bli {condition}, med temperaturer nära {temp} grader vid {time}
-{time}, kommer det vara {condition} och runt {temp}
-Vid {time}, kommer det vara {condition} och {temp} grader
-{time}, kommer det bli {temp} grader och {condition}
diff --git a/dialog/sv-se/clear.alternative.dialog b/dialog/sv-se/clear.alternative.dialog
deleted file mode 100644
index 89bde9f6..00000000
--- a/dialog/sv-se/clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-Nej, men det verkar bli {condition} i {location}
-Det verkar bli {condition} i {location}
-Det ser ut att bli {condition} i {location}
diff --git a/dialog/sv-se/clear.future.dialog b/dialog/sv-se/clear.future.dialog
deleted file mode 100644
index 7e17430f..00000000
--- a/dialog/sv-se/clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-en klar himmel
diff --git a/dialog/sv-se/cloudy.alternative.dialog b/dialog/sv-se/cloudy.alternative.dialog
deleted file mode 100644
index 007c3cfc..00000000
--- a/dialog/sv-se/cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-Nej, prognosen hävdar {condition}
-Det bör inte vara mulet, det ser ut som det blir {condition}
-Det verkar inte som det, troligt vis kommer det vara {condition}
diff --git a/dialog/sv-se/condition.category.value b/dialog/sv-se/condition.category.value
deleted file mode 100644
index 24f74a19..00000000
--- a/dialog/sv-se/condition.category.value
+++ /dev/null
@@ -1,15 +0,0 @@
-Molnigt,moln
-Klart,klar himmel
-Åska,oväder
-Duggregn, lätt regn
-Regn,regnar
-Snö,snöar
-Dimma,dimmigt
-Rök, rökigt
-Dis,disigt
-Dam,dammigt
-Dimma, dimmigt
-Sand,sandigt
-Aska,molnigt med möjlig vulkanisk aska
-Stormby,blåsigt
-Tornado,stormar med en eventuell tornado
diff --git a/dialog/sv-se/current.hot.dialog b/dialog/sv-se/current.hot.dialog
deleted file mode 100644
index a93a2abf..00000000
--- a/dialog/sv-se/current.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Det är {temp} grader {scale} i {location}, gott och väl inom mina specifikationer.
-Det är {temp} grader i {location} vilket passar en A.I. finfint.
diff --git a/dialog/sv-se/current.local.cold.dialog b/dialog/sv-se/current.local.cold.dialog
deleted file mode 100644
index d55cef1a..00000000
--- a/dialog/sv-se/current.local.cold.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-för närvarande är det {temp}, gott och väl inom min specificerade arbetstemperatur
-Det är {temp}, ganska bekvämt för en A. I.
diff --git a/dialog/sv-se/current.local.hot.dialog b/dialog/sv-se/current.local.hot.dialog
deleted file mode 100644
index aa224a56..00000000
--- a/dialog/sv-se/current.local.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Okej för en A.I., för närvarande {temp} grader
-Det är {temp} grader, passar en AI fint
diff --git a/dialog/sv-se/do not know.dialog b/dialog/sv-se/do not know.dialog
deleted file mode 100644
index 2580530b..00000000
--- a/dialog/sv-se/do not know.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Jag är rädd att jag inte vet det
-Jag har inte den informationen
diff --git a/dialog/sv-se/fog.alternative.dialog b/dialog/sv-se/fog.alternative.dialog
deleted file mode 100644
index 0e71873e..00000000
--- a/dialog/sv-se/fog.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Nej, men det verkar bli {condition} i {location}
-Det ser ut att bli {condition} i {location}
-# Informing that an alternative to fog will occur
-Det verkar bli {condition} i {location}
diff --git a/dialog/sv-se/forecast.clear.alternative.dialog b/dialog/sv-se/forecast.clear.alternative.dialog
deleted file mode 100644
index 67d8fad0..00000000
--- a/dialog/sv-se/forecast.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-Nej, prognosen på {day} visar på {condition} i {location}
-{day}, förväntas inget regn i {location} men det kan bli {condition}
diff --git a/dialog/sv-se/forecast.cloudy.alternative.dialog b/dialog/sv-se/forecast.cloudy.alternative.dialog
deleted file mode 100644
index 7e768362..00000000
--- a/dialog/sv-se/forecast.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-# Nej, prognosen för {day} visar på {condition} i {location}
-# Det kommer inte vara mulet i {location} för {day}, utan det ser ut att bli {condition}
-Det verkar inte så, {location} ser ut att få {condition} på {day}
diff --git a/dialog/sv-se/forecast.foggy.alternative.dialog b/dialog/sv-se/forecast.foggy.alternative.dialog
deleted file mode 100644
index dcc992f0..00000000
--- a/dialog/sv-se/forecast.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to fog will occur
-Nej, prognosen på {day} för {location} säger att det blir {condition}
-Det verkar bli {condition} i {location} på {day}
-Det ser ut att bli {condition} i {location} på {day}
diff --git a/dialog/sv-se/forecast.hot.dialog b/dialog/sv-se/forecast.hot.dialog
deleted file mode 100644
index 064b3e05..00000000
--- a/dialog/sv-se/forecast.hot.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{day} blir det {temp} i {location}, ganska behagligt för en A.I.
-{day} kommer temperaturen bli {temp} i {location}, väl inom mina specifikationer
diff --git a/dialog/sv-se/forecast.local.clear.alternative.dialog b/dialog/sv-se/forecast.local.clear.alternative.dialog
deleted file mode 100644
index 74c01d0d..00000000
--- a/dialog/sv-se/forecast.local.clear.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to clear skies will occur
-Nej, prognosen på {day} hävdar {condition}
-{day}, verkar som det kommer vara {condition}
diff --git a/dialog/sv-se/forecast.local.cloudy.alternative.dialog b/dialog/sv-se/forecast.local.cloudy.alternative.dialog
deleted file mode 100644
index 9997e033..00000000
--- a/dialog/sv-se/forecast.local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-Nej, prognosen på {day} hävdar {condition}
-Det borde inte bli molnigt, det ser ut som det blir {condition} för {day}
-Det verkar inte som det, troligtvis kommer det vara {condition} på {day}
diff --git a/dialog/sv-se/forecast.local.foggy.alternative.dialog b/dialog/sv-se/forecast.local.foggy.alternative.dialog
deleted file mode 100644
index 38b3e0a1..00000000
--- a/dialog/sv-se/forecast.local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to fog will occur
-Nej, prognosen på {day} hävdar {condition}
-Det verkar som det kommer vara {condition} på {day}
-Chansen är stor att det kommer att bli {condition} {day}
diff --git a/dialog/sv-se/forecast.local.hot.dialog b/dialog/sv-se/forecast.local.hot.dialog
deleted file mode 100644
index c89453a1..00000000
--- a/dialog/sv-se/forecast.local.hot.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} kommer det vara {temp}, väl passande en AI
diff --git a/dialog/sv-se/forecast.local.no.clear.predicted.dialog b/dialog/sv-se/forecast.local.no.clear.predicted.dialog
deleted file mode 100644
index 917cea0e..00000000
--- a/dialog/sv-se/forecast.local.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's clear but an alternative is forcasted
-Jag är ledsen, men {day} så verkar det inte bli klart väder
-{day}, kommer det mest troligt inte bli klart
diff --git a/dialog/sv-se/forecast.local.no.cloudy.predicted.dialog b/dialog/sv-se/forecast.local.no.cloudy.predicted.dialog
deleted file mode 100644
index 60bf1fee..00000000
--- a/dialog/sv-se/forecast.local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's cloudy but it's not
-{day} verkar det inte bli molnigt
-För {day} visar rapporten på klart väder
-Räkna med klar himmel {day}
-Det bör inte vara molnigt {day}
diff --git a/dialog/sv-se/forecast.local.no.fog.predicted.dialog b/dialog/sv-se/forecast.local.no.fog.predicted.dialog
deleted file mode 100644
index f33487be..00000000
--- a/dialog/sv-se/forecast.local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-{day} verkar det bli god sikt
-Ingen dimma förutspås för {day}
diff --git a/dialog/sv-se/forecast.local.no.rain.predicted.dialog b/dialog/sv-se/forecast.local.no.rain.predicted.dialog
deleted file mode 100644
index 6f629d02..00000000
--- a/dialog/sv-se/forecast.local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-Det blir inget regn enligt prognosen på {day}
-Det bör inte regna {day}
-Du behöver inget paraply {day}
diff --git a/dialog/sv-se/forecast.local.no.snow.predicted.dialog b/dialog/sv-se/forecast.local.no.snow.predicted.dialog
deleted file mode 100644
index a24983c0..00000000
--- a/dialog/sv-se/forecast.local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-Det kommer inte bli någon snö på {day}
-Det kommer inta att snöa på{day}
diff --git a/dialog/sv-se/forecast.local.no.storm.predicted.dialog b/dialog/sv-se/forecast.local.no.storm.predicted.dialog
deleted file mode 100644
index 3f720c75..00000000
--- a/dialog/sv-se/forecast.local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-Det kommer inte bli någon storm på {day}
-{day}, det bör inte bli storm
-Det borde inte storma {day}
diff --git a/dialog/sv-se/forecast.local.raining.alternative.dialog b/dialog/sv-se/forecast.local.raining.alternative.dialog
deleted file mode 100644
index 24ac58ab..00000000
--- a/dialog/sv-se/forecast.local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-Nej, men det verkar bli {condition} på {day}
-{day}, förväntas inget regn men det kan bli {condition}
diff --git a/dialog/sv-se/forecast.local.storm.alternative.dialog b/dialog/sv-se/forecast.local.storm.alternative.dialog
deleted file mode 100644
index 24ac58ab..00000000
--- a/dialog/sv-se/forecast.local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-Nej, men det verkar bli {condition} på {day}
-{day}, förväntas inget regn men det kan bli {condition}
diff --git a/dialog/sv-se/forecast.no.clear.predicted.dialog b/dialog/sv-se/forecast.no.clear.predicted.dialog
deleted file mode 100644
index c546b552..00000000
--- a/dialog/sv-se/forecast.no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's clear but an alternative is forcasted
-Jag är ledsen, men det verkar inte bli klart väder i {location} på {day}
-{day}, kommer det mest troligt inte bli klart väder i {location}
diff --git a/dialog/sv-se/forecast.no.cloudy.predicted.dialog b/dialog/sv-se/forecast.no.cloudy.predicted.dialog
deleted file mode 100644
index c47a33ae..00000000
--- a/dialog/sv-se/forecast.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,5 +0,0 @@
-# When user asks if it's cloudy but it's not
-Det verkar inte bli molnigt i {location} på {day}
-Klar himmel förutspås för {location} på {day}
-Förvänta dig molnfri himmel i {location} på {day}
-Det kommer inte snöa i {location} på {day}
diff --git a/dialog/sv-se/forecast.no.fog.predicted.dialog b/dialog/sv-se/forecast.no.fog.predicted.dialog
deleted file mode 100644
index e32d04d0..00000000
--- a/dialog/sv-se/forecast.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-{day} borde sikten vara god i {location}
-Prognosen för {day} innehåller ingen dimma i {location}
diff --git a/dialog/sv-se/forecast.no.rain.predicted.dialog b/dialog/sv-se/forecast.no.rain.predicted.dialog
deleted file mode 100644
index 43a8e5b3..00000000
--- a/dialog/sv-se/forecast.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-Inget regn förutspås för {location} för {day}
-för {day}, kommer det inte att regna i {location}
-I {location} behövs inget paraply på {day}
diff --git a/dialog/sv-se/forecast.no.snow.predicted.dialog b/dialog/sv-se/forecast.no.snow.predicted.dialog
deleted file mode 100644
index 3ce2b665..00000000
--- a/dialog/sv-se/forecast.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-Ingen snö förutspås i {location} för {day}
-Det kommer inte snöa i {location} på {day}
diff --git a/dialog/sv-se/forecast.no.storm.predicted.dialog b/dialog/sv-se/forecast.no.storm.predicted.dialog
deleted file mode 100644
index dad97ebb..00000000
--- a/dialog/sv-se/forecast.no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-Ingen dimma förutspås för {location} på {day}
-för {day}, kommer det inte storma i {location}
-Det kommer troligtvis inte storma {day} i {location}
diff --git a/dialog/sv-se/forecast.raining.alternative.dialog b/dialog/sv-se/forecast.raining.alternative.dialog
deleted file mode 100644
index 943bc3ce..00000000
--- a/dialog/sv-se/forecast.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur
-Nej, men det verkar bli {condition} i {location} på {day}
-för {day}, förväntas inget regn i {location} men det kan bli {condition}
diff --git a/dialog/sv-se/forecast.snowing.alternative.dialog b/dialog/sv-se/forecast.snowing.alternative.dialog
deleted file mode 100644
index cf91d0ce..00000000
--- a/dialog/sv-se/forecast.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to snowing will occur
-Nej, men det verkar bli {condition} på {day}
-för {day} förutspås ingen snö men risken är att det blir {condition}
diff --git a/dialog/sv-se/forecast.storm.alternative.dialog b/dialog/sv-se/forecast.storm.alternative.dialog
deleted file mode 100644
index 25b02049..00000000
--- a/dialog/sv-se/forecast.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Nej, men det verkar bli {condition} i {location} på {day}
-# Informera att ett alternativ till storm kommer att inträffa
-för {day}, förväntas ingen storm i {location} men det kan bli {condition}
diff --git a/dialog/sv-se/from.day.dialog b/dialog/sv-se/from.day.dialog
deleted file mode 100644
index b727df72..00000000
--- a/dialog/sv-se/from.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Från {day}
diff --git a/dialog/sv-se/heavy.dialog b/dialog/sv-se/heavy.dialog
deleted file mode 100644
index b34313cd..00000000
--- a/dialog/sv-se/heavy.dialog
+++ /dev/null
@@ -1 +0,0 @@
-tung
diff --git a/dialog/sv-se/light.dialog b/dialog/sv-se/light.dialog
deleted file mode 100644
index af0c693c..00000000
--- a/dialog/sv-se/light.dialog
+++ /dev/null
@@ -1 +0,0 @@
-lätt
diff --git a/dialog/sv-se/local.clear.alternative.dialog b/dialog/sv-se/local.clear.alternative.dialog
deleted file mode 100644
index 8dc55021..00000000
--- a/dialog/sv-se/local.clear.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to clear skies will occur
-Nej, idag hävdar prognosen för {condition}
-Det verkar som det kommer vara {condition} idag
-Chansen är stor att det kommer att bli{condition} idag
diff --git a/dialog/sv-se/local.cloudy.alternative.dialog b/dialog/sv-se/local.cloudy.alternative.dialog
deleted file mode 100644
index ab3d6ebb..00000000
--- a/dialog/sv-se/local.cloudy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Nej, idag hävdar prognosen för {condition}
-# Informera att ett alternativ till molnigt kommer att inträffa
-Det bör inte bli molnigt, det ser ut som det blir {condition} idag
-Verkar inte så, chansen är stor att det kommer att bli {condition} idag
diff --git a/dialog/sv-se/local.foggy.alternative.dialog b/dialog/sv-se/local.foggy.alternative.dialog
deleted file mode 100644
index 82f4602c..00000000
--- a/dialog/sv-se/local.foggy.alternative.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# Informing that an alternative to fog will occur
-Nej, idag hävdar prognosen för {condition}
-Det verkar som det kommer vara {condition} idag
-Chansen är stor att det kommer att bli{condition} idag
diff --git a/dialog/sv-se/local.no.cloudy.predicted.dialog b/dialog/sv-se/local.no.cloudy.predicted.dialog
deleted file mode 100644
index e0713cab..00000000
--- a/dialog/sv-se/local.no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# När användaren frågar om det regnar men inget moln eller alternativ förutspås
-Inga moln idag enligt prognosen
-Det borde inte vara molnigt idag
diff --git a/dialog/sv-se/local.no.fog.predicted.dialog b/dialog/sv-se/local.no.fog.predicted.dialog
deleted file mode 100644
index 894b8892..00000000
--- a/dialog/sv-se/local.no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-Sikten verkar bli god idag
-Ingen dimma idag enligt prognosen
diff --git a/dialog/sv-se/local.no.rain.predicted.dialog b/dialog/sv-se/local.no.rain.predicted.dialog
deleted file mode 100644
index 45939754..00000000
--- a/dialog/sv-se/local.no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-Det blir inget regn enligt prognosen idag
-Det borde inte regna idag
-Du kommer inte behöva något paraply idag
diff --git a/dialog/sv-se/local.no.snow.predicted.dialog b/dialog/sv-se/local.no.snow.predicted.dialog
deleted file mode 100644
index 830c09dc..00000000
--- a/dialog/sv-se/local.no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# När användaren frågar om det snöar men ingen snö eller alternativ förutspås
-Det kommer inte bli någon snö idag
-Det borde inte snöa idag
diff --git a/dialog/sv-se/local.no.storm.predicted.dialog b/dialog/sv-se/local.no.storm.predicted.dialog
deleted file mode 100644
index 9965f787..00000000
--- a/dialog/sv-se/local.no.storm.predicted.dialog
+++ /dev/null
@@ -1,6 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-Ingen storm förutspås idag
-Det borde inte storma idag
-Det borde inte bli storm i dag
-Idag är det osannolikt att blir storm
-En storm är inte troligt idag
diff --git a/dialog/sv-se/local.raining.alternative.dialog b/dialog/sv-se/local.raining.alternative.dialog
deleted file mode 100644
index d21210f6..00000000
--- a/dialog/sv-se/local.raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur (like snow or fog)
-Nej, men det verkar bli {condition}
-Inget regn förväntas idag men det ser ut att bli {condition}
diff --git a/dialog/sv-se/local.snowing.alternative.dialog b/dialog/sv-se/local.snowing.alternative.dialog
deleted file mode 100644
index 760d5320..00000000
--- a/dialog/sv-se/local.snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to snowing will occur
-Nej, men det verkar bli {condition}
-Ingen snö förväntas idag men risken är att det kommer bli {condition}
diff --git a/dialog/sv-se/local.storm.alternative.dialog b/dialog/sv-se/local.storm.alternative.dialog
deleted file mode 100644
index 912ce642..00000000
--- a/dialog/sv-se/local.storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Nej, men det verkar bli {condition}
-# Informera att ett alternativ till en storm kommer att ske (som snö eller dimma)
-Det finns ingen storm förutspås för idag, men det ser ut som det kommer att bli {condition}
diff --git a/dialog/sv-se/no.clear.predicted.dialog b/dialog/sv-se/no.clear.predicted.dialog
deleted file mode 100644
index 2161810c..00000000
--- a/dialog/sv-se/no.clear.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's clear but it's not
-Jag är ledsen men det verkar bli {condition}
-Det blir troligtvis inte en klar himmel
diff --git a/dialog/sv-se/no.cloudy.predicted.dialog b/dialog/sv-se/no.cloudy.predicted.dialog
deleted file mode 100644
index b419654d..00000000
--- a/dialog/sv-se/no.cloudy.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's cloudy but it's not
-Det verkar inte bli molnigt idag
-Det bör inte bli molnigt
diff --git a/dialog/sv-se/no.fog.predicted.dialog b/dialog/sv-se/no.fog.predicted.dialog
deleted file mode 100644
index 30fbe9d3..00000000
--- a/dialog/sv-se/no.fog.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's foggy but no snow or alternative is forcasted
-Det verkar vara god sikt i {location}
-Ingen dimma förutspås för {location} idag
diff --git a/dialog/sv-se/no.rain.predicted.dialog b/dialog/sv-se/no.rain.predicted.dialog
deleted file mode 100644
index 982fb4e1..00000000
--- a/dialog/sv-se/no.rain.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# When user asks if it's raining but no rain or alternative is forcasted
-Inget regn förutspås för {location}
-Det kommer inte regna i {location}
-I {location} behövs inget paraply
diff --git a/dialog/sv-se/no.snow.predicted.dialog b/dialog/sv-se/no.snow.predicted.dialog
deleted file mode 100644
index 7fddc037..00000000
--- a/dialog/sv-se/no.snow.predicted.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# When user asks if it's snowing but no snow or alternative is forcasted
-Ingen snö förutspås i {location}
-Det kommer inte snöa i {location}
diff --git a/dialog/sv-se/no.storm.predicted.dialog b/dialog/sv-se/no.storm.predicted.dialog
deleted file mode 100644
index e2e9c845..00000000
--- a/dialog/sv-se/no.storm.predicted.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-# När användaren frågar om det stormar men ingen storm eller alternativ förutspås
-Ingen storm förutspås för {location}
-Det bör inte bli storm i {location}
-Det borde inte bli storm i {location}
diff --git a/dialog/sv-se/on.date.dialog b/dialog/sv-se/on.date.dialog
deleted file mode 100644
index 29a710bf..00000000
--- a/dialog/sv-se/on.date.dialog
+++ /dev/null
@@ -1 +0,0 @@
-på
diff --git a/dialog/sv-se/on.dialog b/dialog/sv-se/on.dialog
deleted file mode 100644
index 2fcbf0d9..00000000
--- a/dialog/sv-se/on.dialog
+++ /dev/null
@@ -1 +0,0 @@
-på
diff --git a/dialog/sv-se/raining.alternative.dialog b/dialog/sv-se/raining.alternative.dialog
deleted file mode 100644
index a9af8b7f..00000000
--- a/dialog/sv-se/raining.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to rain will occur (like snow or fog)
-Nej, men det verkar bli {condition} i {location}
-Inget regn förväntas idag i {location}, men det ser ut att bli {condition}
diff --git a/dialog/sv-se/report.condition.at.location.dialog b/dialog/sv-se/report.condition.at.location.dialog
deleted file mode 100644
index 6d1a36c1..00000000
--- a/dialog/sv-se/report.condition.at.location.dialog
+++ /dev/null
@@ -1 +0,0 @@
-För närvarande, {condition} i {location} är {value}
diff --git a/dialog/sv-se/report.condition.dialog b/dialog/sv-se/report.condition.dialog
deleted file mode 100644
index 8d540419..00000000
--- a/dialog/sv-se/report.condition.dialog
+++ /dev/null
@@ -1 +0,0 @@
-För närvarande är {condition} {value}
diff --git a/dialog/sv-se/report.condition.future.at.location.dialog b/dialog/sv-se/report.condition.future.at.location.dialog
deleted file mode 100644
index 8b459d4b..00000000
--- a/dialog/sv-se/report.condition.future.at.location.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} i {location} {day} kommer att vara {value}
-för {day} i {location} visar prognosen {condition} av {value}
diff --git a/dialog/sv-se/report.condition.future.dialog b/dialog/sv-se/report.condition.future.dialog
deleted file mode 100644
index 24b63870..00000000
--- a/dialog/sv-se/report.condition.future.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-{condition} på {day} kommer vara {value}
-för {day} visar prognosen {condition} av {value}
diff --git a/dialog/sv-se/report.wind.dialog b/dialog/sv-se/report.wind.dialog
deleted file mode 100644
index dbefaabc..00000000
--- a/dialog/sv-se/report.wind.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{condition} är {value}
diff --git a/dialog/sv-se/sky is clear.future.dialog b/dialog/sv-se/sky is clear.future.dialog
deleted file mode 100644
index 7e17430f..00000000
--- a/dialog/sv-se/sky is clear.future.dialog
+++ /dev/null
@@ -1 +0,0 @@
-en klar himmel
diff --git a/dialog/sv-se/snowing.alternative.dialog b/dialog/sv-se/snowing.alternative.dialog
deleted file mode 100644
index c694db3e..00000000
--- a/dialog/sv-se/snowing.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-# Informing that an alternative to snowing will occur
-Nej, men det verkar bli {condition} i {location}
-Ingen snö förväntas i {location} idag men risken är att det kommer bli {condition}
diff --git a/dialog/sv-se/storm.alternative.dialog b/dialog/sv-se/storm.alternative.dialog
deleted file mode 100644
index 16873b80..00000000
--- a/dialog/sv-se/storm.alternative.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Nej, men det verkar bli {condition} i {location}
-# Informera att ett alternativ till storm kommer att ske (som snö eller dimma)
-Det förutspås ingen storm för idag i {location}, men det ser ut att bli {condition}
diff --git a/dialog/sv-se/storm.dialog b/dialog/sv-se/storm.dialog
deleted file mode 100644
index db4cfc7b..00000000
--- a/dialog/sv-se/storm.dialog
+++ /dev/null
@@ -1 +0,0 @@
-storm
diff --git a/dialog/sv-se/sunrise.dialog b/dialog/sv-se/sunrise.dialog
deleted file mode 100644
index 9fbcd5c4..00000000
--- a/dialog/sv-se/sunrise.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-solen steg vid {time} idag
-soluppgång var vid {time} idag
diff --git a/dialog/sv-se/sunset.dialog b/dialog/sv-se/sunset.dialog
deleted file mode 100644
index 45698b7a..00000000
--- a/dialog/sv-se/sunset.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-solen kommer att gå ner vid {time} idag
-solen kommer att gå ner {time} idag
-solnedgången kommer att vara vid {time} idag
diff --git a/dialog/sv-se/tonight.local.weather.dialog b/dialog/sv-se/tonight.local.weather.dialog
deleted file mode 100644
index 036a8731..00000000
--- a/dialog/sv-se/tonight.local.weather.dialog
+++ /dev/null
@@ -1,4 +0,0 @@
-Ikväll kommer det bli {condition}, med temperaturer nära {temp} grader
-Ikväll kommer det vara {condition} och runt {temp} grader
-Ikväll kommer det vara {condition} och {temp} grader
-Omkring {temp} grader och {condition} ikväll
diff --git a/dialog/sv-se/weekly.condition.on.day.dialog b/dialog/sv-se/weekly.condition.on.day.dialog
deleted file mode 100644
index 19bf507d..00000000
--- a/dialog/sv-se/weekly.condition.on.day.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{day} kommer att vara {condition},
diff --git a/dialog/sv-se/weekly.conditions.mostly.one.dialog b/dialog/sv-se/weekly.conditions.mostly.one.dialog
deleted file mode 100644
index bf3e933c..00000000
--- a/dialog/sv-se/weekly.conditions.mostly.one.dialog
+++ /dev/null
@@ -1 +0,0 @@
-det blir mest {condition}.
diff --git a/dialog/sv-se/weekly.conditions.seq.extra.dialog b/dialog/sv-se/weekly.conditions.seq.extra.dialog
deleted file mode 100644
index e6bf6b66..00000000
--- a/dialog/sv-se/weekly.conditions.seq.extra.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-det ser ut som det också kommer att bli
-det blir också
diff --git a/dialog/sv-se/weekly.conditions.seq.period.dialog b/dialog/sv-se/weekly.conditions.seq.period.dialog
deleted file mode 100644
index e5867e05..00000000
--- a/dialog/sv-se/weekly.conditions.seq.period.dialog
+++ /dev/null
@@ -1 +0,0 @@
-från {from} till {to}
diff --git a/dialog/sv-se/weekly.conditions.seq.start.dialog b/dialog/sv-se/weekly.conditions.seq.start.dialog
deleted file mode 100644
index 83115c55..00000000
--- a/dialog/sv-se/weekly.conditions.seq.start.dialog
+++ /dev/null
@@ -1 +0,0 @@
-det blir {condition}
diff --git a/dialog/sv-se/weekly.conditions.some.days.dialog b/dialog/sv-se/weekly.conditions.some.days.dialog
deleted file mode 100644
index de6a9af9..00000000
--- a/dialog/sv-se/weekly.conditions.some.days.dialog
+++ /dev/null
@@ -1 +0,0 @@
-det kommer att vara {condition} några dagar.
diff --git a/dialog/sv-se/wind.speed.dialog b/dialog/sv-se/wind.speed.dialog
deleted file mode 100644
index b98efb6f..00000000
--- a/dialog/sv-se/wind.speed.dialog
+++ /dev/null
@@ -1 +0,0 @@
-{speed} {unit}
diff --git a/dialog/sv-se/wind.speed.dir.dialog b/dialog/sv-se/wind.speed.dir.dialog
deleted file mode 100644
index 29afdc19..00000000
--- a/dialog/sv-se/wind.speed.dir.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-vid {speed} {unit} från {dir}
-från {dir} vid {speed} {unit}
diff --git a/dialog/sv-se/wind.strength.hard.dialog b/dialog/sv-se/wind.strength.hard.dialog
deleted file mode 100644
index 18f22783..00000000
--- a/dialog/sv-se/wind.strength.hard.dialog
+++ /dev/null
@@ -1 +0,0 @@
-Det är ganska starkt
diff --git a/dialog/sv-se/wind.strength.light.dialog b/dialog/sv-se/wind.strength.light.dialog
deleted file mode 100644
index 05894ad7..00000000
--- a/dialog/sv-se/wind.strength.light.dialog
+++ /dev/null
@@ -1,3 +0,0 @@
-Inte speciellt blåsigt
-Inte mycket blåsigt
-Ganska lugnt
diff --git a/dialog/sv-se/wind.strength.medium.dialog b/dialog/sv-se/wind.strength.medium.dialog
deleted file mode 100644
index f07d8e80..00000000
--- a/dialog/sv-se/wind.strength.medium.dialog
+++ /dev/null
@@ -1,2 +0,0 @@
-Det blir blåsigt.
-Du kanske vill ta med en jacka
diff --git a/dialog/sv-se/winds.dialog b/dialog/sv-se/winds.dialog
deleted file mode 100644
index f3055cd9..00000000
--- a/dialog/sv-se/winds.dialog
+++ /dev/null
@@ -1 +0,0 @@
-vindhastighet
diff --git a/dialog/ca-es/and.dialog b/locale/ca-es/dialog/and.dialog
similarity index 100%
rename from dialog/ca-es/and.dialog
rename to locale/ca-es/dialog/and.dialog
diff --git a/dialog/ca-es/clear sky.dialog b/locale/ca-es/dialog/condition/clear sky.dialog
similarity index 100%
rename from dialog/ca-es/clear sky.dialog
rename to locale/ca-es/dialog/condition/clear sky.dialog
diff --git a/dialog/ca-es/clear.dialog b/locale/ca-es/dialog/condition/clear.dialog
similarity index 100%
rename from dialog/ca-es/clear.dialog
rename to locale/ca-es/dialog/condition/clear.dialog
diff --git a/dialog/ca-es/no precipitation expected.dialog b/locale/ca-es/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/ca-es/no precipitation expected.dialog
rename to locale/ca-es/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/ca-es/precipitation expected.dialog b/locale/ca-es/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/ca-es/precipitation expected.dialog
rename to locale/ca-es/dialog/condition/precipitation expected.dialog
diff --git a/dialog/ca-es/rain.dialog b/locale/ca-es/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/ca-es/rain.dialog
rename to locale/ca-es/dialog/condition/rain.dialog
diff --git a/dialog/ca-es/snow.dialog b/locale/ca-es/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/ca-es/snow.dialog
rename to locale/ca-es/dialog/condition/snow.dialog
diff --git a/dialog/ca-es/storm.dialog b/locale/ca-es/dialog/condition/thunderstorm.dialog
similarity index 100%
rename from dialog/ca-es/storm.dialog
rename to locale/ca-es/dialog/condition/thunderstorm.dialog
diff --git a/dialog/ca-es/local.affirmative.condition.dialog b/locale/ca-es/dialog/current/current-condition-expected-local.dialog
similarity index 100%
rename from dialog/ca-es/local.affirmative.condition.dialog
rename to locale/ca-es/dialog/current/current-condition-expected-local.dialog
diff --git a/dialog/ca-es/affirmative.condition.dialog b/locale/ca-es/dialog/current/current-condition-expected-location.dialog
similarity index 100%
rename from dialog/ca-es/affirmative.condition.dialog
rename to locale/ca-es/dialog/current/current-condition-expected-location.dialog
diff --git a/dialog/ca-es/humidity.dialog b/locale/ca-es/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/ca-es/humidity.dialog
rename to locale/ca-es/dialog/current/current-humidity-location.dialog
diff --git a/dialog/ca-es/current.local.high.temperature.dialog b/locale/ca-es/dialog/current/current-temperature-high-local.dialog
similarity index 100%
rename from dialog/ca-es/current.local.high.temperature.dialog
rename to locale/ca-es/dialog/current/current-temperature-high-local.dialog
diff --git a/dialog/ca-es/current.high.temperature.dialog b/locale/ca-es/dialog/current/current-temperature-high-location.dialog
similarity index 100%
rename from dialog/ca-es/current.high.temperature.dialog
rename to locale/ca-es/dialog/current/current-temperature-high-location.dialog
diff --git a/dialog/ca-es/min.max.dialog b/locale/ca-es/dialog/current/current-temperature-high-low.dialog
similarity index 100%
rename from dialog/ca-es/min.max.dialog
rename to locale/ca-es/dialog/current/current-temperature-high-low.dialog
diff --git a/dialog/ca-es/current.local.temperature.dialog b/locale/ca-es/dialog/current/current-temperature-local.dialog
similarity index 100%
rename from dialog/ca-es/current.local.temperature.dialog
rename to locale/ca-es/dialog/current/current-temperature-local.dialog
diff --git a/dialog/ca-es/current.temperature.dialog b/locale/ca-es/dialog/current/current-temperature-location.dialog
similarity index 100%
rename from dialog/ca-es/current.temperature.dialog
rename to locale/ca-es/dialog/current/current-temperature-location.dialog
diff --git a/dialog/ca-es/current.local.low.temperature.dialog b/locale/ca-es/dialog/current/current-temperature-low-local.dialog
similarity index 100%
rename from dialog/ca-es/current.local.low.temperature.dialog
rename to locale/ca-es/dialog/current/current-temperature-low-local.dialog
diff --git a/dialog/ca-es/current.low.temperature.dialog b/locale/ca-es/dialog/current/current-temperature-low-location.dialog
similarity index 100%
rename from dialog/ca-es/current.low.temperature.dialog
rename to locale/ca-es/dialog/current/current-temperature-low-location.dialog
diff --git a/dialog/ca-es/current.local.weather.dialog b/locale/ca-es/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/ca-es/current.local.weather.dialog
rename to locale/ca-es/dialog/current/current-weather-local.dialog
diff --git a/dialog/ca-es/current.weather.dialog b/locale/ca-es/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/ca-es/current.weather.dialog
rename to locale/ca-es/dialog/current/current-weather-location.dialog
diff --git a/dialog/ca-es/local.light.wind.dialog b/locale/ca-es/dialog/current/current-wind-light-local.dialog
similarity index 100%
rename from dialog/ca-es/local.light.wind.dialog
rename to locale/ca-es/dialog/current/current-wind-light-local.dialog
diff --git a/dialog/ca-es/light.wind.dialog b/locale/ca-es/dialog/current/current-wind-light-location.dialog
similarity index 100%
rename from dialog/ca-es/light.wind.dialog
rename to locale/ca-es/dialog/current/current-wind-light-location.dialog
diff --git a/dialog/ca-es/local.medium.wind.dialog b/locale/ca-es/dialog/current/current-wind-moderate-local.dialog
similarity index 100%
rename from dialog/ca-es/local.medium.wind.dialog
rename to locale/ca-es/dialog/current/current-wind-moderate-local.dialog
diff --git a/dialog/ca-es/medium.wind.dialog b/locale/ca-es/dialog/current/current-wind-moderate-location.dialog
similarity index 100%
rename from dialog/ca-es/medium.wind.dialog
rename to locale/ca-es/dialog/current/current-wind-moderate-location.dialog
diff --git a/dialog/ca-es/local.hard.wind.dialog b/locale/ca-es/dialog/current/current-wind-strong-local.dialog
similarity index 100%
rename from dialog/ca-es/local.hard.wind.dialog
rename to locale/ca-es/dialog/current/current-wind-strong-local.dialog
diff --git a/dialog/ca-es/hard.wind.dialog b/locale/ca-es/dialog/current/current-wind-strong-location.dialog
similarity index 100%
rename from dialog/ca-es/hard.wind.dialog
rename to locale/ca-es/dialog/current/current-wind-strong-location.dialog
diff --git a/dialog/ca-es/forecast.local.affirmative.condition.dialog b/locale/ca-es/dialog/daily/daily-condition-expected-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.affirmative.condition.dialog
rename to locale/ca-es/dialog/daily/daily-condition-expected-local.dialog
diff --git a/dialog/ca-es/forecast.affirmative.condition.dialog b/locale/ca-es/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/ca-es/forecast.affirmative.condition.dialog
rename to locale/ca-es/dialog/daily/daily-condition-expected-location.dialog
diff --git a/dialog/ca-es/forecast.local.high.temperature.dialog b/locale/ca-es/dialog/daily/daily-temperature-high-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.high.temperature.dialog
rename to locale/ca-es/dialog/daily/daily-temperature-high-local.dialog
diff --git a/dialog/ca-es/forecast.high.temperature.dialog b/locale/ca-es/dialog/daily/daily-temperature-high-location.dialog
similarity index 100%
rename from dialog/ca-es/forecast.high.temperature.dialog
rename to locale/ca-es/dialog/daily/daily-temperature-high-location.dialog
diff --git a/dialog/ca-es/forecast.local.temperature.dialog b/locale/ca-es/dialog/daily/daily-temperature-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.temperature.dialog
rename to locale/ca-es/dialog/daily/daily-temperature-local.dialog
diff --git a/dialog/ca-es/forecast.temperature.dialog b/locale/ca-es/dialog/daily/daily-temperature-location.dialog
similarity index 100%
rename from dialog/ca-es/forecast.temperature.dialog
rename to locale/ca-es/dialog/daily/daily-temperature-location.dialog
diff --git a/dialog/ca-es/forecast.local.low.temperature.dialog b/locale/ca-es/dialog/daily/daily-temperature-low-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.low.temperature.dialog
rename to locale/ca-es/dialog/daily/daily-temperature-low-local.dialog
diff --git a/dialog/ca-es/forecast.low.temperature.dialog b/locale/ca-es/dialog/daily/daily-temperature-low-location.dialog
similarity index 100%
rename from dialog/ca-es/forecast.low.temperature.dialog
rename to locale/ca-es/dialog/daily/daily-temperature-low-location.dialog
diff --git a/dialog/ca-es/forecast.local.weather.dialog b/locale/ca-es/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.weather.dialog
rename to locale/ca-es/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/ca-es/forecast.weather.dialog b/locale/ca-es/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/ca-es/forecast.weather.dialog
rename to locale/ca-es/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/ca-es/forecast.light.wind.dialog b/locale/ca-es/dialog/daily/daily-wind-light-loaction.dialog
similarity index 100%
rename from dialog/ca-es/forecast.light.wind.dialog
rename to locale/ca-es/dialog/daily/daily-wind-light-loaction.dialog
diff --git a/dialog/ca-es/forecast.local.light.wind.dialog b/locale/ca-es/dialog/daily/daily-wind-light-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.light.wind.dialog
rename to locale/ca-es/dialog/daily/daily-wind-light-local.dialog
diff --git a/dialog/ca-es/forecast.local.medium.wind.dialog b/locale/ca-es/dialog/daily/daily-wind-moderate-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.medium.wind.dialog
rename to locale/ca-es/dialog/daily/daily-wind-moderate-local.dialog
diff --git a/dialog/ca-es/forecast.medium.wind.dialog b/locale/ca-es/dialog/daily/daily-wind-moderate-location.dialog
similarity index 100%
rename from dialog/ca-es/forecast.medium.wind.dialog
rename to locale/ca-es/dialog/daily/daily-wind-moderate-location.dialog
diff --git a/dialog/ca-es/forecast.local.hard.wind.dialog b/locale/ca-es/dialog/daily/daily-wind-strong-local.dialog
similarity index 100%
rename from dialog/ca-es/forecast.local.hard.wind.dialog
rename to locale/ca-es/dialog/daily/daily-wind-strong-local.dialog
diff --git a/dialog/ca-es/forecast.hard.wind.dialog b/locale/ca-es/dialog/daily/daily-wind-strong-location.dialog
similarity index 100%
rename from dialog/ca-es/forecast.hard.wind.dialog
rename to locale/ca-es/dialog/daily/daily-wind-strong-location.dialog
diff --git a/dialog/ca-es/E.dialog b/locale/ca-es/dialog/direction/east.dialog
similarity index 100%
rename from dialog/ca-es/E.dialog
rename to locale/ca-es/dialog/direction/east.dialog
diff --git a/dialog/ca-es/N.dialog b/locale/ca-es/dialog/direction/north.dialog
similarity index 100%
rename from dialog/ca-es/N.dialog
rename to locale/ca-es/dialog/direction/north.dialog
diff --git a/dialog/ca-es/NE.dialog b/locale/ca-es/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/ca-es/NE.dialog
rename to locale/ca-es/dialog/direction/northeast.dialog
diff --git a/dialog/ca-es/NW.dialog b/locale/ca-es/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/ca-es/NW.dialog
rename to locale/ca-es/dialog/direction/northwest.dialog
diff --git a/dialog/ca-es/S.dialog b/locale/ca-es/dialog/direction/south.dialog
similarity index 100%
rename from dialog/ca-es/S.dialog
rename to locale/ca-es/dialog/direction/south.dialog
diff --git a/dialog/ca-es/SE.dialog b/locale/ca-es/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/ca-es/SE.dialog
rename to locale/ca-es/dialog/direction/southeast.dialog
diff --git a/dialog/ca-es/SW.dialog b/locale/ca-es/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/ca-es/SW.dialog
rename to locale/ca-es/dialog/direction/southwest.dialog
diff --git a/dialog/ca-es/W.dialog b/locale/ca-es/dialog/direction/west.dialog
similarity index 100%
rename from dialog/ca-es/W.dialog
rename to locale/ca-es/dialog/direction/west.dialog
diff --git a/dialog/ca-es/cant.get.forecast.dialog b/locale/ca-es/dialog/error/cant-get-forecast.dialog
similarity index 100%
rename from dialog/ca-es/cant.get.forecast.dialog
rename to locale/ca-es/dialog/error/cant-get-forecast.dialog
diff --git a/dialog/ca-es/location.not.found.dialog b/locale/ca-es/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/ca-es/location.not.found.dialog
rename to locale/ca-es/dialog/error/location-not-found.dialog
diff --git a/dialog/ca-es/no.forecast.dialog b/locale/ca-es/dialog/error/no-forecast.dialog
similarity index 100%
rename from dialog/ca-es/no.forecast.dialog
rename to locale/ca-es/dialog/error/no-forecast.dialog
diff --git a/dialog/ca-es/at.time.local.cond.alternative.dialog b/locale/ca-es/dialog/hourly/hourly-condition-alternative-local.dialog
similarity index 100%
rename from dialog/ca-es/at.time.local.cond.alternative.dialog
rename to locale/ca-es/dialog/hourly/hourly-condition-alternative-local.dialog
diff --git a/dialog/ca-es/at.time.cond.alternative.dialog b/locale/ca-es/dialog/hourly/hourly-condition-alternative-location.dialog
similarity index 100%
rename from dialog/ca-es/at.time.cond.alternative.dialog
rename to locale/ca-es/dialog/hourly/hourly-condition-alternative-location.dialog
diff --git a/dialog/ca-es/at.time.local.affirmative.condition.dialog b/locale/ca-es/dialog/hourly/hourly-condition-expected-local.dialog
similarity index 100%
rename from dialog/ca-es/at.time.local.affirmative.condition.dialog
rename to locale/ca-es/dialog/hourly/hourly-condition-expected-local.dialog
diff --git a/dialog/ca-es/at.time.affirmative.condition.dialog b/locale/ca-es/dialog/hourly/hourly-condition-expected-location.dialog
similarity index 100%
rename from dialog/ca-es/at.time.affirmative.condition.dialog
rename to locale/ca-es/dialog/hourly/hourly-condition-expected-location.dialog
diff --git a/dialog/ca-es/at.time.local.no.cond.predicted.dialog b/locale/ca-es/dialog/hourly/hourly-condition-not-expected-local.dialog
similarity index 100%
rename from dialog/ca-es/at.time.local.no.cond.predicted.dialog
rename to locale/ca-es/dialog/hourly/hourly-condition-not-expected-local.dialog
diff --git a/dialog/ca-es/at.time.no.cond.predicted.dialog b/locale/ca-es/dialog/hourly/hourly-condition-not-expected-location.dialog
similarity index 100%
rename from dialog/ca-es/at.time.no.cond.predicted.dialog
rename to locale/ca-es/dialog/hourly/hourly-condition-not-expected-location.dialog
diff --git a/dialog/ca-es/at.time.local.temperature.dialog b/locale/ca-es/dialog/hourly/hourly-temperature-local.dialog
similarity index 100%
rename from dialog/ca-es/at.time.local.temperature.dialog
rename to locale/ca-es/dialog/hourly/hourly-temperature-local.dialog
diff --git a/dialog/ca-es/hour.local.weather.dialog b/locale/ca-es/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/ca-es/hour.local.weather.dialog
rename to locale/ca-es/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/ca-es/hour.weather.dialog b/locale/ca-es/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/ca-es/hour.weather.dialog
rename to locale/ca-es/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/ca-es/percentage.number.dialog b/locale/ca-es/dialog/percentage-number.dialog
similarity index 100%
rename from dialog/ca-es/percentage.number.dialog
rename to locale/ca-es/dialog/percentage-number.dialog
diff --git a/dialog/ca-es/celsius.dialog b/locale/ca-es/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/ca-es/celsius.dialog
rename to locale/ca-es/dialog/unit/celsius.dialog
diff --git a/dialog/ca-es/fahrenheit.dialog b/locale/ca-es/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/ca-es/fahrenheit.dialog
rename to locale/ca-es/dialog/unit/fahrenheit.dialog
diff --git a/dialog/ca-es/meters per second.dialog b/locale/ca-es/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/ca-es/meters per second.dialog
rename to locale/ca-es/dialog/unit/meters per second.dialog
diff --git a/dialog/ca-es/miles per hour.dialog b/locale/ca-es/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/ca-es/miles per hour.dialog
rename to locale/ca-es/dialog/unit/miles per hour.dialog
diff --git a/dialog/ca-es/weekly.temp.range.dialog b/locale/ca-es/dialog/weekly/weekly-temperature.dialog
similarity index 100%
rename from dialog/ca-es/weekly.temp.range.dialog
rename to locale/ca-es/dialog/weekly/weekly-temperature.dialog
diff --git a/regex/ca-es/location.rx b/locale/ca-es/regex/location.rx
similarity index 100%
rename from regex/ca-es/location.rx
rename to locale/ca-es/regex/location.rx
diff --git a/vocab/ca-es/Clear.voc b/locale/ca-es/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/ca-es/Clear.voc
rename to locale/ca-es/vocabulary/condition/clear.voc
diff --git a/vocab/ca-es/Cloudy.voc b/locale/ca-es/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/ca-es/Cloudy.voc
rename to locale/ca-es/vocabulary/condition/clouds.voc
diff --git a/vocab/ca-es/do.i.need.an.umbrella.intent b/locale/ca-es/vocabulary/condition/do.i.need.an.umbrella.intent
similarity index 100%
rename from vocab/ca-es/do.i.need.an.umbrella.intent
rename to locale/ca-es/vocabulary/condition/do.i.need.an.umbrella.intent
diff --git a/vocab/ca-es/Foggy.voc b/locale/ca-es/vocabulary/condition/fog.voc
similarity index 100%
rename from vocab/ca-es/Foggy.voc
rename to locale/ca-es/vocabulary/condition/fog.voc
diff --git a/vocab/ca-es/Humidity.voc b/locale/ca-es/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/ca-es/Humidity.voc
rename to locale/ca-es/vocabulary/condition/humidity.voc
diff --git a/vocab/ca-es/Precipitation.voc b/locale/ca-es/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/ca-es/Precipitation.voc
rename to locale/ca-es/vocabulary/condition/precipitation.voc
diff --git a/vocab/ca-es/Raining.voc b/locale/ca-es/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/ca-es/Raining.voc
rename to locale/ca-es/vocabulary/condition/rain.voc
diff --git a/vocab/ca-es/Snowing.voc b/locale/ca-es/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/ca-es/Snowing.voc
rename to locale/ca-es/vocabulary/condition/snow.voc
diff --git a/vocab/ca-es/Storm.voc b/locale/ca-es/vocabulary/condition/thunderstorm.voc
similarity index 100%
rename from vocab/ca-es/Storm.voc
rename to locale/ca-es/vocabulary/condition/thunderstorm.voc
diff --git a/vocab/ca-es/Windy.voc b/locale/ca-es/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/ca-es/Windy.voc
rename to locale/ca-es/vocabulary/condition/windy.voc
diff --git a/vocab/ca-es/Couple.voc b/locale/ca-es/vocabulary/couple.voc
similarity index 100%
rename from vocab/ca-es/Couple.voc
rename to locale/ca-es/vocabulary/couple.voc
diff --git a/vocab/ca-es/Later.voc b/locale/ca-es/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/ca-es/Later.voc
rename to locale/ca-es/vocabulary/date-time/later.voc
diff --git a/vocab/ca-es/Next.voc b/locale/ca-es/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/ca-es/Next.voc
rename to locale/ca-es/vocabulary/date-time/next.voc
diff --git a/vocab/ca-es/Now.voc b/locale/ca-es/vocabulary/date-time/now.voc
similarity index 100%
rename from vocab/ca-es/Now.voc
rename to locale/ca-es/vocabulary/date-time/now.voc
diff --git a/vocab/ca-es/RelativeDay.voc b/locale/ca-es/vocabulary/date-time/relative-day.voc
similarity index 100%
rename from vocab/ca-es/RelativeDay.voc
rename to locale/ca-es/vocabulary/date-time/relative-day.voc
diff --git a/vocab/ca-es/RelativeTime.voc b/locale/ca-es/vocabulary/date-time/relative-time.voc
similarity index 100%
rename from vocab/ca-es/RelativeTime.voc
rename to locale/ca-es/vocabulary/date-time/relative-time.voc
diff --git a/vocab/ca-es/Today.voc b/locale/ca-es/vocabulary/date-time/today.voc
similarity index 100%
rename from vocab/ca-es/Today.voc
rename to locale/ca-es/vocabulary/date-time/today.voc
diff --git a/vocab/ca-es/Week.voc b/locale/ca-es/vocabulary/date-time/week.voc
similarity index 100%
rename from vocab/ca-es/Week.voc
rename to locale/ca-es/vocabulary/date-time/week.voc
diff --git a/vocab/ca-es/Weekend.voc b/locale/ca-es/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/ca-es/Weekend.voc
rename to locale/ca-es/vocabulary/date-time/weekend.voc
diff --git a/vocab/ca-es/Forecast.voc b/locale/ca-es/vocabulary/forecast.voc
similarity index 100%
rename from vocab/ca-es/Forecast.voc
rename to locale/ca-es/vocabulary/forecast.voc
diff --git a/vocab/ca-es/Location.voc b/locale/ca-es/vocabulary/location.voc
similarity index 100%
rename from vocab/ca-es/Location.voc
rename to locale/ca-es/vocabulary/location.voc
diff --git a/vocab/ca-es/ConfirmQueryCurrent.voc b/locale/ca-es/vocabulary/query/confirm-query-current.voc
similarity index 100%
rename from vocab/ca-es/ConfirmQueryCurrent.voc
rename to locale/ca-es/vocabulary/query/confirm-query-current.voc
diff --git a/vocab/ca-es/ConfirmQueryFuture.voc b/locale/ca-es/vocabulary/query/confirm-query-future.voc
similarity index 100%
rename from vocab/ca-es/ConfirmQueryFuture.voc
rename to locale/ca-es/vocabulary/query/confirm-query-future.voc
diff --git a/vocab/ca-es/ConfirmQuery.voc b/locale/ca-es/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/ca-es/ConfirmQuery.voc
rename to locale/ca-es/vocabulary/query/confirm-query.voc
diff --git a/vocab/ca-es/How.voc b/locale/ca-es/vocabulary/query/how.voc
similarity index 100%
rename from vocab/ca-es/How.voc
rename to locale/ca-es/vocabulary/query/how.voc
diff --git a/vocab/ca-es/Query.voc b/locale/ca-es/vocabulary/query/query.voc
similarity index 100%
rename from vocab/ca-es/Query.voc
rename to locale/ca-es/vocabulary/query/query.voc
diff --git a/vocab/ca-es/When.voc b/locale/ca-es/vocabulary/query/when.voc
similarity index 100%
rename from vocab/ca-es/When.voc
rename to locale/ca-es/vocabulary/query/when.voc
diff --git a/vocab/ca-es/Sunrise.voc b/locale/ca-es/vocabulary/sunrise.voc
similarity index 100%
rename from vocab/ca-es/Sunrise.voc
rename to locale/ca-es/vocabulary/sunrise.voc
diff --git a/vocab/ca-es/Sunset.voc b/locale/ca-es/vocabulary/sunset.voc
similarity index 100%
rename from vocab/ca-es/Sunset.voc
rename to locale/ca-es/vocabulary/sunset.voc
diff --git a/vocab/ca-es/Cold.voc b/locale/ca-es/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/ca-es/Cold.voc
rename to locale/ca-es/vocabulary/temperature/cold.voc
diff --git a/vocab/ca-es/High.voc b/locale/ca-es/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/ca-es/High.voc
rename to locale/ca-es/vocabulary/temperature/high.voc
diff --git a/vocab/ca-es/Hot.voc b/locale/ca-es/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/ca-es/Hot.voc
rename to locale/ca-es/vocabulary/temperature/hot.voc
diff --git a/vocab/ca-es/Low.voc b/locale/ca-es/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/ca-es/Low.voc
rename to locale/ca-es/vocabulary/temperature/low.voc
diff --git a/vocab/ca-es/Temperature.voc b/locale/ca-es/vocabulary/temperature/temperature.voc
similarity index 100%
rename from vocab/ca-es/Temperature.voc
rename to locale/ca-es/vocabulary/temperature/temperature.voc
diff --git a/dialog/en-us/fahrenheit.dialog b/locale/ca-es/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from dialog/en-us/fahrenheit.dialog
rename to locale/ca-es/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/ca-es/Unit.entity b/locale/ca-es/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/ca-es/Unit.entity
rename to locale/ca-es/vocabulary/unit/unit.entity
diff --git a/vocab/ca-es/Unit.voc b/locale/ca-es/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/ca-es/Unit.voc
rename to locale/ca-es/vocabulary/unit/unit.voc
diff --git a/vocab/ca-es/Weather.voc b/locale/ca-es/vocabulary/weather.voc
similarity index 100%
rename from vocab/ca-es/Weather.voc
rename to locale/ca-es/vocabulary/weather.voc
diff --git a/dialog/da-dk/and.dialog b/locale/da-dk/dialog/and.dialog
similarity index 50%
rename from dialog/da-dk/and.dialog
rename to locale/da-dk/dialog/and.dialog
index e22bac65..49555825 100644
--- a/dialog/da-dk/and.dialog
+++ b/locale/da-dk/dialog/and.dialog
@@ -1,2 +1,2 @@
# , and
-, og
+, og
diff --git a/dialog/da-dk/clear sky.dialog b/locale/da-dk/dialog/condition/clear sky.dialog
similarity index 100%
rename from dialog/da-dk/clear sky.dialog
rename to locale/da-dk/dialog/condition/clear sky.dialog
diff --git a/dialog/da-dk/clear.dialog b/locale/da-dk/dialog/condition/clear.dialog
similarity index 100%
rename from dialog/da-dk/clear.dialog
rename to locale/da-dk/dialog/condition/clear.dialog
diff --git a/dialog/da-dk/no precipitation expected.dialog b/locale/da-dk/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/da-dk/no precipitation expected.dialog
rename to locale/da-dk/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/da-dk/precipitation expected.dialog b/locale/da-dk/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/da-dk/precipitation expected.dialog
rename to locale/da-dk/dialog/condition/precipitation expected.dialog
diff --git a/dialog/da-dk/rain.dialog b/locale/da-dk/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/da-dk/rain.dialog
rename to locale/da-dk/dialog/condition/rain.dialog
diff --git a/dialog/da-dk/snow.dialog b/locale/da-dk/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/da-dk/snow.dialog
rename to locale/da-dk/dialog/condition/snow.dialog
diff --git a/dialog/da-dk/storm.dialog b/locale/da-dk/dialog/condition/thunderstorm.dialog
similarity index 100%
rename from dialog/da-dk/storm.dialog
rename to locale/da-dk/dialog/condition/thunderstorm.dialog
diff --git a/dialog/da-dk/local.affirmative.condition.dialog b/locale/da-dk/dialog/current/current-condition-expected-local.dialog
similarity index 100%
rename from dialog/da-dk/local.affirmative.condition.dialog
rename to locale/da-dk/dialog/current/current-condition-expected-local.dialog
diff --git a/dialog/da-dk/affirmative.condition.dialog b/locale/da-dk/dialog/current/current-condition-expected-location.dialog
similarity index 100%
rename from dialog/da-dk/affirmative.condition.dialog
rename to locale/da-dk/dialog/current/current-condition-expected-location.dialog
diff --git a/dialog/da-dk/humidity.dialog b/locale/da-dk/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/da-dk/humidity.dialog
rename to locale/da-dk/dialog/current/current-humidity-location.dialog
diff --git a/dialog/da-dk/current.local.high.temperature.dialog b/locale/da-dk/dialog/current/current-temperature-high-local.dialog
similarity index 100%
rename from dialog/da-dk/current.local.high.temperature.dialog
rename to locale/da-dk/dialog/current/current-temperature-high-local.dialog
diff --git a/dialog/da-dk/current.high.temperature.dialog b/locale/da-dk/dialog/current/current-temperature-high-location.dialog
similarity index 100%
rename from dialog/da-dk/current.high.temperature.dialog
rename to locale/da-dk/dialog/current/current-temperature-high-location.dialog
diff --git a/dialog/da-dk/min.max.dialog b/locale/da-dk/dialog/current/current-temperature-high-low.dialog
similarity index 100%
rename from dialog/da-dk/min.max.dialog
rename to locale/da-dk/dialog/current/current-temperature-high-low.dialog
diff --git a/dialog/da-dk/current.local.temperature.dialog b/locale/da-dk/dialog/current/current-temperature-local.dialog
similarity index 100%
rename from dialog/da-dk/current.local.temperature.dialog
rename to locale/da-dk/dialog/current/current-temperature-local.dialog
diff --git a/dialog/da-dk/current.temperature.dialog b/locale/da-dk/dialog/current/current-temperature-location.dialog
similarity index 100%
rename from dialog/da-dk/current.temperature.dialog
rename to locale/da-dk/dialog/current/current-temperature-location.dialog
diff --git a/dialog/da-dk/current.local.low.temperature.dialog b/locale/da-dk/dialog/current/current-temperature-low-local.dialog
similarity index 100%
rename from dialog/da-dk/current.local.low.temperature.dialog
rename to locale/da-dk/dialog/current/current-temperature-low-local.dialog
diff --git a/dialog/da-dk/current.low.temperature.dialog b/locale/da-dk/dialog/current/current-temperature-low-location.dialog
similarity index 100%
rename from dialog/da-dk/current.low.temperature.dialog
rename to locale/da-dk/dialog/current/current-temperature-low-location.dialog
diff --git a/dialog/da-dk/current.local.weather.dialog b/locale/da-dk/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/da-dk/current.local.weather.dialog
rename to locale/da-dk/dialog/current/current-weather-local.dialog
diff --git a/dialog/da-dk/current.weather.dialog b/locale/da-dk/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/da-dk/current.weather.dialog
rename to locale/da-dk/dialog/current/current-weather-location.dialog
diff --git a/dialog/da-dk/local.light.wind.dialog b/locale/da-dk/dialog/current/current-wind-light-local.dialog
similarity index 100%
rename from dialog/da-dk/local.light.wind.dialog
rename to locale/da-dk/dialog/current/current-wind-light-local.dialog
diff --git a/dialog/da-dk/light.wind.dialog b/locale/da-dk/dialog/current/current-wind-light-location.dialog
similarity index 100%
rename from dialog/da-dk/light.wind.dialog
rename to locale/da-dk/dialog/current/current-wind-light-location.dialog
diff --git a/dialog/da-dk/local.medium.wind.dialog b/locale/da-dk/dialog/current/current-wind-moderate-local.dialog
similarity index 100%
rename from dialog/da-dk/local.medium.wind.dialog
rename to locale/da-dk/dialog/current/current-wind-moderate-local.dialog
diff --git a/dialog/da-dk/medium.wind.dialog b/locale/da-dk/dialog/current/current-wind-moderate-location.dialog
similarity index 100%
rename from dialog/da-dk/medium.wind.dialog
rename to locale/da-dk/dialog/current/current-wind-moderate-location.dialog
diff --git a/dialog/da-dk/local.hard.wind.dialog b/locale/da-dk/dialog/current/current-wind-strong-local.dialog
similarity index 100%
rename from dialog/da-dk/local.hard.wind.dialog
rename to locale/da-dk/dialog/current/current-wind-strong-local.dialog
diff --git a/dialog/da-dk/hard.wind.dialog b/locale/da-dk/dialog/current/current-wind-strong-location.dialog
similarity index 100%
rename from dialog/da-dk/hard.wind.dialog
rename to locale/da-dk/dialog/current/current-wind-strong-location.dialog
diff --git a/dialog/da-dk/forecast.local.affirmative.condition.dialog b/locale/da-dk/dialog/daily/daily-condition-expected-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.affirmative.condition.dialog
rename to locale/da-dk/dialog/daily/daily-condition-expected-local.dialog
diff --git a/dialog/da-dk/forecast.affirmative.condition.dialog b/locale/da-dk/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.affirmative.condition.dialog
rename to locale/da-dk/dialog/daily/daily-condition-expected-location.dialog
diff --git a/dialog/da-dk/forecast.local.high.temperature.dialog b/locale/da-dk/dialog/daily/daily-temperature-high-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.high.temperature.dialog
rename to locale/da-dk/dialog/daily/daily-temperature-high-local.dialog
diff --git a/dialog/da-dk/forecast.high.temperature.dialog b/locale/da-dk/dialog/daily/daily-temperature-high-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.high.temperature.dialog
rename to locale/da-dk/dialog/daily/daily-temperature-high-location.dialog
diff --git a/dialog/da-dk/forecast.local.temperature.dialog b/locale/da-dk/dialog/daily/daily-temperature-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.temperature.dialog
rename to locale/da-dk/dialog/daily/daily-temperature-local.dialog
diff --git a/dialog/da-dk/forecast.temperature.dialog b/locale/da-dk/dialog/daily/daily-temperature-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.temperature.dialog
rename to locale/da-dk/dialog/daily/daily-temperature-location.dialog
diff --git a/dialog/da-dk/forecast.local.low.temperature.dialog b/locale/da-dk/dialog/daily/daily-temperature-low-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.low.temperature.dialog
rename to locale/da-dk/dialog/daily/daily-temperature-low-local.dialog
diff --git a/dialog/da-dk/forecast.low.temperature.dialog b/locale/da-dk/dialog/daily/daily-temperature-low-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.low.temperature.dialog
rename to locale/da-dk/dialog/daily/daily-temperature-low-location.dialog
diff --git a/dialog/da-dk/forecast.local.weather.dialog b/locale/da-dk/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.weather.dialog
rename to locale/da-dk/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/da-dk/forecast.weather.dialog b/locale/da-dk/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.weather.dialog
rename to locale/da-dk/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/da-dk/forecast.local.light.wind.dialog b/locale/da-dk/dialog/daily/daily-wind-light-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.light.wind.dialog
rename to locale/da-dk/dialog/daily/daily-wind-light-local.dialog
diff --git a/dialog/da-dk/forecast.light.wind.dialog b/locale/da-dk/dialog/daily/daily-wind-light-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.light.wind.dialog
rename to locale/da-dk/dialog/daily/daily-wind-light-location.dialog
diff --git a/dialog/da-dk/forecast.local.medium.wind.dialog b/locale/da-dk/dialog/daily/daily-wind-moderate-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.medium.wind.dialog
rename to locale/da-dk/dialog/daily/daily-wind-moderate-local.dialog
diff --git a/dialog/da-dk/forecast.medium.wind.dialog b/locale/da-dk/dialog/daily/daily-wind-moderate-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.medium.wind.dialog
rename to locale/da-dk/dialog/daily/daily-wind-moderate-location.dialog
diff --git a/dialog/da-dk/forecast.local.hard.wind.dialog b/locale/da-dk/dialog/daily/daily-wind-strong-local.dialog
similarity index 100%
rename from dialog/da-dk/forecast.local.hard.wind.dialog
rename to locale/da-dk/dialog/daily/daily-wind-strong-local.dialog
diff --git a/dialog/da-dk/forecast.hard.wind.dialog b/locale/da-dk/dialog/daily/daily-wind-strong-location.dialog
similarity index 100%
rename from dialog/da-dk/forecast.hard.wind.dialog
rename to locale/da-dk/dialog/daily/daily-wind-strong-location.dialog
diff --git a/dialog/da-dk/E.dialog b/locale/da-dk/dialog/direction/east.dialog
similarity index 100%
rename from dialog/da-dk/E.dialog
rename to locale/da-dk/dialog/direction/east.dialog
diff --git a/dialog/da-dk/N.dialog b/locale/da-dk/dialog/direction/north.dialog
similarity index 100%
rename from dialog/da-dk/N.dialog
rename to locale/da-dk/dialog/direction/north.dialog
diff --git a/dialog/da-dk/NE.dialog b/locale/da-dk/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/da-dk/NE.dialog
rename to locale/da-dk/dialog/direction/northeast.dialog
diff --git a/dialog/da-dk/NW.dialog b/locale/da-dk/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/da-dk/NW.dialog
rename to locale/da-dk/dialog/direction/northwest.dialog
diff --git a/dialog/da-dk/S.dialog b/locale/da-dk/dialog/direction/south.dialog
similarity index 100%
rename from dialog/da-dk/S.dialog
rename to locale/da-dk/dialog/direction/south.dialog
diff --git a/dialog/da-dk/SE.dialog b/locale/da-dk/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/da-dk/SE.dialog
rename to locale/da-dk/dialog/direction/southeast.dialog
diff --git a/dialog/da-dk/SW.dialog b/locale/da-dk/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/da-dk/SW.dialog
rename to locale/da-dk/dialog/direction/southwest.dialog
diff --git a/dialog/da-dk/W.dialog b/locale/da-dk/dialog/direction/west.dialog
similarity index 100%
rename from dialog/da-dk/W.dialog
rename to locale/da-dk/dialog/direction/west.dialog
diff --git a/dialog/da-dk/cant.get.forecast.dialog b/locale/da-dk/dialog/error/cant-get-forecast.dialog
similarity index 100%
rename from dialog/da-dk/cant.get.forecast.dialog
rename to locale/da-dk/dialog/error/cant-get-forecast.dialog
diff --git a/dialog/da-dk/location.not.found.dialog b/locale/da-dk/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/da-dk/location.not.found.dialog
rename to locale/da-dk/dialog/error/location-not-found.dialog
diff --git a/dialog/da-dk/no.forecast.dialog b/locale/da-dk/dialog/error/no-forecast.dialog
similarity index 100%
rename from dialog/da-dk/no.forecast.dialog
rename to locale/da-dk/dialog/error/no-forecast.dialog
diff --git a/dialog/da-dk/at.time.local.cond.alternative.dialog b/locale/da-dk/dialog/hourly/hourly-condition-alternative-local.dialog
similarity index 100%
rename from dialog/da-dk/at.time.local.cond.alternative.dialog
rename to locale/da-dk/dialog/hourly/hourly-condition-alternative-local.dialog
diff --git a/dialog/da-dk/at.time.cond.alternative.dialog b/locale/da-dk/dialog/hourly/hourly-condition-alternative-location.dialog
similarity index 100%
rename from dialog/da-dk/at.time.cond.alternative.dialog
rename to locale/da-dk/dialog/hourly/hourly-condition-alternative-location.dialog
diff --git a/dialog/da-dk/at.time.local.affirmative.condition.dialog b/locale/da-dk/dialog/hourly/hourly-condition-expected-local.dialog
similarity index 100%
rename from dialog/da-dk/at.time.local.affirmative.condition.dialog
rename to locale/da-dk/dialog/hourly/hourly-condition-expected-local.dialog
diff --git a/dialog/da-dk/at.time.affirmative.condition.dialog b/locale/da-dk/dialog/hourly/hourly-condition-expected-location.dialog
similarity index 100%
rename from dialog/da-dk/at.time.affirmative.condition.dialog
rename to locale/da-dk/dialog/hourly/hourly-condition-expected-location.dialog
diff --git a/dialog/da-dk/at.time.local.no.cond.predicted.dialog b/locale/da-dk/dialog/hourly/hourly-condition-not-expected-local.dialog
similarity index 100%
rename from dialog/da-dk/at.time.local.no.cond.predicted.dialog
rename to locale/da-dk/dialog/hourly/hourly-condition-not-expected-local.dialog
diff --git a/dialog/da-dk/at.time.no.cond.predicted.dialog b/locale/da-dk/dialog/hourly/hourly-condition-not-expected-location.dialog
similarity index 100%
rename from dialog/da-dk/at.time.no.cond.predicted.dialog
rename to locale/da-dk/dialog/hourly/hourly-condition-not-expected-location.dialog
diff --git a/dialog/da-dk/at.time.local.temperature.dialog b/locale/da-dk/dialog/hourly/hourly-temperature-local.dialog
similarity index 100%
rename from dialog/da-dk/at.time.local.temperature.dialog
rename to locale/da-dk/dialog/hourly/hourly-temperature-local.dialog
diff --git a/dialog/da-dk/hour.local.weather.dialog b/locale/da-dk/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/da-dk/hour.local.weather.dialog
rename to locale/da-dk/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/da-dk/hour.weather.dialog b/locale/da-dk/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/da-dk/hour.weather.dialog
rename to locale/da-dk/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/da-dk/percentage.number.dialog b/locale/da-dk/dialog/percentage-number.dialog
similarity index 100%
rename from dialog/da-dk/percentage.number.dialog
rename to locale/da-dk/dialog/percentage-number.dialog
diff --git a/dialog/da-dk/celsius.dialog b/locale/da-dk/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/da-dk/celsius.dialog
rename to locale/da-dk/dialog/unit/celsius.dialog
diff --git a/dialog/da-dk/fahrenheit.dialog b/locale/da-dk/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/da-dk/fahrenheit.dialog
rename to locale/da-dk/dialog/unit/fahrenheit.dialog
diff --git a/dialog/da-dk/meters per second.dialog b/locale/da-dk/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/da-dk/meters per second.dialog
rename to locale/da-dk/dialog/unit/meters per second.dialog
diff --git a/dialog/da-dk/miles per hour.dialog b/locale/da-dk/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/da-dk/miles per hour.dialog
rename to locale/da-dk/dialog/unit/miles per hour.dialog
diff --git a/dialog/da-dk/weekly.temp.range.dialog b/locale/da-dk/dialog/weekly/weekly-temperature.dialog
similarity index 100%
rename from dialog/da-dk/weekly.temp.range.dialog
rename to locale/da-dk/dialog/weekly/weekly-temperature.dialog
diff --git a/vocab/da-dk/Forecast.voc b/locale/da-dk/forecast.voc
similarity index 100%
rename from vocab/da-dk/Forecast.voc
rename to locale/da-dk/forecast.voc
diff --git a/vocab/da-dk/Location.voc b/locale/da-dk/location.voc
similarity index 100%
rename from vocab/da-dk/Location.voc
rename to locale/da-dk/location.voc
diff --git a/regex/da-dk/location.rx b/locale/da-dk/regex/location.rx
similarity index 100%
rename from regex/da-dk/location.rx
rename to locale/da-dk/regex/location.rx
diff --git a/vocab/da-dk/Sunrise.voc b/locale/da-dk/sunrise.voc
similarity index 100%
rename from vocab/da-dk/Sunrise.voc
rename to locale/da-dk/sunrise.voc
diff --git a/vocab/da-dk/Sunset.voc b/locale/da-dk/sunset.voc
similarity index 100%
rename from vocab/da-dk/Sunset.voc
rename to locale/da-dk/sunset.voc
diff --git a/vocab/da-dk/Clear.voc b/locale/da-dk/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/da-dk/Clear.voc
rename to locale/da-dk/vocabulary/condition/clear.voc
diff --git a/vocab/da-dk/Cloudy.voc b/locale/da-dk/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/da-dk/Cloudy.voc
rename to locale/da-dk/vocabulary/condition/clouds.voc
diff --git a/vocab/da-dk/do.i.need.an.umbrella.intent b/locale/da-dk/vocabulary/condition/do-i-need-an-umbrella-intent
similarity index 100%
rename from vocab/da-dk/do.i.need.an.umbrella.intent
rename to locale/da-dk/vocabulary/condition/do-i-need-an-umbrella-intent
diff --git a/vocab/da-dk/Foggy.voc b/locale/da-dk/vocabulary/condition/fog.voc
similarity index 100%
rename from vocab/da-dk/Foggy.voc
rename to locale/da-dk/vocabulary/condition/fog.voc
diff --git a/vocab/da-dk/Humidity.voc b/locale/da-dk/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/da-dk/Humidity.voc
rename to locale/da-dk/vocabulary/condition/humidity.voc
diff --git a/vocab/da-dk/Precipitation.voc b/locale/da-dk/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/da-dk/Precipitation.voc
rename to locale/da-dk/vocabulary/condition/precipitation.voc
diff --git a/vocab/da-dk/Raining.voc b/locale/da-dk/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/da-dk/Raining.voc
rename to locale/da-dk/vocabulary/condition/rain.voc
diff --git a/vocab/da-dk/Snowing.voc b/locale/da-dk/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/da-dk/Snowing.voc
rename to locale/da-dk/vocabulary/condition/snow.voc
diff --git a/vocab/da-dk/Storm.voc b/locale/da-dk/vocabulary/condition/thunderstorm.voc
similarity index 100%
rename from vocab/da-dk/Storm.voc
rename to locale/da-dk/vocabulary/condition/thunderstorm.voc
diff --git a/vocab/da-dk/Windy.voc b/locale/da-dk/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/da-dk/Windy.voc
rename to locale/da-dk/vocabulary/condition/windy.voc
diff --git a/vocab/da-dk/Couple.voc b/locale/da-dk/vocabulary/date-time/couple.voc
similarity index 100%
rename from vocab/da-dk/Couple.voc
rename to locale/da-dk/vocabulary/date-time/couple.voc
diff --git a/vocab/da-dk/Later.voc b/locale/da-dk/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/da-dk/Later.voc
rename to locale/da-dk/vocabulary/date-time/later.voc
diff --git a/vocab/da-dk/Next.voc b/locale/da-dk/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/da-dk/Next.voc
rename to locale/da-dk/vocabulary/date-time/next.voc
diff --git a/vocab/da-dk/Now.voc b/locale/da-dk/vocabulary/date-time/now.voc
similarity index 100%
rename from vocab/da-dk/Now.voc
rename to locale/da-dk/vocabulary/date-time/now.voc
diff --git a/vocab/da-dk/RelativeDay.voc b/locale/da-dk/vocabulary/date-time/relative-day.voc
similarity index 100%
rename from vocab/da-dk/RelativeDay.voc
rename to locale/da-dk/vocabulary/date-time/relative-day.voc
diff --git a/vocab/da-dk/RelativeTime.voc b/locale/da-dk/vocabulary/date-time/relative-time.voc
similarity index 100%
rename from vocab/da-dk/RelativeTime.voc
rename to locale/da-dk/vocabulary/date-time/relative-time.voc
diff --git a/vocab/da-dk/Today.voc b/locale/da-dk/vocabulary/date-time/today.voc
similarity index 100%
rename from vocab/da-dk/Today.voc
rename to locale/da-dk/vocabulary/date-time/today.voc
diff --git a/vocab/da-dk/Week.voc b/locale/da-dk/vocabulary/date-time/week.voc
similarity index 100%
rename from vocab/da-dk/Week.voc
rename to locale/da-dk/vocabulary/date-time/week.voc
diff --git a/vocab/da-dk/Weekend.voc b/locale/da-dk/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/da-dk/Weekend.voc
rename to locale/da-dk/vocabulary/date-time/weekend.voc
diff --git a/vocab/da-dk/ConfirmQueryCurrent.voc b/locale/da-dk/vocabulary/query/confirm-query-current.voc
similarity index 100%
rename from vocab/da-dk/ConfirmQueryCurrent.voc
rename to locale/da-dk/vocabulary/query/confirm-query-current.voc
diff --git a/vocab/da-dk/ConfirmQueryFuture.voc b/locale/da-dk/vocabulary/query/confirm-query-future.voc
similarity index 100%
rename from vocab/da-dk/ConfirmQueryFuture.voc
rename to locale/da-dk/vocabulary/query/confirm-query-future.voc
diff --git a/vocab/da-dk/ConfirmQuery.voc b/locale/da-dk/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/da-dk/ConfirmQuery.voc
rename to locale/da-dk/vocabulary/query/confirm-query.voc
diff --git a/vocab/da-dk/How.voc b/locale/da-dk/vocabulary/query/how.voc
similarity index 100%
rename from vocab/da-dk/How.voc
rename to locale/da-dk/vocabulary/query/how.voc
diff --git a/vocab/da-dk/Query.voc b/locale/da-dk/vocabulary/query/query.voc
similarity index 100%
rename from vocab/da-dk/Query.voc
rename to locale/da-dk/vocabulary/query/query.voc
diff --git a/vocab/da-dk/When.voc b/locale/da-dk/vocabulary/query/when.voc
similarity index 100%
rename from vocab/da-dk/When.voc
rename to locale/da-dk/vocabulary/query/when.voc
diff --git a/vocab/da-dk/Cold.voc b/locale/da-dk/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/da-dk/Cold.voc
rename to locale/da-dk/vocabulary/temperature/cold.voc
diff --git a/vocab/da-dk/High.voc b/locale/da-dk/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/da-dk/High.voc
rename to locale/da-dk/vocabulary/temperature/high.voc
diff --git a/vocab/da-dk/Hot.voc b/locale/da-dk/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/da-dk/Hot.voc
rename to locale/da-dk/vocabulary/temperature/hot.voc
diff --git a/vocab/da-dk/Low.voc b/locale/da-dk/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/da-dk/Low.voc
rename to locale/da-dk/vocabulary/temperature/low.voc
diff --git a/vocab/da-dk/Temperature.voc b/locale/da-dk/vocabulary/temperature/temperature.voc
similarity index 100%
rename from vocab/da-dk/Temperature.voc
rename to locale/da-dk/vocabulary/temperature/temperature.voc
diff --git a/vocab/da-dk/Fahrenheit.voc b/locale/da-dk/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from vocab/da-dk/Fahrenheit.voc
rename to locale/da-dk/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/da-dk/Unit.entity b/locale/da-dk/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/da-dk/Unit.entity
rename to locale/da-dk/vocabulary/unit/unit.entity
diff --git a/vocab/da-dk/Unit.voc b/locale/da-dk/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/da-dk/Unit.voc
rename to locale/da-dk/vocabulary/unit/unit.voc
diff --git a/vocab/da-dk/Weather.voc b/locale/da-dk/weather.voc
similarity index 100%
rename from vocab/da-dk/Weather.voc
rename to locale/da-dk/weather.voc
diff --git a/dialog/de-de/and.dialog b/locale/de-de/dialog/and.dialog
similarity index 100%
rename from dialog/de-de/and.dialog
rename to locale/de-de/dialog/and.dialog
diff --git a/dialog/de-de/clear sky.dialog b/locale/de-de/dialog/condition/clear sky.dialog
similarity index 100%
rename from dialog/de-de/clear sky.dialog
rename to locale/de-de/dialog/condition/clear sky.dialog
diff --git a/dialog/de-de/clear.dialog b/locale/de-de/dialog/condition/clear.dialog
similarity index 100%
rename from dialog/de-de/clear.dialog
rename to locale/de-de/dialog/condition/clear.dialog
diff --git a/dialog/de-de/no precipitation expected.dialog b/locale/de-de/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/de-de/no precipitation expected.dialog
rename to locale/de-de/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/de-de/precipitation expected.dialog b/locale/de-de/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/de-de/precipitation expected.dialog
rename to locale/de-de/dialog/condition/precipitation expected.dialog
diff --git a/dialog/de-de/rain.dialog b/locale/de-de/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/de-de/rain.dialog
rename to locale/de-de/dialog/condition/rain.dialog
diff --git a/dialog/de-de/snow.dialog b/locale/de-de/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/de-de/snow.dialog
rename to locale/de-de/dialog/condition/snow.dialog
diff --git a/dialog/de-de/storm.dialog b/locale/de-de/dialog/condition/thunderstorm.dialog
similarity index 100%
rename from dialog/de-de/storm.dialog
rename to locale/de-de/dialog/condition/thunderstorm.dialog
diff --git a/dialog/de-de/local.affirmative.condition.dialog b/locale/de-de/dialog/current/current-condition-expected-local.dialog
similarity index 100%
rename from dialog/de-de/local.affirmative.condition.dialog
rename to locale/de-de/dialog/current/current-condition-expected-local.dialog
diff --git a/dialog/de-de/affirmative.condition.dialog b/locale/de-de/dialog/current/current-condition-expected-location.dialog
similarity index 100%
rename from dialog/de-de/affirmative.condition.dialog
rename to locale/de-de/dialog/current/current-condition-expected-location.dialog
diff --git a/dialog/de-de/humidity.dialog b/locale/de-de/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/de-de/humidity.dialog
rename to locale/de-de/dialog/current/current-humidity-location.dialog
diff --git a/dialog/de-de/current.local.high.temperature.dialog b/locale/de-de/dialog/current/current-temperature-high-local.dialog
similarity index 100%
rename from dialog/de-de/current.local.high.temperature.dialog
rename to locale/de-de/dialog/current/current-temperature-high-local.dialog
diff --git a/dialog/de-de/current.high.temperature.dialog b/locale/de-de/dialog/current/current-temperature-high-location.dialog
similarity index 100%
rename from dialog/de-de/current.high.temperature.dialog
rename to locale/de-de/dialog/current/current-temperature-high-location.dialog
diff --git a/dialog/de-de/min.max.dialog b/locale/de-de/dialog/current/current-temperature-high-low.dialog
similarity index 100%
rename from dialog/de-de/min.max.dialog
rename to locale/de-de/dialog/current/current-temperature-high-low.dialog
diff --git a/dialog/de-de/current.local.temperature.dialog b/locale/de-de/dialog/current/current-temperature-local.dialog
similarity index 100%
rename from dialog/de-de/current.local.temperature.dialog
rename to locale/de-de/dialog/current/current-temperature-local.dialog
diff --git a/dialog/de-de/current.temperature.dialog b/locale/de-de/dialog/current/current-temperature-location.dialog
similarity index 100%
rename from dialog/de-de/current.temperature.dialog
rename to locale/de-de/dialog/current/current-temperature-location.dialog
diff --git a/dialog/de-de/current.local.low.temperature.dialog b/locale/de-de/dialog/current/current-temperature-low-local.dialog
similarity index 100%
rename from dialog/de-de/current.local.low.temperature.dialog
rename to locale/de-de/dialog/current/current-temperature-low-local.dialog
diff --git a/dialog/de-de/current.low.temperature.dialog b/locale/de-de/dialog/current/current-temperature-low-location.dialog
similarity index 100%
rename from dialog/de-de/current.low.temperature.dialog
rename to locale/de-de/dialog/current/current-temperature-low-location.dialog
diff --git a/dialog/de-de/current.local.weather.dialog b/locale/de-de/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/de-de/current.local.weather.dialog
rename to locale/de-de/dialog/current/current-weather-local.dialog
diff --git a/dialog/de-de/current.weather.dialog b/locale/de-de/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/de-de/current.weather.dialog
rename to locale/de-de/dialog/current/current-weather-location.dialog
diff --git a/dialog/de-de/local.light.wind.dialog b/locale/de-de/dialog/current/current-wind-light-local.dialog
similarity index 100%
rename from dialog/de-de/local.light.wind.dialog
rename to locale/de-de/dialog/current/current-wind-light-local.dialog
diff --git a/dialog/de-de/light.wind.dialog b/locale/de-de/dialog/current/current-wind-light-location.dialog
similarity index 100%
rename from dialog/de-de/light.wind.dialog
rename to locale/de-de/dialog/current/current-wind-light-location.dialog
diff --git a/dialog/de-de/local.medium.wind.dialog b/locale/de-de/dialog/current/current-wind-moderate-local.dialog
similarity index 100%
rename from dialog/de-de/local.medium.wind.dialog
rename to locale/de-de/dialog/current/current-wind-moderate-local.dialog
diff --git a/dialog/de-de/medium.wind.dialog b/locale/de-de/dialog/current/current-wind-moderate-location.dialog
similarity index 100%
rename from dialog/de-de/medium.wind.dialog
rename to locale/de-de/dialog/current/current-wind-moderate-location.dialog
diff --git a/dialog/de-de/local.hard.wind.dialog b/locale/de-de/dialog/current/current-wind-strong-local.dialog
similarity index 100%
rename from dialog/de-de/local.hard.wind.dialog
rename to locale/de-de/dialog/current/current-wind-strong-local.dialog
diff --git a/dialog/de-de/hard.wind.dialog b/locale/de-de/dialog/current/current-wind-strong-location.dialog
similarity index 100%
rename from dialog/de-de/hard.wind.dialog
rename to locale/de-de/dialog/current/current-wind-strong-location.dialog
diff --git a/dialog/de-de/forecast.local.affirmative.condition.dialog b/locale/de-de/dialog/daily/daily-condition-expected-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.affirmative.condition.dialog
rename to locale/de-de/dialog/daily/daily-condition-expected-local.dialog
diff --git a/dialog/de-de/forecast.affirmative.condition.dialog b/locale/de-de/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.affirmative.condition.dialog
rename to locale/de-de/dialog/daily/daily-condition-expected-location.dialog
diff --git a/dialog/de-de/forecast.local.high.temperature.dialog b/locale/de-de/dialog/daily/daily-temperature-high-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.high.temperature.dialog
rename to locale/de-de/dialog/daily/daily-temperature-high-local.dialog
diff --git a/dialog/de-de/forecast.high.temperature.dialog b/locale/de-de/dialog/daily/daily-temperature-high-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.high.temperature.dialog
rename to locale/de-de/dialog/daily/daily-temperature-high-location.dialog
diff --git a/dialog/de-de/forecast.local.temperature.dialog b/locale/de-de/dialog/daily/daily-temperature-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.temperature.dialog
rename to locale/de-de/dialog/daily/daily-temperature-local.dialog
diff --git a/dialog/de-de/forecast.temperature.dialog b/locale/de-de/dialog/daily/daily-temperature-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.temperature.dialog
rename to locale/de-de/dialog/daily/daily-temperature-location.dialog
diff --git a/dialog/de-de/forecast.local.low.temperature.dialog b/locale/de-de/dialog/daily/daily-temperature-low-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.low.temperature.dialog
rename to locale/de-de/dialog/daily/daily-temperature-low-local.dialog
diff --git a/dialog/de-de/forecast.low.temperature.dialog b/locale/de-de/dialog/daily/daily-temperature-low-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.low.temperature.dialog
rename to locale/de-de/dialog/daily/daily-temperature-low-location.dialog
diff --git a/dialog/de-de/forecast.local.weather.dialog b/locale/de-de/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.weather.dialog
rename to locale/de-de/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/de-de/forecast.weather.dialog b/locale/de-de/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.weather.dialog
rename to locale/de-de/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/de-de/forecast.local.light.wind.dialog b/locale/de-de/dialog/daily/daily-wind-light-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.light.wind.dialog
rename to locale/de-de/dialog/daily/daily-wind-light-local.dialog
diff --git a/dialog/de-de/forecast.light.wind.dialog b/locale/de-de/dialog/daily/daily-wind-light-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.light.wind.dialog
rename to locale/de-de/dialog/daily/daily-wind-light-location.dialog
diff --git a/dialog/de-de/forecast.local.medium.wind.dialog b/locale/de-de/dialog/daily/daily-wind-moderate-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.medium.wind.dialog
rename to locale/de-de/dialog/daily/daily-wind-moderate-local.dialog
diff --git a/dialog/de-de/forecast.medium.wind.dialog b/locale/de-de/dialog/daily/daily-wind-moderate-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.medium.wind.dialog
rename to locale/de-de/dialog/daily/daily-wind-moderate-location.dialog
diff --git a/dialog/de-de/forecast.local.hard.wind.dialog b/locale/de-de/dialog/daily/daily-wind-strong-local.dialog
similarity index 100%
rename from dialog/de-de/forecast.local.hard.wind.dialog
rename to locale/de-de/dialog/daily/daily-wind-strong-local.dialog
diff --git a/dialog/de-de/forecast.hard.wind.dialog b/locale/de-de/dialog/daily/daily-wind-strong-location.dialog
similarity index 100%
rename from dialog/de-de/forecast.hard.wind.dialog
rename to locale/de-de/dialog/daily/daily-wind-strong-location.dialog
diff --git a/dialog/de-de/E.dialog b/locale/de-de/dialog/direction/east.dialog
similarity index 100%
rename from dialog/de-de/E.dialog
rename to locale/de-de/dialog/direction/east.dialog
diff --git a/dialog/de-de/N.dialog b/locale/de-de/dialog/direction/north.dialog
similarity index 100%
rename from dialog/de-de/N.dialog
rename to locale/de-de/dialog/direction/north.dialog
diff --git a/dialog/de-de/NE.dialog b/locale/de-de/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/de-de/NE.dialog
rename to locale/de-de/dialog/direction/northeast.dialog
diff --git a/dialog/de-de/NW.dialog b/locale/de-de/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/de-de/NW.dialog
rename to locale/de-de/dialog/direction/northwest.dialog
diff --git a/dialog/de-de/S.dialog b/locale/de-de/dialog/direction/south.dialog
similarity index 100%
rename from dialog/de-de/S.dialog
rename to locale/de-de/dialog/direction/south.dialog
diff --git a/dialog/de-de/SE.dialog b/locale/de-de/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/de-de/SE.dialog
rename to locale/de-de/dialog/direction/southeast.dialog
diff --git a/dialog/de-de/SW.dialog b/locale/de-de/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/de-de/SW.dialog
rename to locale/de-de/dialog/direction/southwest.dialog
diff --git a/dialog/de-de/W.dialog b/locale/de-de/dialog/direction/west.dialog
similarity index 100%
rename from dialog/de-de/W.dialog
rename to locale/de-de/dialog/direction/west.dialog
diff --git a/dialog/de-de/cant.get.forecast.dialog b/locale/de-de/dialog/error/cant-get-forecast.dialog
similarity index 100%
rename from dialog/de-de/cant.get.forecast.dialog
rename to locale/de-de/dialog/error/cant-get-forecast.dialog
diff --git a/dialog/de-de/location.not.found.dialog b/locale/de-de/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/de-de/location.not.found.dialog
rename to locale/de-de/dialog/error/location-not-found.dialog
diff --git a/dialog/de-de/no.forecast.dialog b/locale/de-de/dialog/error/no-forecast.dialog
similarity index 100%
rename from dialog/de-de/no.forecast.dialog
rename to locale/de-de/dialog/error/no-forecast.dialog
diff --git a/dialog/de-de/at.time.local.cond.alternative.dialog b/locale/de-de/dialog/hourly/hourly-condition-alternative-local.dialog
similarity index 100%
rename from dialog/de-de/at.time.local.cond.alternative.dialog
rename to locale/de-de/dialog/hourly/hourly-condition-alternative-local.dialog
diff --git a/dialog/de-de/at.time.cond.alternative.dialog b/locale/de-de/dialog/hourly/hourly-condition-alternative-location.dialog
similarity index 100%
rename from dialog/de-de/at.time.cond.alternative.dialog
rename to locale/de-de/dialog/hourly/hourly-condition-alternative-location.dialog
diff --git a/dialog/de-de/at.time.local.affirmative.condition.dialog b/locale/de-de/dialog/hourly/hourly-condition-expected-local.dialog
similarity index 100%
rename from dialog/de-de/at.time.local.affirmative.condition.dialog
rename to locale/de-de/dialog/hourly/hourly-condition-expected-local.dialog
diff --git a/dialog/de-de/at.time.affirmative.condition.dialog b/locale/de-de/dialog/hourly/hourly-condition-expected-location.dialog
similarity index 100%
rename from dialog/de-de/at.time.affirmative.condition.dialog
rename to locale/de-de/dialog/hourly/hourly-condition-expected-location.dialog
diff --git a/dialog/de-de/at.time.local.no.cond.predicted.dialog b/locale/de-de/dialog/hourly/hourly-condition-not-expected-local.dialog
similarity index 100%
rename from dialog/de-de/at.time.local.no.cond.predicted.dialog
rename to locale/de-de/dialog/hourly/hourly-condition-not-expected-local.dialog
diff --git a/dialog/de-de/at.time.no.cond.predicted.dialog b/locale/de-de/dialog/hourly/hourly-condition-not-expected-location.dialog
similarity index 100%
rename from dialog/de-de/at.time.no.cond.predicted.dialog
rename to locale/de-de/dialog/hourly/hourly-condition-not-expected-location.dialog
diff --git a/dialog/de-de/at.time.local.temperature.dialog b/locale/de-de/dialog/hourly/hourly-temperature-local.dialog
similarity index 100%
rename from dialog/de-de/at.time.local.temperature.dialog
rename to locale/de-de/dialog/hourly/hourly-temperature-local.dialog
diff --git a/dialog/de-de/hour.local.weather.dialog b/locale/de-de/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/de-de/hour.local.weather.dialog
rename to locale/de-de/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/de-de/hour.weather.dialog b/locale/de-de/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/de-de/hour.weather.dialog
rename to locale/de-de/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/de-de/percentage.number.dialog b/locale/de-de/dialog/percentage-number.dialog
similarity index 100%
rename from dialog/de-de/percentage.number.dialog
rename to locale/de-de/dialog/percentage-number.dialog
diff --git a/dialog/de-de/celsius.dialog b/locale/de-de/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/de-de/celsius.dialog
rename to locale/de-de/dialog/unit/celsius.dialog
diff --git a/dialog/de-de/fahrenheit.dialog b/locale/de-de/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/de-de/fahrenheit.dialog
rename to locale/de-de/dialog/unit/fahrenheit.dialog
diff --git a/dialog/de-de/meters per second.dialog b/locale/de-de/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/de-de/meters per second.dialog
rename to locale/de-de/dialog/unit/meters per second.dialog
diff --git a/dialog/de-de/miles per hour.dialog b/locale/de-de/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/de-de/miles per hour.dialog
rename to locale/de-de/dialog/unit/miles per hour.dialog
diff --git a/dialog/de-de/weekly.temp.range.dialog b/locale/de-de/dialog/weekly/weekly-temperature.dialog
similarity index 100%
rename from dialog/de-de/weekly.temp.range.dialog
rename to locale/de-de/dialog/weekly/weekly-temperature.dialog
diff --git a/vocab/de-de/do.i.need.an.umbrella.intent b/locale/de-de/do.i.need.an.umbrella.intent
similarity index 100%
rename from vocab/de-de/do.i.need.an.umbrella.intent
rename to locale/de-de/do.i.need.an.umbrella.intent
diff --git a/vocab/de-de/Forecast.voc b/locale/de-de/forecast.voc
similarity index 100%
rename from vocab/de-de/Forecast.voc
rename to locale/de-de/forecast.voc
diff --git a/vocab/de-de/Location.voc b/locale/de-de/location.voc
similarity index 100%
rename from vocab/de-de/Location.voc
rename to locale/de-de/location.voc
diff --git a/regex/de-de/location.rx b/locale/de-de/regex/location.rx
similarity index 100%
rename from regex/de-de/location.rx
rename to locale/de-de/regex/location.rx
diff --git a/vocab/de-de/Sunrise.voc b/locale/de-de/sunrise.voc
similarity index 100%
rename from vocab/de-de/Sunrise.voc
rename to locale/de-de/sunrise.voc
diff --git a/vocab/de-de/Sunset.voc b/locale/de-de/sunset.voc
similarity index 100%
rename from vocab/de-de/Sunset.voc
rename to locale/de-de/sunset.voc
diff --git a/vocab/de-de/Clear.voc b/locale/de-de/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/de-de/Clear.voc
rename to locale/de-de/vocabulary/condition/clear.voc
diff --git a/vocab/de-de/Cloudy.voc b/locale/de-de/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/de-de/Cloudy.voc
rename to locale/de-de/vocabulary/condition/clouds.voc
diff --git a/vocab/de-de/Foggy.voc b/locale/de-de/vocabulary/condition/fog.voc
similarity index 100%
rename from vocab/de-de/Foggy.voc
rename to locale/de-de/vocabulary/condition/fog.voc
diff --git a/vocab/de-de/Humidity.voc b/locale/de-de/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/de-de/Humidity.voc
rename to locale/de-de/vocabulary/condition/humidity.voc
diff --git a/vocab/de-de/Precipitation.voc b/locale/de-de/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/de-de/Precipitation.voc
rename to locale/de-de/vocabulary/condition/precipitation.voc
diff --git a/vocab/de-de/Raining.voc b/locale/de-de/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/de-de/Raining.voc
rename to locale/de-de/vocabulary/condition/rain.voc
diff --git a/vocab/de-de/Snowing.voc b/locale/de-de/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/de-de/Snowing.voc
rename to locale/de-de/vocabulary/condition/snow.voc
diff --git a/vocab/de-de/Storm.voc b/locale/de-de/vocabulary/condition/thunderstorm.voc
similarity index 100%
rename from vocab/de-de/Storm.voc
rename to locale/de-de/vocabulary/condition/thunderstorm.voc
diff --git a/vocab/de-de/Windy.voc b/locale/de-de/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/de-de/Windy.voc
rename to locale/de-de/vocabulary/condition/windy.voc
diff --git a/vocab/de-de/Couple.voc b/locale/de-de/vocabulary/date-time/couple.voc
similarity index 100%
rename from vocab/de-de/Couple.voc
rename to locale/de-de/vocabulary/date-time/couple.voc
diff --git a/vocab/de-de/Later.voc b/locale/de-de/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/de-de/Later.voc
rename to locale/de-de/vocabulary/date-time/later.voc
diff --git a/vocab/de-de/Next.voc b/locale/de-de/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/de-de/Next.voc
rename to locale/de-de/vocabulary/date-time/next.voc
diff --git a/vocab/de-de/Now.voc b/locale/de-de/vocabulary/date-time/now.voc
similarity index 100%
rename from vocab/de-de/Now.voc
rename to locale/de-de/vocabulary/date-time/now.voc
diff --git a/vocab/de-de/RelativeDay.voc b/locale/de-de/vocabulary/date-time/relative-day.voc
similarity index 100%
rename from vocab/de-de/RelativeDay.voc
rename to locale/de-de/vocabulary/date-time/relative-day.voc
diff --git a/vocab/de-de/RelativeTime.voc b/locale/de-de/vocabulary/date-time/relative-time.voc
similarity index 100%
rename from vocab/de-de/RelativeTime.voc
rename to locale/de-de/vocabulary/date-time/relative-time.voc
diff --git a/vocab/de-de/Today.voc b/locale/de-de/vocabulary/date-time/today.voc
similarity index 100%
rename from vocab/de-de/Today.voc
rename to locale/de-de/vocabulary/date-time/today.voc
diff --git a/vocab/de-de/Week.voc b/locale/de-de/vocabulary/date-time/week.voc
similarity index 100%
rename from vocab/de-de/Week.voc
rename to locale/de-de/vocabulary/date-time/week.voc
diff --git a/vocab/de-de/Weekend.voc b/locale/de-de/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/de-de/Weekend.voc
rename to locale/de-de/vocabulary/date-time/weekend.voc
diff --git a/vocab/de-de/ConfirmQueryCurrent.voc b/locale/de-de/vocabulary/query/confirm-query-current.voc
similarity index 100%
rename from vocab/de-de/ConfirmQueryCurrent.voc
rename to locale/de-de/vocabulary/query/confirm-query-current.voc
diff --git a/vocab/de-de/ConfirmQueryFuture.voc b/locale/de-de/vocabulary/query/confirm-query-future.voc
similarity index 100%
rename from vocab/de-de/ConfirmQueryFuture.voc
rename to locale/de-de/vocabulary/query/confirm-query-future.voc
diff --git a/vocab/de-de/ConfirmQuery.voc b/locale/de-de/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/de-de/ConfirmQuery.voc
rename to locale/de-de/vocabulary/query/confirm-query.voc
diff --git a/vocab/de-de/How.voc b/locale/de-de/vocabulary/query/how.voc
similarity index 100%
rename from vocab/de-de/How.voc
rename to locale/de-de/vocabulary/query/how.voc
diff --git a/vocab/de-de/Query.voc b/locale/de-de/vocabulary/query/query.voc
similarity index 100%
rename from vocab/de-de/Query.voc
rename to locale/de-de/vocabulary/query/query.voc
diff --git a/vocab/de-de/When.voc b/locale/de-de/vocabulary/query/when.voc
similarity index 100%
rename from vocab/de-de/When.voc
rename to locale/de-de/vocabulary/query/when.voc
diff --git a/vocab/de-de/Cold.voc b/locale/de-de/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/de-de/Cold.voc
rename to locale/de-de/vocabulary/temperature/cold.voc
diff --git a/vocab/de-de/High.voc b/locale/de-de/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/de-de/High.voc
rename to locale/de-de/vocabulary/temperature/high.voc
diff --git a/vocab/de-de/Hot.voc b/locale/de-de/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/de-de/Hot.voc
rename to locale/de-de/vocabulary/temperature/hot.voc
diff --git a/vocab/de-de/Low.voc b/locale/de-de/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/de-de/Low.voc
rename to locale/de-de/vocabulary/temperature/low.voc
diff --git a/vocab/de-de/Temperature.voc b/locale/de-de/vocabulary/temperature/temperature.voc
similarity index 100%
rename from vocab/de-de/Temperature.voc
rename to locale/de-de/vocabulary/temperature/temperature.voc
diff --git a/dialog/nl-nl/fahrenheit.dialog b/locale/de-de/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from dialog/nl-nl/fahrenheit.dialog
rename to locale/de-de/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/de-de/Unit.entity b/locale/de-de/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/de-de/Unit.entity
rename to locale/de-de/vocabulary/unit/unit.entity
diff --git a/vocab/de-de/Unit.voc b/locale/de-de/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/de-de/Unit.voc
rename to locale/de-de/vocabulary/unit/unit.voc
diff --git a/vocab/de-de/Weather.voc b/locale/de-de/weather.voc
similarity index 100%
rename from vocab/de-de/Weather.voc
rename to locale/de-de/weather.voc
diff --git a/locale/en-us/dialog/and.dialog b/locale/en-us/dialog/and.dialog
new file mode 100644
index 00000000..e8c07838
--- /dev/null
+++ b/locale/en-us/dialog/and.dialog
@@ -0,0 +1 @@
+and
diff --git a/dialog/en-us/clear sky.dialog b/locale/en-us/dialog/condition/clear-sky.dialog
similarity index 100%
rename from dialog/en-us/clear sky.dialog
rename to locale/en-us/dialog/condition/clear-sky.dialog
diff --git a/dialog/en-us/clear.dialog b/locale/en-us/dialog/condition/clear.dialog
similarity index 100%
rename from dialog/en-us/clear.dialog
rename to locale/en-us/dialog/condition/clear.dialog
diff --git a/locale/en-us/dialog/condition/clouds.dialog b/locale/en-us/dialog/condition/clouds.dialog
new file mode 100644
index 00000000..487078d1
--- /dev/null
+++ b/locale/en-us/dialog/condition/clouds.dialog
@@ -0,0 +1 @@
+clouds
diff --git a/dialog/en-us/humidity.dialog b/locale/en-us/dialog/condition/humidity.dialog
similarity index 100%
rename from dialog/en-us/humidity.dialog
rename to locale/en-us/dialog/condition/humidity.dialog
diff --git a/dialog/en-us/rain.dialog b/locale/en-us/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/en-us/rain.dialog
rename to locale/en-us/dialog/condition/rain.dialog
diff --git a/dialog/en-us/snow.dialog b/locale/en-us/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/en-us/snow.dialog
rename to locale/en-us/dialog/condition/snow.dialog
diff --git a/locale/en-us/dialog/condition/thunderstorm.dialog b/locale/en-us/dialog/condition/thunderstorm.dialog
new file mode 100644
index 00000000..15750d69
--- /dev/null
+++ b/locale/en-us/dialog/condition/thunderstorm.dialog
@@ -0,0 +1 @@
+storms
diff --git a/dialog/en-us/local.affirmative.condition.dialog b/locale/en-us/dialog/current/current-condition-expected-local.dialog
similarity index 64%
rename from dialog/en-us/local.affirmative.condition.dialog
rename to locale/en-us/dialog/current/current-condition-expected-local.dialog
index b8ad6597..e2506105 100644
--- a/dialog/en-us/local.affirmative.condition.dialog
+++ b/locale/en-us/dialog/current/current-condition-expected-local.dialog
@@ -1,2 +1,3 @@
# The queried condition will occur today
Yes, it is going to be {condition} today
+It looks like there will be {condition} today
diff --git a/dialog/en-us/affirmative.condition.dialog b/locale/en-us/dialog/current/current-condition-expected-location.dialog
similarity index 57%
rename from dialog/en-us/affirmative.condition.dialog
rename to locale/en-us/dialog/current/current-condition-expected-location.dialog
index 93a8af0f..35fb0677 100644
--- a/dialog/en-us/affirmative.condition.dialog
+++ b/locale/en-us/dialog/current/current-condition-expected-location.dialog
@@ -1,2 +1,3 @@
# The queried condition will occur
Yes, it is going to be {condition} in {location}
+In {location}, it looks like there will be {condition} today
diff --git a/locale/en-us/dialog/current/current-condition-not-expected-local.dialog b/locale/en-us/dialog/current/current-condition-not-expected-local.dialog
new file mode 100644
index 00000000..fa678544
--- /dev/null
+++ b/locale/en-us/dialog/current/current-condition-not-expected-local.dialog
@@ -0,0 +1,3 @@
+# Informing that an the requested condition is not in the forecast
+No, the forecast calls for {condition} today
+No, {condition} is expected today
diff --git a/locale/en-us/dialog/current/current-condition-not-expected-location.dialog b/locale/en-us/dialog/current/current-condition-not-expected-location.dialog
new file mode 100644
index 00000000..da5a406e
--- /dev/null
+++ b/locale/en-us/dialog/current/current-condition-not-expected-location.dialog
@@ -0,0 +1,3 @@
+# Informing that an the requested condition is not in the forecast
+No, the forecast calls for {condition} today in {location}
+No, in {location} {condition} is expected today
diff --git a/locale/en-us/dialog/current/current-humidity-local.dialog b/locale/en-us/dialog/current/current-humidity-local.dialog
new file mode 100644
index 00000000..1c3cf997
--- /dev/null
+++ b/locale/en-us/dialog/current/current-humidity-local.dialog
@@ -0,0 +1 @@
+Currently, the humidity is {percent}
diff --git a/locale/en-us/dialog/current/current-humidity-location.dialog b/locale/en-us/dialog/current/current-humidity-location.dialog
new file mode 100644
index 00000000..5e9b9fb3
--- /dev/null
+++ b/locale/en-us/dialog/current/current-humidity-location.dialog
@@ -0,0 +1 @@
+Currently, the humidity in {location} is {percent}
diff --git a/locale/en-us/dialog/current/current-sunrise-future-local.dialog b/locale/en-us/dialog/current/current-sunrise-future-local.dialog
new file mode 100644
index 00000000..59405362
--- /dev/null
+++ b/locale/en-us/dialog/current/current-sunrise-future-local.dialog
@@ -0,0 +1,2 @@
+the sun will rise at {time} today
+sunrise will be at {time} today
diff --git a/locale/en-us/dialog/current/current-sunrise-future-location.dialog b/locale/en-us/dialog/current/current-sunrise-future-location.dialog
new file mode 100644
index 00000000..81a9fe72
--- /dev/null
+++ b/locale/en-us/dialog/current/current-sunrise-future-location.dialog
@@ -0,0 +1,2 @@
+the sun rose at {time} today in {location}
+sunrise was at {time} today in {location}
diff --git a/dialog/en-us/sunrise.dialog b/locale/en-us/dialog/current/current-sunrise-past-local.dialog
similarity index 100%
rename from dialog/en-us/sunrise.dialog
rename to locale/en-us/dialog/current/current-sunrise-past-local.dialog
diff --git a/locale/en-us/dialog/current/current-sunrise-past-location.dialog b/locale/en-us/dialog/current/current-sunrise-past-location.dialog
new file mode 100644
index 00000000..81a9fe72
--- /dev/null
+++ b/locale/en-us/dialog/current/current-sunrise-past-location.dialog
@@ -0,0 +1,2 @@
+the sun rose at {time} today in {location}
+sunrise was at {time} today in {location}
diff --git a/dialog/en-us/sunset.dialog b/locale/en-us/dialog/current/current-sunset-future-local.dialog
similarity index 100%
rename from dialog/en-us/sunset.dialog
rename to locale/en-us/dialog/current/current-sunset-future-local.dialog
diff --git a/locale/en-us/dialog/current/current-sunset-future-location.dialog b/locale/en-us/dialog/current/current-sunset-future-location.dialog
new file mode 100644
index 00000000..46a732c9
--- /dev/null
+++ b/locale/en-us/dialog/current/current-sunset-future-location.dialog
@@ -0,0 +1,3 @@
+the sun will set at {time} today in {location}
+in {location} the sun will go down at {time} today
+sunset will be at {time} today in {location}
diff --git a/locale/en-us/dialog/current/current-sunset-past-local.dialog b/locale/en-us/dialog/current/current-sunset-past-local.dialog
new file mode 100644
index 00000000..e8987e39
--- /dev/null
+++ b/locale/en-us/dialog/current/current-sunset-past-local.dialog
@@ -0,0 +1,3 @@
+the sun set at {time} today
+the sun went down at {time} today
+sunset was at {time} today
diff --git a/locale/en-us/dialog/current/current-sunset-past-location.dialog b/locale/en-us/dialog/current/current-sunset-past-location.dialog
new file mode 100644
index 00000000..bc24bede
--- /dev/null
+++ b/locale/en-us/dialog/current/current-sunset-past-location.dialog
@@ -0,0 +1,3 @@
+the sun set at {time} today in {location}
+in {location} the sun went down at {time} today
+sunset was at {time} today in {location}
diff --git a/locale/en-us/dialog/current/current-temperature-high-local.dialog b/locale/en-us/dialog/current/current-temperature-high-local.dialog
new file mode 100644
index 00000000..a4e3c12c
--- /dev/null
+++ b/locale/en-us/dialog/current/current-temperature-high-local.dialog
@@ -0,0 +1,4 @@
+A high of {temperature} degrees {temperature_unit} is expected.
+A high of {temperature} degrees can be expected.
+Today the temperature will reach {temperature} degrees.
+
diff --git a/locale/en-us/dialog/current/current-temperature-high-location.dialog b/locale/en-us/dialog/current/current-temperature-high-location.dialog
new file mode 100644
index 00000000..a9a40040
--- /dev/null
+++ b/locale/en-us/dialog/current/current-temperature-high-location.dialog
@@ -0,0 +1,4 @@
+A high of {temperature} degrees {temperature_unit} is expected in {location}.
+A high of {temperature} degrees can be expected in {location}.
+Today a the temperature will reach {temperature} degrees in {location}.
+
diff --git a/locale/en-us/dialog/current/current-temperature-high-low.dialog b/locale/en-us/dialog/current/current-temperature-high-low.dialog
new file mode 100644
index 00000000..9b88dc9f
--- /dev/null
+++ b/locale/en-us/dialog/current/current-temperature-high-low.dialog
@@ -0,0 +1 @@
+Today's forecast is for a high of {high_temperature} and a low of {low_temperature}.
diff --git a/locale/en-us/dialog/current/current-temperature-local.dialog b/locale/en-us/dialog/current/current-temperature-local.dialog
new file mode 100644
index 00000000..e01594ba
--- /dev/null
+++ b/locale/en-us/dialog/current/current-temperature-local.dialog
@@ -0,0 +1,4 @@
+It's currently {temperature} degrees {temperature_unit}.
+It's currently {temperature} degrees.
+Right now, it's {temperature} degrees.
+
diff --git a/locale/en-us/dialog/current/current-temperature-location.dialog b/locale/en-us/dialog/current/current-temperature-location.dialog
new file mode 100644
index 00000000..7cd53599
--- /dev/null
+++ b/locale/en-us/dialog/current/current-temperature-location.dialog
@@ -0,0 +1,4 @@
+It's currently {temperature} degrees {temperature_unit} in {location}.
+It's currently {temperature} degrees in {location}.
+Right now, it's {temperature} degrees in {location}.
+
diff --git a/locale/en-us/dialog/current/current-temperature-low-local.dialog b/locale/en-us/dialog/current/current-temperature-low-local.dialog
new file mode 100644
index 00000000..4388ed1d
--- /dev/null
+++ b/locale/en-us/dialog/current/current-temperature-low-local.dialog
@@ -0,0 +1,4 @@
+A low of {temperature} degrees {temperature_unit} is expected.
+A low of {temperature} degrees can be expected.
+Today it will be as low as {temperature} degrees.
+
diff --git a/locale/en-us/dialog/current/current-temperature-low-location.dialog b/locale/en-us/dialog/current/current-temperature-low-location.dialog
new file mode 100644
index 00000000..72d6b4db
--- /dev/null
+++ b/locale/en-us/dialog/current/current-temperature-low-location.dialog
@@ -0,0 +1,2 @@
+Today the temperature will be as low as {temperature} degrees {temperature_unit} in {location}.
+Temperatures can be as low as {temperature} degrees in {location}.
diff --git a/locale/en-us/dialog/current/current-weather-local.dialog b/locale/en-us/dialog/current/current-weather-local.dialog
new file mode 100644
index 00000000..ee85a282
--- /dev/null
+++ b/locale/en-us/dialog/current/current-weather-local.dialog
@@ -0,0 +1,3 @@
+It's currently {condition} and {temperature} degrees {temperature_unit}.
+It's currently {condition} and {temperature} degrees.
+Right now, it's {condition} and {temperature} degrees.
diff --git a/locale/en-us/dialog/current/current-weather-location.dialog b/locale/en-us/dialog/current/current-weather-location.dialog
new file mode 100644
index 00000000..7453f380
--- /dev/null
+++ b/locale/en-us/dialog/current/current-weather-location.dialog
@@ -0,0 +1,3 @@
+It's currently {condition} and {temperature} degrees {temperature_unit} in {location}.
+Right now, it's {condition} and {temperature} degrees in {location}.
+{location} has {condition} and is currently {temperature} degrees.
diff --git a/locale/en-us/dialog/current/current-wind-light-local.dialog b/locale/en-us/dialog/current/current-wind-light-local.dialog
new file mode 100644
index 00000000..75da0bb2
--- /dev/null
+++ b/locale/en-us/dialog/current/current-wind-light-local.dialog
@@ -0,0 +1,2 @@
+The wind is light at {speed} {speed_unit} from the {direction}
+Today there is light wind from the {direction} at {speed} {speed_unit}
diff --git a/locale/en-us/dialog/current/current-wind-light-location.dialog b/locale/en-us/dialog/current/current-wind-light-location.dialog
new file mode 100644
index 00000000..53551eae
--- /dev/null
+++ b/locale/en-us/dialog/current/current-wind-light-location.dialog
@@ -0,0 +1,2 @@
+The wind is light in {location} at {speed} {speed_unit} from the {direction}
+In {location} today there is light wind from the {direction} at {speed} {speed_unit}
diff --git a/locale/en-us/dialog/current/current-wind-moderate-local.dialog b/locale/en-us/dialog/current/current-wind-moderate-local.dialog
new file mode 100644
index 00000000..4ed52f18
--- /dev/null
+++ b/locale/en-us/dialog/current/current-wind-moderate-local.dialog
@@ -0,0 +1,2 @@
+Currently the wind is a moderate {speed} {speed_unit} from the {direction}
+It's a bit windy today, currently {speed} {speed_unit}
diff --git a/locale/en-us/dialog/current/current-wind-moderate-location.dialog b/locale/en-us/dialog/current/current-wind-moderate-location.dialog
new file mode 100644
index 00000000..effb2d47
--- /dev/null
+++ b/locale/en-us/dialog/current/current-wind-moderate-location.dialog
@@ -0,0 +1,2 @@
+Currently the wind is a moderate {speed} {speed_unit} from the {direction} in {location}
+It's a bit windy in {location} today, currently {speed} {speed_unit}
diff --git a/locale/en-us/dialog/current/current-wind-strong-local.dialog b/locale/en-us/dialog/current/current-wind-strong-local.dialog
new file mode 100644
index 00000000..5bf2cce8
--- /dev/null
+++ b/locale/en-us/dialog/current/current-wind-strong-local.dialog
@@ -0,0 +1,3 @@
+Currently, the wind is from the {direction} at {speed} {speed_unit}, might be good to stay inside today
+The wind is very strong from the {direction} today, {speed} {speed_unit}
+It's very windy today, {speed} {speed_unit}
diff --git a/locale/en-us/dialog/current/current-wind-strong-location.dialog b/locale/en-us/dialog/current/current-wind-strong-location.dialog
new file mode 100644
index 00000000..c80c5a26
--- /dev/null
+++ b/locale/en-us/dialog/current/current-wind-strong-location.dialog
@@ -0,0 +1,3 @@
+Currently, the wind is from the {direction} at {speed} {speed_unit} in {location}, a good day to stay inside
+The wind is very strong from the {direction} in {location} today, {speed} {speed_unit}
+{location} will have strong winds today, {speed} {speed_unit}
diff --git a/dialog/en-us/local.cloudy.alternative.dialog b/locale/en-us/dialog/current/currrent-clouds-alternative-local.dialog
similarity index 100%
rename from dialog/en-us/local.cloudy.alternative.dialog
rename to locale/en-us/dialog/current/currrent-clouds-alternative-local.dialog
diff --git a/locale/en-us/dialog/daily/daily-condition-expected-local.dialog b/locale/en-us/dialog/daily/daily-condition-expected-local.dialog
new file mode 100644
index 00000000..2c9e146b
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-condition-expected-local.dialog
@@ -0,0 +1,3 @@
+# Affirmative response to questions like "is it going to snow tomorrow"
+Yes, expect {condition} {day}
+Yes, the forecast calls for {condition} {day}
diff --git a/dialog/en-us/forecast.affirmative.condition.dialog b/locale/en-us/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/en-us/forecast.affirmative.condition.dialog
rename to locale/en-us/dialog/daily/daily-condition-expected-location.dialog
diff --git a/locale/en-us/dialog/daily/daily-condition-not-expected-local.dialog b/locale/en-us/dialog/daily/daily-condition-not-expected-local.dialog
new file mode 100644
index 00000000..53dde4cc
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-condition-not-expected-local.dialog
@@ -0,0 +1,3 @@
+# Informing that an the requested condition is not in the forecast
+No, {day} the forecast calls for {condition}
+No, {condition} is expected {day}
diff --git a/locale/en-us/dialog/daily/daily-condition-not-expected-location.dialog b/locale/en-us/dialog/daily/daily-condition-not-expected-location.dialog
new file mode 100644
index 00000000..55098b21
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-condition-not-expected-location.dialog
@@ -0,0 +1,3 @@
+# Informing that an the requested condition is not in the forecast
+No, {day} the forecast calls for {condition} in {location}
+No, in {location} {condition} is expected {day}
diff --git a/locale/en-us/dialog/daily/daily-humidity-local.dialog b/locale/en-us/dialog/daily/daily-humidity-local.dialog
new file mode 100644
index 00000000..0794fd6a
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-humidity-local.dialog
@@ -0,0 +1,2 @@
+The humidity {day} will be {percent}
+{day} the forecast calls for a humidity of {percent}
diff --git a/locale/en-us/dialog/daily/daily-humidity-location.dialog b/locale/en-us/dialog/daily/daily-humidity-location.dialog
new file mode 100644
index 00000000..0c7744f9
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-humidity-location.dialog
@@ -0,0 +1,2 @@
+The humidity in {location} {day} will be {percent}
+{day} the forecast in {location} calls for a humidity of {percent}
diff --git a/locale/en-us/dialog/daily/daily-precipitation-next-local.dialog b/locale/en-us/dialog/daily/daily-precipitation-next-local.dialog
new file mode 100644
index 00000000..3d6674a0
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-precipitation-next-local.dialog
@@ -0,0 +1,2 @@
+There is a {percent} chance of {precipitation} {day}
+The forecast calls for a {percent} chance of {precipitation} {day}
diff --git a/locale/en-us/dialog/daily/daily-precipitation-next-location.dialog b/locale/en-us/dialog/daily/daily-precipitation-next-location.dialog
new file mode 100644
index 00000000..7617928c
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-precipitation-next-location.dialog
@@ -0,0 +1,2 @@
+In {location} there is a {percent} chance of {precipitation} {day}
+The forecast calls for a {percent} chance of {precipitation} in {location} {day}
diff --git a/locale/en-us/dialog/daily/daily-precipitation-next-none-local.dialog b/locale/en-us/dialog/daily/daily-precipitation-next-none-local.dialog
new file mode 100644
index 00000000..07885fde
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-precipitation-next-none-local.dialog
@@ -0,0 +1,2 @@
+No precipitation is in the forecast for the next 7 days
+None is forecasted in the next 7 days.
diff --git a/locale/en-us/dialog/daily/daily-precipitation-next-none-location.dialog b/locale/en-us/dialog/daily/daily-precipitation-next-none-location.dialog
new file mode 100644
index 00000000..baba3d6c
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-precipitation-next-none-location.dialog
@@ -0,0 +1,2 @@
+No precipitation is in the forecast for the next seven days in {location}
+In {location} none is forecasted
diff --git a/locale/en-us/dialog/daily/daily-sunrise-local.dialog b/locale/en-us/dialog/daily/daily-sunrise-local.dialog
new file mode 100644
index 00000000..b25f109f
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-sunrise-local.dialog
@@ -0,0 +1,3 @@
+the sun will rise at {time} {day}
+sunrise will be at {time} {day}
+{day} the sun will rise at {time}
diff --git a/locale/en-us/dialog/daily/daily-sunrise-location.dialog b/locale/en-us/dialog/daily/daily-sunrise-location.dialog
new file mode 100644
index 00000000..87ca92af
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-sunrise-location.dialog
@@ -0,0 +1,3 @@
+the sun will rise at {time} {day} in {location}
+in {location} sunrise will be at {time} {day}
+{day} the sun will rise at {time} in {location}
diff --git a/locale/en-us/dialog/daily/daily-sunset-local.dialog b/locale/en-us/dialog/daily/daily-sunset-local.dialog
new file mode 100644
index 00000000..8007f447
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-sunset-local.dialog
@@ -0,0 +1,4 @@
+the sun will set at {time} {day}
+the sun will go down at {time} {day}
+sunset will be at {time} {day}
+{day} the sun will set at {time}
diff --git a/locale/en-us/dialog/daily/daily-sunset-location.dialog b/locale/en-us/dialog/daily/daily-sunset-location.dialog
new file mode 100644
index 00000000..0576df04
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-sunset-location.dialog
@@ -0,0 +1,3 @@
+the sun will set at {time} {day} in {location}
+in {location} sunset will be at {time} {day}
+{day} the sun will set at {time} in {location}
diff --git a/locale/en-us/dialog/daily/daily-temperature-high-local.dialog b/locale/en-us/dialog/daily/daily-temperature-high-local.dialog
new file mode 100644
index 00000000..6651c3c1
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-temperature-high-local.dialog
@@ -0,0 +1,2 @@
+{day} it will be as high as {temperature}
+{day} the temperature will be as high as {temperature} degrees.
diff --git a/locale/en-us/dialog/daily/daily-temperature-high-location.dialog b/locale/en-us/dialog/daily/daily-temperature-high-location.dialog
new file mode 100644
index 00000000..531dcb51
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-temperature-high-location.dialog
@@ -0,0 +1,2 @@
+It will be as high as {temperature} degrees in {location} {day}
+{location} will have a high of {temperature} degrees {day}
diff --git a/locale/en-us/dialog/daily/daily-temperature-local.dialog b/locale/en-us/dialog/daily/daily-temperature-local.dialog
new file mode 100644
index 00000000..7ee9a2fd
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-temperature-local.dialog
@@ -0,0 +1,2 @@
+{day} it will be {temperature}
+{day} the temperature will be {temperature} degrees.
diff --git a/locale/en-us/dialog/daily/daily-temperature-location.dialog b/locale/en-us/dialog/daily/daily-temperature-location.dialog
new file mode 100644
index 00000000..3c8ab784
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-temperature-location.dialog
@@ -0,0 +1,2 @@
+{day} it will be {temperature} degrees in {location}
+{day}, {location} will have a temperature of {temperature} degrees
diff --git a/locale/en-us/dialog/daily/daily-temperature-low-local.dialog b/locale/en-us/dialog/daily/daily-temperature-low-local.dialog
new file mode 100644
index 00000000..55db29c1
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-temperature-low-local.dialog
@@ -0,0 +1,2 @@
+{day} it will be as low as {temperature}
+{day} the temperature will be as low as {temperature} degrees.
diff --git a/locale/en-us/dialog/daily/daily-temperature-low-location.dialog b/locale/en-us/dialog/daily/daily-temperature-low-location.dialog
new file mode 100644
index 00000000..40a40865
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-temperature-low-location.dialog
@@ -0,0 +1,2 @@
+{day} it will be as low as {temperature} degrees in {location}
+{day}, {location} will be as low as {temperature} degrees
diff --git a/locale/en-us/dialog/daily/daily-weather-local.dialog b/locale/en-us/dialog/daily/daily-weather-local.dialog
new file mode 100644
index 00000000..a69707e6
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-weather-local.dialog
@@ -0,0 +1,5 @@
+{day} expect {condition}, with a high of {high_temperature} and a low of {low_temperature}
+Expect {condition}, with a high of {high_temperature} and a low of {low_temperature} {day}
+{day} the high will be {high_temperature} and the low {low_temperature}, with {condition}
+{day} it will be {condition} with a high of {high_temperature} and a low of {low_temperature}
+The forecast {day} is {condition} with a high of {high_temperature} and a low of {low_temperature}
diff --git a/locale/en-us/dialog/daily/daily-weather-location.dialog b/locale/en-us/dialog/daily/daily-weather-location.dialog
new file mode 100644
index 00000000..5a44dd21
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-weather-location.dialog
@@ -0,0 +1,3 @@
+{day} it will be {condition}, with a high of {high_temperature} and a low of {low_temperature} in {location}
+{day}, {location} will have a high of {high_temperature} and a low of {low_temperature}, with {condition}
+The forecast {day} is {high_temperature} for a high and {low_temperature} for a low in {location}
diff --git a/locale/en-us/dialog/daily/daily-wind-light-local.dialog b/locale/en-us/dialog/daily/daily-wind-light-local.dialog
new file mode 100644
index 00000000..c686a43e
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-wind-light-local.dialog
@@ -0,0 +1,2 @@
+There will be a light wind coming from the {direction} {day} at {speed} {speed_unit}
+It will not be very windy {day}
diff --git a/locale/en-us/dialog/daily/daily-wind-light-location.dialog b/locale/en-us/dialog/daily/daily-wind-light-location.dialog
new file mode 100644
index 00000000..43223313
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-wind-light-location.dialog
@@ -0,0 +1,2 @@
+There will be a light wind coming from the {direction} in {location} {day} at {speed} {speed_unit}
+It will not be very windy in {location} {day}
diff --git a/locale/en-us/dialog/daily/daily-wind-moderate-local.dialog b/locale/en-us/dialog/daily/daily-wind-moderate-local.dialog
new file mode 100644
index 00000000..8729037b
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-wind-moderate-local.dialog
@@ -0,0 +1,3 @@
+The wind will be moderate, about {speed} {speed_unit} from the {direction} {day}
+The forecast calls for a moderate wind from the {direction} at {speed} {speed_unit} {day}
+You can expect a moderate wind of about {speed} {speed_unit} {day}
diff --git a/locale/en-us/dialog/daily/daily-wind-moderate-location.dialog b/locale/en-us/dialog/daily/daily-wind-moderate-location.dialog
new file mode 100644
index 00000000..a395d5d6
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-wind-moderate-location.dialog
@@ -0,0 +1,3 @@
+The wind will be moderate in {location} {day}, about {speed} {speed_unit} from the {direction}
+The forecast {day} predicts {location} will have moderate wind from the {direction} of {speed} {speed_unit}
+You can expect a wind of about {speed} {speed_unit} in {location} {day}
diff --git a/locale/en-us/dialog/daily/daily-wind-strong-local.dialog b/locale/en-us/dialog/daily/daily-wind-strong-local.dialog
new file mode 100644
index 00000000..66278185
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-wind-strong-local.dialog
@@ -0,0 +1,2 @@
+There will be strong wind from the {direction} of {speed} {speed_unit} {day}
+The wind will be as strong as {speed} {speed_unit} {day}
diff --git a/locale/en-us/dialog/daily/daily-wind-strong-location.dialog b/locale/en-us/dialog/daily/daily-wind-strong-location.dialog
new file mode 100644
index 00000000..4e7ea4b2
--- /dev/null
+++ b/locale/en-us/dialog/daily/daily-wind-strong-location.dialog
@@ -0,0 +1,2 @@
+There will be a strong wind from the {direction} of {speed} {speed_unit} in {location} {day}
+The wind will be as strong as {speed} {speed_unit} in {location} {day}
diff --git a/dialog/en-us/E.dialog b/locale/en-us/dialog/direction/east.dialog
similarity index 100%
rename from dialog/en-us/E.dialog
rename to locale/en-us/dialog/direction/east.dialog
diff --git a/dialog/en-us/N.dialog b/locale/en-us/dialog/direction/north.dialog
similarity index 100%
rename from dialog/en-us/N.dialog
rename to locale/en-us/dialog/direction/north.dialog
diff --git a/dialog/en-us/NE.dialog b/locale/en-us/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/en-us/NE.dialog
rename to locale/en-us/dialog/direction/northeast.dialog
diff --git a/dialog/en-us/NW.dialog b/locale/en-us/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/en-us/NW.dialog
rename to locale/en-us/dialog/direction/northwest.dialog
diff --git a/dialog/en-us/S.dialog b/locale/en-us/dialog/direction/south.dialog
similarity index 100%
rename from dialog/en-us/S.dialog
rename to locale/en-us/dialog/direction/south.dialog
diff --git a/dialog/en-us/SE.dialog b/locale/en-us/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/en-us/SE.dialog
rename to locale/en-us/dialog/direction/southeast.dialog
diff --git a/dialog/en-us/SW.dialog b/locale/en-us/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/en-us/SW.dialog
rename to locale/en-us/dialog/direction/southwest.dialog
diff --git a/dialog/en-us/W.dialog b/locale/en-us/dialog/direction/west.dialog
similarity index 100%
rename from dialog/en-us/W.dialog
rename to locale/en-us/dialog/direction/west.dialog
diff --git a/dialog/en-us/cant.get.forecast.dialog b/locale/en-us/dialog/error/cant-get-forecast.dialog
similarity index 100%
rename from dialog/en-us/cant.get.forecast.dialog
rename to locale/en-us/dialog/error/cant-get-forecast.dialog
diff --git a/locale/en-us/dialog/error/forty-eight-hours-available.dialog b/locale/en-us/dialog/error/forty-eight-hours-available.dialog
new file mode 100644
index 00000000..1858d794
--- /dev/null
+++ b/locale/en-us/dialog/error/forty-eight-hours-available.dialog
@@ -0,0 +1 @@
+Sorry, I only have 48 hours of hourly forecast data
diff --git a/locale/en-us/dialog/error/location-not-found.dialog b/locale/en-us/dialog/error/location-not-found.dialog
new file mode 100644
index 00000000..e95e7679
--- /dev/null
+++ b/locale/en-us/dialog/error/location-not-found.dialog
@@ -0,0 +1,2 @@
+I can't find a city named {location}. Please try again
+The city {location} is not in my memory banks. Please try again
diff --git a/dialog/en-us/no.forecast.dialog b/locale/en-us/dialog/error/no-forecast.dialog
similarity index 100%
rename from dialog/en-us/no.forecast.dialog
rename to locale/en-us/dialog/error/no-forecast.dialog
diff --git a/locale/en-us/dialog/error/seven-days-available.dialog b/locale/en-us/dialog/error/seven-days-available.dialog
new file mode 100644
index 00000000..6c9af6e3
--- /dev/null
+++ b/locale/en-us/dialog/error/seven-days-available.dialog
@@ -0,0 +1,2 @@
+I have seven days of forecasted weather available.
+I can tell you the forecast for the next seven days.
diff --git a/dialog/en-us/at.time.local.affirmative.condition.dialog b/locale/en-us/dialog/hourly/hourly-condition-expected-local.dialog
similarity index 100%
rename from dialog/en-us/at.time.local.affirmative.condition.dialog
rename to locale/en-us/dialog/hourly/hourly-condition-expected-local.dialog
diff --git a/dialog/en-us/at.time.affirmative.condition.dialog b/locale/en-us/dialog/hourly/hourly-condition-expected-location.dialog
similarity index 100%
rename from dialog/en-us/at.time.affirmative.condition.dialog
rename to locale/en-us/dialog/hourly/hourly-condition-expected-location.dialog
diff --git a/locale/en-us/dialog/hourly/hourly-precipitation-next-local.dialog b/locale/en-us/dialog/hourly/hourly-precipitation-next-local.dialog
new file mode 100644
index 00000000..917c4c14
--- /dev/null
+++ b/locale/en-us/dialog/hourly/hourly-precipitation-next-local.dialog
@@ -0,0 +1,2 @@
+There is a {percent} chance of {precipitation} at {time}
+The forecast calls for a {percent} chance of {precipitation} at {time}
diff --git a/locale/en-us/dialog/hourly/hourly-precipitation-next-location.dialog b/locale/en-us/dialog/hourly/hourly-precipitation-next-location.dialog
new file mode 100644
index 00000000..c6f35430
--- /dev/null
+++ b/locale/en-us/dialog/hourly/hourly-precipitation-next-location.dialog
@@ -0,0 +1,2 @@
+In {location} there is a {percent} chance of {precipitation} at {time}
+The forecast calls for a {percent} chance of {precipitation} in {location} at {time}
diff --git a/locale/en-us/dialog/hourly/hourly-temperature-local.dialog b/locale/en-us/dialog/hourly/hourly-temperature-local.dialog
new file mode 100644
index 00000000..ddfbaa37
--- /dev/null
+++ b/locale/en-us/dialog/hourly/hourly-temperature-local.dialog
@@ -0,0 +1,2 @@
+It will be about {temperature} degrees in the {time}
+In the {time}, it will be {temperature} degrees
diff --git a/locale/en-us/dialog/hourly/hourly-temperature-location.dialog b/locale/en-us/dialog/hourly/hourly-temperature-location.dialog
new file mode 100644
index 00000000..046bc42b
--- /dev/null
+++ b/locale/en-us/dialog/hourly/hourly-temperature-location.dialog
@@ -0,0 +1,2 @@
+In {location} it will be about {temperature} degrees in the {time}
+In the {time}, it will be {temperature} degrees in {location}
diff --git a/locale/en-us/dialog/hourly/hourly-weather-local.dialog b/locale/en-us/dialog/hourly/hourly-weather-local.dialog
new file mode 100644
index 00000000..77bbe4fc
--- /dev/null
+++ b/locale/en-us/dialog/hourly/hourly-weather-local.dialog
@@ -0,0 +1,4 @@
+It will be {condition}, with temperatures near {temperature}
+Later it will be {condition} and around {temperature} degrees
+Later it will be {condition} and {temperature} degrees
+Around {temperature} degrees with {condition}
diff --git a/locale/en-us/dialog/hourly/hourly-weather-location.dialog b/locale/en-us/dialog/hourly/hourly-weather-location.dialog
new file mode 100644
index 00000000..e0e62e39
--- /dev/null
+++ b/locale/en-us/dialog/hourly/hourly-weather-location.dialog
@@ -0,0 +1,4 @@
+{location} weather in the next few hours will be {condition} and {temperature} degrees
+Later it will be {condition} in {location}, with temperatures around {temperature}
+{location} will be around {temperature} with {condition}
+{location} will be about {temperature} degrees with {condition}
diff --git a/locale/en-us/dialog/percentage-number.dialog b/locale/en-us/dialog/percentage-number.dialog
new file mode 100644
index 00000000..1feed403
--- /dev/null
+++ b/locale/en-us/dialog/percentage-number.dialog
@@ -0,0 +1 @@
+{number} percent
diff --git a/dialog/en-us/celsius.dialog b/locale/en-us/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/en-us/celsius.dialog
rename to locale/en-us/dialog/unit/celsius.dialog
diff --git a/dialog/es-es/fahrenheit.dialog b/locale/en-us/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/es-es/fahrenheit.dialog
rename to locale/en-us/dialog/unit/fahrenheit.dialog
diff --git a/dialog/en-us/meters per second.dialog b/locale/en-us/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/en-us/meters per second.dialog
rename to locale/en-us/dialog/unit/meters per second.dialog
diff --git a/dialog/en-us/miles per hour.dialog b/locale/en-us/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/en-us/miles per hour.dialog
rename to locale/en-us/dialog/unit/miles per hour.dialog
diff --git a/locale/en-us/dialog/weekly/weekly-condition.dialog b/locale/en-us/dialog/weekly/weekly-condition.dialog
new file mode 100644
index 00000000..15f37fc0
--- /dev/null
+++ b/locale/en-us/dialog/weekly/weekly-condition.dialog
@@ -0,0 +1,2 @@
+The forecast calls for {condition} on {days}
+On {days} expect {condition}
diff --git a/dialog/en-us/weekly.temp.range.dialog b/locale/en-us/dialog/weekly/weekly-temperature.dialog
similarity index 100%
rename from dialog/en-us/weekly.temp.range.dialog
rename to locale/en-us/dialog/weekly/weekly-temperature.dialog
diff --git a/regex/en-us/location.rx b/locale/en-us/regex/location.rx
similarity index 100%
rename from regex/en-us/location.rx
rename to locale/en-us/regex/location.rx
diff --git a/vocab/en-us/Clear.voc b/locale/en-us/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/en-us/Clear.voc
rename to locale/en-us/vocabulary/condition/clear.voc
diff --git a/vocab/en-us/Cloudy.voc b/locale/en-us/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/en-us/Cloudy.voc
rename to locale/en-us/vocabulary/condition/clouds.voc
diff --git a/vocab/en-us/do.i.need.an.umbrella.intent b/locale/en-us/vocabulary/condition/do-i-need-an-umbrella.intent
similarity index 100%
rename from vocab/en-us/do.i.need.an.umbrella.intent
rename to locale/en-us/vocabulary/condition/do-i-need-an-umbrella.intent
diff --git a/vocab/en-us/Foggy.voc b/locale/en-us/vocabulary/condition/fog.voc
similarity index 100%
rename from vocab/en-us/Foggy.voc
rename to locale/en-us/vocabulary/condition/fog.voc
diff --git a/vocab/en-us/Humidity.voc b/locale/en-us/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/en-us/Humidity.voc
rename to locale/en-us/vocabulary/condition/humidity.voc
diff --git a/vocab/en-us/Precipitation.voc b/locale/en-us/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/en-us/Precipitation.voc
rename to locale/en-us/vocabulary/condition/precipitation.voc
diff --git a/vocab/en-us/Raining.voc b/locale/en-us/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/en-us/Raining.voc
rename to locale/en-us/vocabulary/condition/rain.voc
diff --git a/vocab/en-us/Snowing.voc b/locale/en-us/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/en-us/Snowing.voc
rename to locale/en-us/vocabulary/condition/snow.voc
diff --git a/vocab/en-us/Storm.voc b/locale/en-us/vocabulary/condition/thunderstorm.voc
similarity index 100%
rename from vocab/en-us/Storm.voc
rename to locale/en-us/vocabulary/condition/thunderstorm.voc
diff --git a/vocab/en-us/Windy.voc b/locale/en-us/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/en-us/Windy.voc
rename to locale/en-us/vocabulary/condition/windy.voc
diff --git a/vocab/en-us/Couple.voc b/locale/en-us/vocabulary/date-time/couple.voc
similarity index 63%
rename from vocab/en-us/Couple.voc
rename to locale/en-us/vocabulary/date-time/couple.voc
index e581e38f..b11a8045 100644
--- a/vocab/en-us/Couple.voc
+++ b/locale/en-us/vocabulary/date-time/couple.voc
@@ -1,2 +1 @@
-few
couple
diff --git a/locale/en-us/vocabulary/date-time/few.voc b/locale/en-us/vocabulary/date-time/few.voc
new file mode 100644
index 00000000..7a4016a3
--- /dev/null
+++ b/locale/en-us/vocabulary/date-time/few.voc
@@ -0,0 +1 @@
+few
diff --git a/vocab/en-us/Later.voc b/locale/en-us/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/en-us/Later.voc
rename to locale/en-us/vocabulary/date-time/later.voc
diff --git a/vocab/en-us/Next.voc b/locale/en-us/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/en-us/Next.voc
rename to locale/en-us/vocabulary/date-time/next.voc
diff --git a/vocab/en-us/Now.voc b/locale/en-us/vocabulary/date-time/now.voc
similarity index 100%
rename from vocab/en-us/Now.voc
rename to locale/en-us/vocabulary/date-time/now.voc
diff --git a/locale/en-us/vocabulary/date-time/number-days.voc b/locale/en-us/vocabulary/date-time/number-days.voc
new file mode 100644
index 00000000..27800c6f
--- /dev/null
+++ b/locale/en-us/vocabulary/date-time/number-days.voc
@@ -0,0 +1,23 @@
+2 day
+two day
+next 2 days
+next two days
+next couple of days
+next couple days
+3 day
+three day
+next 3 days
+next three days
+next few days
+4 day
+four day(s|)
+next 4 days
+next four days
+5 days
+five day
+next 5 days
+next five days
+6 day(s|)
+six day(s|)
+next 6 days
+next six days
diff --git a/vocab/en-us/RelativeDay.voc b/locale/en-us/vocabulary/date-time/relative-day.voc
similarity index 50%
rename from vocab/en-us/RelativeDay.voc
rename to locale/en-us/vocabulary/date-time/relative-day.voc
index 861e9f72..05f25243 100644
--- a/vocab/en-us/RelativeDay.voc
+++ b/locale/en-us/vocabulary/date-time/relative-day.voc
@@ -1,13 +1,19 @@
-today
-today's
tomorrow
tomorrow's
yesterday
yesterday's
monday
+on monday
tuesday
+on tuesday
wednesday
+on wednesday
thursday
+on thursday
friday
+on friday
saturday
-sunday
\ No newline at end of file
+on saturday
+sunday
+on sunday
+days
diff --git a/vocab/en-us/RelativeTime.voc b/locale/en-us/vocabulary/date-time/relative-time.voc
similarity index 100%
rename from vocab/en-us/RelativeTime.voc
rename to locale/en-us/vocabulary/date-time/relative-time.voc
diff --git a/vocab/en-us/Today.voc b/locale/en-us/vocabulary/date-time/today.voc
similarity index 100%
rename from vocab/en-us/Today.voc
rename to locale/en-us/vocabulary/date-time/today.voc
diff --git a/vocab/en-us/Week.voc b/locale/en-us/vocabulary/date-time/week.voc
similarity index 100%
rename from vocab/en-us/Week.voc
rename to locale/en-us/vocabulary/date-time/week.voc
diff --git a/vocab/en-us/Weekend.voc b/locale/en-us/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/en-us/Weekend.voc
rename to locale/en-us/vocabulary/date-time/weekend.voc
diff --git a/vocab/en-us/Forecast.voc b/locale/en-us/vocabulary/forecast.voc
similarity index 100%
rename from vocab/en-us/Forecast.voc
rename to locale/en-us/vocabulary/forecast.voc
diff --git a/locale/en-us/vocabulary/like.voc b/locale/en-us/vocabulary/like.voc
new file mode 100644
index 00000000..2f673b18
--- /dev/null
+++ b/locale/en-us/vocabulary/like.voc
@@ -0,0 +1 @@
+like
diff --git a/vocab/sv-se/Location.voc b/locale/en-us/vocabulary/location.voc
similarity index 88%
rename from vocab/sv-se/Location.voc
rename to locale/en-us/vocabulary/location.voc
index a5de9c71..3c2b6969 100644
--- a/vocab/sv-se/Location.voc
+++ b/locale/en-us/vocabulary/location.voc
@@ -3,7 +3,6 @@ Los Angeles california|los angeles|la
Lawrence kansas
portland oregon|portland
spokane
-new york
chicago
houston
austin
@@ -11,6 +10,6 @@ san diego
san francisco
san jose
boston
-washington dc
kansas city
atlanta
+berlin
diff --git a/locale/en-us/vocabulary/outside.voc b/locale/en-us/vocabulary/outside.voc
new file mode 100644
index 00000000..e4f4c426
--- /dev/null
+++ b/locale/en-us/vocabulary/outside.voc
@@ -0,0 +1,2 @@
+outside
+out
diff --git a/vocab/en-us/ConfirmQueryCurrent.voc b/locale/en-us/vocabulary/query/confirm-query-current.voc
similarity index 100%
rename from vocab/en-us/ConfirmQueryCurrent.voc
rename to locale/en-us/vocabulary/query/confirm-query-current.voc
diff --git a/vocab/en-us/ConfirmQueryFuture.voc b/locale/en-us/vocabulary/query/confirm-query-future.voc
similarity index 100%
rename from vocab/en-us/ConfirmQueryFuture.voc
rename to locale/en-us/vocabulary/query/confirm-query-future.voc
diff --git a/vocab/en-us/ConfirmQuery.voc b/locale/en-us/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/en-us/ConfirmQuery.voc
rename to locale/en-us/vocabulary/query/confirm-query.voc
diff --git a/vocab/en-us/How.voc b/locale/en-us/vocabulary/query/how.voc
similarity index 100%
rename from vocab/en-us/How.voc
rename to locale/en-us/vocabulary/query/how.voc
diff --git a/vocab/en-us/Query.voc b/locale/en-us/vocabulary/query/query.voc
similarity index 92%
rename from vocab/en-us/Query.voc
rename to locale/en-us/vocabulary/query/query.voc
index 1dd41071..aae3edd4 100644
--- a/vocab/en-us/Query.voc
+++ b/locale/en-us/vocabulary/query/query.voc
@@ -4,3 +4,4 @@ what's
what will
tell (me|us) (about|)
give me
+what
diff --git a/locale/en-us/vocabulary/query/when.voc b/locale/en-us/vocabulary/query/when.voc
new file mode 100644
index 00000000..7be21d85
--- /dev/null
+++ b/locale/en-us/vocabulary/query/when.voc
@@ -0,0 +1,5 @@
+when
+when's
+when will
+when is
+what time
diff --git a/vocab/en-us/Sunrise.voc b/locale/en-us/vocabulary/sunrise.voc
similarity index 100%
rename from vocab/en-us/Sunrise.voc
rename to locale/en-us/vocabulary/sunrise.voc
diff --git a/vocab/en-us/Sunset.voc b/locale/en-us/vocabulary/sunset.voc
similarity index 100%
rename from vocab/en-us/Sunset.voc
rename to locale/en-us/vocabulary/sunset.voc
diff --git a/vocab/en-us/Cold.voc b/locale/en-us/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/en-us/Cold.voc
rename to locale/en-us/vocabulary/temperature/cold.voc
diff --git a/vocab/en-us/High.voc b/locale/en-us/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/en-us/High.voc
rename to locale/en-us/vocabulary/temperature/high.voc
diff --git a/vocab/en-us/Hot.voc b/locale/en-us/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/en-us/Hot.voc
rename to locale/en-us/vocabulary/temperature/hot.voc
diff --git a/vocab/en-us/Low.voc b/locale/en-us/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/en-us/Low.voc
rename to locale/en-us/vocabulary/temperature/low.voc
diff --git a/vocab/en-us/simple.temperature.intent b/locale/en-us/vocabulary/temperature/temperature.voc
similarity index 70%
rename from vocab/en-us/simple.temperature.intent
rename to locale/en-us/vocabulary/temperature/temperature.voc
index 746a65eb..e703b3f9 100644
--- a/vocab/en-us/simple.temperature.intent
+++ b/locale/en-us/vocabulary/temperature/temperature.voc
@@ -1 +1,2 @@
temperature
+temp
diff --git a/dialog/fr-fr/fahrenheit.dialog b/locale/en-us/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from dialog/fr-fr/fahrenheit.dialog
rename to locale/en-us/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/en-us/Unit.entity b/locale/en-us/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/en-us/Unit.entity
rename to locale/en-us/vocabulary/unit/unit.entity
diff --git a/vocab/en-us/Unit.voc b/locale/en-us/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/en-us/Unit.voc
rename to locale/en-us/vocabulary/unit/unit.voc
diff --git a/vocab/en-us/Weather.voc b/locale/en-us/vocabulary/weather.voc
similarity index 100%
rename from vocab/en-us/Weather.voc
rename to locale/en-us/vocabulary/weather.voc
diff --git a/dialog/es-es/humidity.dialog b/locale/es-es/dialog/condition/humidity.dialog
similarity index 100%
rename from dialog/es-es/humidity.dialog
rename to locale/es-es/dialog/condition/humidity.dialog
diff --git a/dialog/es-es/no precipitation expected.dialog b/locale/es-es/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/es-es/no precipitation expected.dialog
rename to locale/es-es/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/es-es/precipitation expected.dialog b/locale/es-es/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/es-es/precipitation expected.dialog
rename to locale/es-es/dialog/condition/precipitation expected.dialog
diff --git a/dialog/es-es/rain.dialog b/locale/es-es/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/es-es/rain.dialog
rename to locale/es-es/dialog/condition/rain.dialog
diff --git a/dialog/es-es/snow.dialog b/locale/es-es/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/es-es/snow.dialog
rename to locale/es-es/dialog/condition/snow.dialog
diff --git a/dialog/es-es/current.local.weather.dialog b/locale/es-es/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/es-es/current.local.weather.dialog
rename to locale/es-es/dialog/current/current-weather-local.dialog
diff --git a/dialog/es-es/current.weather.dialog b/locale/es-es/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/es-es/current.weather.dialog
rename to locale/es-es/dialog/current/current-weather-location.dialog
diff --git a/dialog/es-es/forecast.local.weather.dialog b/locale/es-es/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/es-es/forecast.local.weather.dialog
rename to locale/es-es/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/es-es/forecast.weather.dialog b/locale/es-es/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/es-es/forecast.weather.dialog
rename to locale/es-es/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/es-es/E.dialog b/locale/es-es/dialog/direction/east.dialog
similarity index 100%
rename from dialog/es-es/E.dialog
rename to locale/es-es/dialog/direction/east.dialog
diff --git a/dialog/es-es/N.dialog b/locale/es-es/dialog/direction/north.dialog
similarity index 100%
rename from dialog/es-es/N.dialog
rename to locale/es-es/dialog/direction/north.dialog
diff --git a/dialog/es-es/NE.dialog b/locale/es-es/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/es-es/NE.dialog
rename to locale/es-es/dialog/direction/northeast.dialog
diff --git a/dialog/es-es/NW.dialog b/locale/es-es/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/es-es/NW.dialog
rename to locale/es-es/dialog/direction/northwest.dialog
diff --git a/dialog/es-es/S.dialog b/locale/es-es/dialog/direction/south.dialog
similarity index 100%
rename from dialog/es-es/S.dialog
rename to locale/es-es/dialog/direction/south.dialog
diff --git a/dialog/es-es/SE.dialog b/locale/es-es/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/es-es/SE.dialog
rename to locale/es-es/dialog/direction/southeast.dialog
diff --git a/dialog/es-es/SW.dialog b/locale/es-es/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/es-es/SW.dialog
rename to locale/es-es/dialog/direction/southwest.dialog
diff --git a/dialog/es-es/W.dialog b/locale/es-es/dialog/direction/west.dialog
similarity index 100%
rename from dialog/es-es/W.dialog
rename to locale/es-es/dialog/direction/west.dialog
diff --git a/dialog/es-es/location.not.found.dialog b/locale/es-es/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/es-es/location.not.found.dialog
rename to locale/es-es/dialog/error/location-not-found.dialog
diff --git a/dialog/es-es/hour.local.weather.dialog b/locale/es-es/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/es-es/hour.local.weather.dialog
rename to locale/es-es/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/es-es/hour.weather.dialog b/locale/es-es/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/es-es/hour.weather.dialog
rename to locale/es-es/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/es-es/celsius.dialog b/locale/es-es/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/es-es/celsius.dialog
rename to locale/es-es/dialog/unit/celsius.dialog
diff --git a/dialog/gl-es/fahrenheit.dialog b/locale/es-es/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/gl-es/fahrenheit.dialog
rename to locale/es-es/dialog/unit/fahrenheit.dialog
diff --git a/dialog/es-es/meters per second.dialog b/locale/es-es/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/es-es/meters per second.dialog
rename to locale/es-es/dialog/unit/meters per second.dialog
diff --git a/dialog/es-es/miles per hour.dialog b/locale/es-es/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/es-es/miles per hour.dialog
rename to locale/es-es/dialog/unit/miles per hour.dialog
diff --git a/vocab/es-es/Forecast.voc b/locale/es-es/forecast.voc
similarity index 100%
rename from vocab/es-es/Forecast.voc
rename to locale/es-es/forecast.voc
diff --git a/vocab/es-es/Location.voc b/locale/es-es/location.voc
similarity index 100%
rename from vocab/es-es/Location.voc
rename to locale/es-es/location.voc
diff --git a/regex/es-es/location.rx b/locale/es-es/regex/location.rx
similarity index 100%
rename from regex/es-es/location.rx
rename to locale/es-es/regex/location.rx
diff --git a/vocab/es-es/Sunrise.voc b/locale/es-es/sunrise.voc
similarity index 100%
rename from vocab/es-es/Sunrise.voc
rename to locale/es-es/sunrise.voc
diff --git a/vocab/es-es/Sunset.voc b/locale/es-es/sunset.voc
similarity index 100%
rename from vocab/es-es/Sunset.voc
rename to locale/es-es/sunset.voc
diff --git a/vocab/es-es/Humidity.voc b/locale/es-es/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/es-es/Humidity.voc
rename to locale/es-es/vocabulary/condition/humidity.voc
diff --git a/vocab/es-es/Precipitation.voc b/locale/es-es/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/es-es/Precipitation.voc
rename to locale/es-es/vocabulary/condition/precipitation.voc
diff --git a/vocab/es-es/Windy.voc b/locale/es-es/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/es-es/Windy.voc
rename to locale/es-es/vocabulary/condition/windy.voc
diff --git a/vocab/es-es/Later.voc b/locale/es-es/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/es-es/Later.voc
rename to locale/es-es/vocabulary/date-time/later.voc
diff --git a/vocab/es-es/Next.voc b/locale/es-es/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/es-es/Next.voc
rename to locale/es-es/vocabulary/date-time/next.voc
diff --git a/vocab/es-es/Query.voc b/locale/es-es/vocabulary/query/query.voc
similarity index 100%
rename from vocab/es-es/Query.voc
rename to locale/es-es/vocabulary/query/query.voc
diff --git a/vocab/es-es/Weather.voc b/locale/es-es/weather.voc
similarity index 100%
rename from vocab/es-es/Weather.voc
rename to locale/es-es/weather.voc
diff --git a/dialog/fr-fr/no precipitation expected.dialog b/locale/fr-fr/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/fr-fr/no precipitation expected.dialog
rename to locale/fr-fr/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/fr-fr/precipitation expected.dialog b/locale/fr-fr/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/fr-fr/precipitation expected.dialog
rename to locale/fr-fr/dialog/condition/precipitation expected.dialog
diff --git a/dialog/fr-fr/rain.dialog b/locale/fr-fr/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/fr-fr/rain.dialog
rename to locale/fr-fr/dialog/condition/rain.dialog
diff --git a/dialog/fr-fr/snow.dialog b/locale/fr-fr/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/fr-fr/snow.dialog
rename to locale/fr-fr/dialog/condition/snow.dialog
diff --git a/dialog/fr-fr/humidity.dialog b/locale/fr-fr/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/fr-fr/humidity.dialog
rename to locale/fr-fr/dialog/current/current-humidity-location.dialog
diff --git a/dialog/fr-fr/current.local.weather.dialog b/locale/fr-fr/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/fr-fr/current.local.weather.dialog
rename to locale/fr-fr/dialog/current/current-weather-local.dialog
diff --git a/dialog/fr-fr/current.weather.dialog b/locale/fr-fr/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/fr-fr/current.weather.dialog
rename to locale/fr-fr/dialog/current/current-weather-location.dialog
diff --git a/dialog/fr-fr/forecast.local.weather.dialog b/locale/fr-fr/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/fr-fr/forecast.local.weather.dialog
rename to locale/fr-fr/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/fr-fr/forecast.weather.dialog b/locale/fr-fr/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/fr-fr/forecast.weather.dialog
rename to locale/fr-fr/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/fr-fr/E.dialog b/locale/fr-fr/dialog/direction/east.dialog
similarity index 100%
rename from dialog/fr-fr/E.dialog
rename to locale/fr-fr/dialog/direction/east.dialog
diff --git a/dialog/fr-fr/N.dialog b/locale/fr-fr/dialog/direction/north.dialog
similarity index 100%
rename from dialog/fr-fr/N.dialog
rename to locale/fr-fr/dialog/direction/north.dialog
diff --git a/dialog/fr-fr/NE.dialog b/locale/fr-fr/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/fr-fr/NE.dialog
rename to locale/fr-fr/dialog/direction/northeast.dialog
diff --git a/dialog/fr-fr/NW.dialog b/locale/fr-fr/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/fr-fr/NW.dialog
rename to locale/fr-fr/dialog/direction/northwest.dialog
diff --git a/dialog/fr-fr/S.dialog b/locale/fr-fr/dialog/direction/south.dialog
similarity index 100%
rename from dialog/fr-fr/S.dialog
rename to locale/fr-fr/dialog/direction/south.dialog
diff --git a/dialog/fr-fr/SE.dialog b/locale/fr-fr/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/fr-fr/SE.dialog
rename to locale/fr-fr/dialog/direction/southeast.dialog
diff --git a/dialog/fr-fr/SW.dialog b/locale/fr-fr/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/fr-fr/SW.dialog
rename to locale/fr-fr/dialog/direction/southwest.dialog
diff --git a/dialog/fr-fr/W.dialog b/locale/fr-fr/dialog/direction/west.dialog
similarity index 100%
rename from dialog/fr-fr/W.dialog
rename to locale/fr-fr/dialog/direction/west.dialog
diff --git a/dialog/fr-fr/location.not.found.dialog b/locale/fr-fr/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/fr-fr/location.not.found.dialog
rename to locale/fr-fr/dialog/error/location-not-found.dialog
diff --git a/dialog/fr-fr/hour.local.weather.dialog b/locale/fr-fr/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/fr-fr/hour.local.weather.dialog
rename to locale/fr-fr/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/fr-fr/hour.weather.dialog b/locale/fr-fr/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/fr-fr/hour.weather.dialog
rename to locale/fr-fr/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/fr-fr/celsius.dialog b/locale/fr-fr/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/fr-fr/celsius.dialog
rename to locale/fr-fr/dialog/unit/celsius.dialog
diff --git a/dialog/it-it/fahrenheit.dialog b/locale/fr-fr/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/it-it/fahrenheit.dialog
rename to locale/fr-fr/dialog/unit/fahrenheit.dialog
diff --git a/dialog/fr-fr/meters per second.dialog b/locale/fr-fr/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/fr-fr/meters per second.dialog
rename to locale/fr-fr/dialog/unit/meters per second.dialog
diff --git a/dialog/fr-fr/miles per hour.dialog b/locale/fr-fr/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/fr-fr/miles per hour.dialog
rename to locale/fr-fr/dialog/unit/miles per hour.dialog
diff --git a/vocab/fr-fr/Forecast.voc b/locale/fr-fr/forecast.voc
similarity index 100%
rename from vocab/fr-fr/Forecast.voc
rename to locale/fr-fr/forecast.voc
diff --git a/vocab/fr-fr/Location.voc b/locale/fr-fr/location.voc
similarity index 100%
rename from vocab/fr-fr/Location.voc
rename to locale/fr-fr/location.voc
diff --git a/vocab/fr-fr/Next.voc b/locale/fr-fr/next.voc
similarity index 100%
rename from vocab/fr-fr/Next.voc
rename to locale/fr-fr/next.voc
diff --git a/regex/fr-fr/location.rx b/locale/fr-fr/regex/location.rx
similarity index 100%
rename from regex/fr-fr/location.rx
rename to locale/fr-fr/regex/location.rx
diff --git a/vocab/fr-fr/Sunrise.voc b/locale/fr-fr/sunrise.voc
similarity index 100%
rename from vocab/fr-fr/Sunrise.voc
rename to locale/fr-fr/sunrise.voc
diff --git a/vocab/fr-fr/Sunset.voc b/locale/fr-fr/sunset.voc
similarity index 100%
rename from vocab/fr-fr/Sunset.voc
rename to locale/fr-fr/sunset.voc
diff --git a/vocab/fr-fr/Humidity.voc b/locale/fr-fr/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/fr-fr/Humidity.voc
rename to locale/fr-fr/vocabulary/condition/humidity.voc
diff --git a/vocab/fr-fr/Precipitation.voc b/locale/fr-fr/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/fr-fr/Precipitation.voc
rename to locale/fr-fr/vocabulary/condition/precipitation.voc
diff --git a/vocab/fr-fr/Windy.voc b/locale/fr-fr/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/fr-fr/Windy.voc
rename to locale/fr-fr/vocabulary/condition/windy.voc
diff --git a/vocab/fr-fr/Later.voc b/locale/fr-fr/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/fr-fr/Later.voc
rename to locale/fr-fr/vocabulary/date-time/later.voc
diff --git a/vocab/fr-fr/Query.voc b/locale/fr-fr/vocabulary/query/query.voc
similarity index 100%
rename from vocab/fr-fr/Query.voc
rename to locale/fr-fr/vocabulary/query/query.voc
diff --git a/vocab/fr-fr/Weather.voc b/locale/fr-fr/weather.voc
similarity index 100%
rename from vocab/fr-fr/Weather.voc
rename to locale/fr-fr/weather.voc
diff --git a/dialog/gl-es/and.dialog b/locale/gl-es/dialog/and.dialog
similarity index 100%
rename from dialog/gl-es/and.dialog
rename to locale/gl-es/dialog/and.dialog
diff --git a/dialog/gl-es/clear sky.dialog b/locale/gl-es/dialog/condition/clear sky.dialog
similarity index 100%
rename from dialog/gl-es/clear sky.dialog
rename to locale/gl-es/dialog/condition/clear sky.dialog
diff --git a/dialog/gl-es/clear.dialog b/locale/gl-es/dialog/condition/clear.dialog
similarity index 100%
rename from dialog/gl-es/clear.dialog
rename to locale/gl-es/dialog/condition/clear.dialog
diff --git a/dialog/gl-es/no precipitation expected.dialog b/locale/gl-es/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/gl-es/no precipitation expected.dialog
rename to locale/gl-es/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/gl-es/percentage.number.dialog b/locale/gl-es/dialog/condition/percentage-number.dialog
similarity index 100%
rename from dialog/gl-es/percentage.number.dialog
rename to locale/gl-es/dialog/condition/percentage-number.dialog
diff --git a/dialog/gl-es/precipitation expected.dialog b/locale/gl-es/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/gl-es/precipitation expected.dialog
rename to locale/gl-es/dialog/condition/precipitation expected.dialog
diff --git a/dialog/gl-es/rain.dialog b/locale/gl-es/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/gl-es/rain.dialog
rename to locale/gl-es/dialog/condition/rain.dialog
diff --git a/dialog/gl-es/snow.dialog b/locale/gl-es/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/gl-es/snow.dialog
rename to locale/gl-es/dialog/condition/snow.dialog
diff --git a/dialog/gl-es/storm.dialog b/locale/gl-es/dialog/condition/thunderstorm.dialog
similarity index 100%
rename from dialog/gl-es/storm.dialog
rename to locale/gl-es/dialog/condition/thunderstorm.dialog
diff --git a/dialog/gl-es/local.affirmative.condition.dialog b/locale/gl-es/dialog/current/current-condition-expected-local.dialog
similarity index 100%
rename from dialog/gl-es/local.affirmative.condition.dialog
rename to locale/gl-es/dialog/current/current-condition-expected-local.dialog
diff --git a/dialog/gl-es/affirmative.condition.dialog b/locale/gl-es/dialog/current/current-condition-expected-location.dialog
similarity index 100%
rename from dialog/gl-es/affirmative.condition.dialog
rename to locale/gl-es/dialog/current/current-condition-expected-location.dialog
diff --git a/dialog/gl-es/humidity.dialog b/locale/gl-es/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/gl-es/humidity.dialog
rename to locale/gl-es/dialog/current/current-humidity-location.dialog
diff --git a/dialog/gl-es/current.local.high.temperature.dialog b/locale/gl-es/dialog/current/current-temperature-high-local.dialog
similarity index 100%
rename from dialog/gl-es/current.local.high.temperature.dialog
rename to locale/gl-es/dialog/current/current-temperature-high-local.dialog
diff --git a/dialog/gl-es/current.high.temperature.dialog b/locale/gl-es/dialog/current/current-temperature-high-location.dialog
similarity index 100%
rename from dialog/gl-es/current.high.temperature.dialog
rename to locale/gl-es/dialog/current/current-temperature-high-location.dialog
diff --git a/dialog/gl-es/min.max.dialog b/locale/gl-es/dialog/current/current-temperature-high-low.dialog
similarity index 100%
rename from dialog/gl-es/min.max.dialog
rename to locale/gl-es/dialog/current/current-temperature-high-low.dialog
diff --git a/dialog/gl-es/current.local.temperature.dialog b/locale/gl-es/dialog/current/current-temperature-local.dialog
similarity index 100%
rename from dialog/gl-es/current.local.temperature.dialog
rename to locale/gl-es/dialog/current/current-temperature-local.dialog
diff --git a/dialog/gl-es/current.temperature.dialog b/locale/gl-es/dialog/current/current-temperature-location.dialog
similarity index 100%
rename from dialog/gl-es/current.temperature.dialog
rename to locale/gl-es/dialog/current/current-temperature-location.dialog
diff --git a/dialog/gl-es/current.local.low.temperature.dialog b/locale/gl-es/dialog/current/current-temperature-low-local.dialog
similarity index 100%
rename from dialog/gl-es/current.local.low.temperature.dialog
rename to locale/gl-es/dialog/current/current-temperature-low-local.dialog
diff --git a/dialog/gl-es/current.low.temperature.dialog b/locale/gl-es/dialog/current/current-temperature-low-location.dialog
similarity index 100%
rename from dialog/gl-es/current.low.temperature.dialog
rename to locale/gl-es/dialog/current/current-temperature-low-location.dialog
diff --git a/dialog/gl-es/current.local.weather.dialog b/locale/gl-es/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/gl-es/current.local.weather.dialog
rename to locale/gl-es/dialog/current/current-weather-local.dialog
diff --git a/dialog/gl-es/current.weather.dialog b/locale/gl-es/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/gl-es/current.weather.dialog
rename to locale/gl-es/dialog/current/current-weather-location.dialog
diff --git a/dialog/gl-es/local.light.wind.dialog b/locale/gl-es/dialog/current/current-wind-light-local.dialog
similarity index 100%
rename from dialog/gl-es/local.light.wind.dialog
rename to locale/gl-es/dialog/current/current-wind-light-local.dialog
diff --git a/dialog/gl-es/light.wind.dialog b/locale/gl-es/dialog/current/current-wind-light-location.dialog
similarity index 100%
rename from dialog/gl-es/light.wind.dialog
rename to locale/gl-es/dialog/current/current-wind-light-location.dialog
diff --git a/dialog/gl-es/local.medium.wind.dialog b/locale/gl-es/dialog/current/current-wind-moderate-local.dialog
similarity index 100%
rename from dialog/gl-es/local.medium.wind.dialog
rename to locale/gl-es/dialog/current/current-wind-moderate-local.dialog
diff --git a/dialog/gl-es/medium.wind.dialog b/locale/gl-es/dialog/current/current-wind-moderate-location.dialog
similarity index 100%
rename from dialog/gl-es/medium.wind.dialog
rename to locale/gl-es/dialog/current/current-wind-moderate-location.dialog
diff --git a/dialog/gl-es/local.hard.wind.dialog b/locale/gl-es/dialog/current/current-wind-strong-local.dialog
similarity index 100%
rename from dialog/gl-es/local.hard.wind.dialog
rename to locale/gl-es/dialog/current/current-wind-strong-local.dialog
diff --git a/dialog/gl-es/hard.wind.dialog b/locale/gl-es/dialog/current/current-wind-strong-location.dialog
similarity index 100%
rename from dialog/gl-es/hard.wind.dialog
rename to locale/gl-es/dialog/current/current-wind-strong-location.dialog
diff --git a/dialog/gl-es/forecast.local.affirmative.condition.dialog b/locale/gl-es/dialog/daily/daily-condition-expected-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.affirmative.condition.dialog
rename to locale/gl-es/dialog/daily/daily-condition-expected-local.dialog
diff --git a/dialog/gl-es/forecast.affirmative.condition.dialog b/locale/gl-es/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.affirmative.condition.dialog
rename to locale/gl-es/dialog/daily/daily-condition-expected-location.dialog
diff --git a/dialog/gl-es/forecast.local.high.temperature.dialog b/locale/gl-es/dialog/daily/daily-temperature-high-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.high.temperature.dialog
rename to locale/gl-es/dialog/daily/daily-temperature-high-local.dialog
diff --git a/dialog/gl-es/forecast.high.temperature.dialog b/locale/gl-es/dialog/daily/daily-temperature-high-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.high.temperature.dialog
rename to locale/gl-es/dialog/daily/daily-temperature-high-location.dialog
diff --git a/dialog/gl-es/forecast.local.temperature.dialog b/locale/gl-es/dialog/daily/daily-temperature-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.temperature.dialog
rename to locale/gl-es/dialog/daily/daily-temperature-local.dialog
diff --git a/dialog/gl-es/forecast.temperature.dialog b/locale/gl-es/dialog/daily/daily-temperature-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.temperature.dialog
rename to locale/gl-es/dialog/daily/daily-temperature-location.dialog
diff --git a/dialog/gl-es/forecast.local.low.temperature.dialog b/locale/gl-es/dialog/daily/daily-temperature-low-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.low.temperature.dialog
rename to locale/gl-es/dialog/daily/daily-temperature-low-local.dialog
diff --git a/dialog/gl-es/forecast.low.temperature.dialog b/locale/gl-es/dialog/daily/daily-temperature-low-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.low.temperature.dialog
rename to locale/gl-es/dialog/daily/daily-temperature-low-location.dialog
diff --git a/dialog/gl-es/forecast.local.weather.dialog b/locale/gl-es/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.weather.dialog
rename to locale/gl-es/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/gl-es/forecast.weather.dialog b/locale/gl-es/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.weather.dialog
rename to locale/gl-es/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/gl-es/forecast.local.light.wind.dialog b/locale/gl-es/dialog/daily/daily-wind-light-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.light.wind.dialog
rename to locale/gl-es/dialog/daily/daily-wind-light-local.dialog
diff --git a/dialog/gl-es/forecast.light.wind.dialog b/locale/gl-es/dialog/daily/daily-wind-light-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.light.wind.dialog
rename to locale/gl-es/dialog/daily/daily-wind-light-location.dialog
diff --git a/dialog/gl-es/forecast.local.medium.wind.dialog b/locale/gl-es/dialog/daily/daily-wind-moderate-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.medium.wind.dialog
rename to locale/gl-es/dialog/daily/daily-wind-moderate-local.dialog
diff --git a/dialog/gl-es/forecast.medium.wind.dialog b/locale/gl-es/dialog/daily/daily-wind-moderate-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.medium.wind.dialog
rename to locale/gl-es/dialog/daily/daily-wind-moderate-location.dialog
diff --git a/dialog/gl-es/forecast.local.hard.wind.dialog b/locale/gl-es/dialog/daily/daily-wind-strong-local.dialog
similarity index 100%
rename from dialog/gl-es/forecast.local.hard.wind.dialog
rename to locale/gl-es/dialog/daily/daily-wind-strong-local.dialog
diff --git a/dialog/gl-es/forecast.hard.wind.dialog b/locale/gl-es/dialog/daily/daily-wind-strong-location.dialog
similarity index 100%
rename from dialog/gl-es/forecast.hard.wind.dialog
rename to locale/gl-es/dialog/daily/daily-wind-strong-location.dialog
diff --git a/dialog/gl-es/E.dialog b/locale/gl-es/dialog/direction/east.dialog
similarity index 100%
rename from dialog/gl-es/E.dialog
rename to locale/gl-es/dialog/direction/east.dialog
diff --git a/dialog/gl-es/N.dialog b/locale/gl-es/dialog/direction/north.dialog
similarity index 100%
rename from dialog/gl-es/N.dialog
rename to locale/gl-es/dialog/direction/north.dialog
diff --git a/dialog/gl-es/NE.dialog b/locale/gl-es/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/gl-es/NE.dialog
rename to locale/gl-es/dialog/direction/northeast.dialog
diff --git a/dialog/gl-es/NW.dialog b/locale/gl-es/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/gl-es/NW.dialog
rename to locale/gl-es/dialog/direction/northwest.dialog
diff --git a/dialog/gl-es/S.dialog b/locale/gl-es/dialog/direction/south.dialog
similarity index 100%
rename from dialog/gl-es/S.dialog
rename to locale/gl-es/dialog/direction/south.dialog
diff --git a/dialog/gl-es/SE.dialog b/locale/gl-es/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/gl-es/SE.dialog
rename to locale/gl-es/dialog/direction/southeast.dialog
diff --git a/dialog/gl-es/SW.dialog b/locale/gl-es/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/gl-es/SW.dialog
rename to locale/gl-es/dialog/direction/southwest.dialog
diff --git a/dialog/gl-es/W.dialog b/locale/gl-es/dialog/direction/west.dialog
similarity index 100%
rename from dialog/gl-es/W.dialog
rename to locale/gl-es/dialog/direction/west.dialog
diff --git a/dialog/gl-es/cant.get.forecast.dialog b/locale/gl-es/dialog/error/cant-get-forecast.dialog
similarity index 100%
rename from dialog/gl-es/cant.get.forecast.dialog
rename to locale/gl-es/dialog/error/cant-get-forecast.dialog
diff --git a/dialog/gl-es/location.not.found.dialog b/locale/gl-es/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/gl-es/location.not.found.dialog
rename to locale/gl-es/dialog/error/location-not-found.dialog
diff --git a/dialog/gl-es/no.forecast.dialog b/locale/gl-es/dialog/error/no-forecast.dialog
similarity index 100%
rename from dialog/gl-es/no.forecast.dialog
rename to locale/gl-es/dialog/error/no-forecast.dialog
diff --git a/dialog/gl-es/at.time.local.cond.alternative.dialog b/locale/gl-es/dialog/hourly/hourly-condition-alternative-local.dialog
similarity index 100%
rename from dialog/gl-es/at.time.local.cond.alternative.dialog
rename to locale/gl-es/dialog/hourly/hourly-condition-alternative-local.dialog
diff --git a/dialog/gl-es/at.time.cond.alternative.dialog b/locale/gl-es/dialog/hourly/hourly-condition-alternative-location.dialog
similarity index 100%
rename from dialog/gl-es/at.time.cond.alternative.dialog
rename to locale/gl-es/dialog/hourly/hourly-condition-alternative-location.dialog
diff --git a/dialog/gl-es/at.time.local.affirmative.condition.dialog b/locale/gl-es/dialog/hourly/hourly-condition-expected-local.dialog
similarity index 100%
rename from dialog/gl-es/at.time.local.affirmative.condition.dialog
rename to locale/gl-es/dialog/hourly/hourly-condition-expected-local.dialog
diff --git a/dialog/gl-es/at.time.affirmative.condition.dialog b/locale/gl-es/dialog/hourly/hourly-condition-expected.dialog
similarity index 100%
rename from dialog/gl-es/at.time.affirmative.condition.dialog
rename to locale/gl-es/dialog/hourly/hourly-condition-expected.dialog
diff --git a/dialog/gl-es/at.time.local.no.cond.predicted.dialog b/locale/gl-es/dialog/hourly/hourly-condition-not-expected-local.dialog
similarity index 100%
rename from dialog/gl-es/at.time.local.no.cond.predicted.dialog
rename to locale/gl-es/dialog/hourly/hourly-condition-not-expected-local.dialog
diff --git a/dialog/gl-es/at.time.no.cond.predicted.dialog b/locale/gl-es/dialog/hourly/hourly-condition-not-expected-location.dialog
similarity index 100%
rename from dialog/gl-es/at.time.no.cond.predicted.dialog
rename to locale/gl-es/dialog/hourly/hourly-condition-not-expected-location.dialog
diff --git a/dialog/gl-es/at.time.local.temperature.dialog b/locale/gl-es/dialog/hourly/hourly-temperature-local.dialog
similarity index 100%
rename from dialog/gl-es/at.time.local.temperature.dialog
rename to locale/gl-es/dialog/hourly/hourly-temperature-local.dialog
diff --git a/dialog/gl-es/hour.local.weather.dialog b/locale/gl-es/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/gl-es/hour.local.weather.dialog
rename to locale/gl-es/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/gl-es/hour.weather.dialog b/locale/gl-es/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/gl-es/hour.weather.dialog
rename to locale/gl-es/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/gl-es/celsius.dialog b/locale/gl-es/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/gl-es/celsius.dialog
rename to locale/gl-es/dialog/unit/celsius.dialog
diff --git a/dialog/sv-se/fahrenheit.dialog b/locale/gl-es/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/sv-se/fahrenheit.dialog
rename to locale/gl-es/dialog/unit/fahrenheit.dialog
diff --git a/dialog/gl-es/meters per second.dialog b/locale/gl-es/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/gl-es/meters per second.dialog
rename to locale/gl-es/dialog/unit/meters per second.dialog
diff --git a/dialog/gl-es/miles per hour.dialog b/locale/gl-es/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/gl-es/miles per hour.dialog
rename to locale/gl-es/dialog/unit/miles per hour.dialog
diff --git a/dialog/gl-es/weekly.temp.range.dialog b/locale/gl-es/dialog/weekly/weekly-temperature.dialog
similarity index 100%
rename from dialog/gl-es/weekly.temp.range.dialog
rename to locale/gl-es/dialog/weekly/weekly-temperature.dialog
diff --git a/vocab/gl-es/Forecast.voc b/locale/gl-es/forecast.voc
similarity index 100%
rename from vocab/gl-es/Forecast.voc
rename to locale/gl-es/forecast.voc
diff --git a/vocab/en-us/Location.voc b/locale/gl-es/location.voc
similarity index 100%
rename from vocab/en-us/Location.voc
rename to locale/gl-es/location.voc
diff --git a/regex/gl-es/location.rx b/locale/gl-es/regex/location.rx
similarity index 100%
rename from regex/gl-es/location.rx
rename to locale/gl-es/regex/location.rx
diff --git a/vocab/gl-es/Sunrise.voc b/locale/gl-es/sunrise.voc
similarity index 100%
rename from vocab/gl-es/Sunrise.voc
rename to locale/gl-es/sunrise.voc
diff --git a/vocab/gl-es/Sunset.voc b/locale/gl-es/sunset.voc
similarity index 100%
rename from vocab/gl-es/Sunset.voc
rename to locale/gl-es/sunset.voc
diff --git a/vocab/gl-es/Clear.voc b/locale/gl-es/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/gl-es/Clear.voc
rename to locale/gl-es/vocabulary/condition/clear.voc
diff --git a/vocab/gl-es/Cloudy.voc b/locale/gl-es/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/gl-es/Cloudy.voc
rename to locale/gl-es/vocabulary/condition/clouds.voc
diff --git a/vocab/gl-es/do.i.need.an.umbrella.intent b/locale/gl-es/vocabulary/condition/do.i.need.an.umbrella.intent
similarity index 100%
rename from vocab/gl-es/do.i.need.an.umbrella.intent
rename to locale/gl-es/vocabulary/condition/do.i.need.an.umbrella.intent
diff --git a/vocab/gl-es/Foggy.voc b/locale/gl-es/vocabulary/condition/fog.voc
similarity index 100%
rename from vocab/gl-es/Foggy.voc
rename to locale/gl-es/vocabulary/condition/fog.voc
diff --git a/vocab/gl-es/Humidity.voc b/locale/gl-es/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/gl-es/Humidity.voc
rename to locale/gl-es/vocabulary/condition/humidity.voc
diff --git a/vocab/gl-es/Precipitation.voc b/locale/gl-es/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/gl-es/Precipitation.voc
rename to locale/gl-es/vocabulary/condition/precipitation.voc
diff --git a/vocab/gl-es/Raining.voc b/locale/gl-es/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/gl-es/Raining.voc
rename to locale/gl-es/vocabulary/condition/rain.voc
diff --git a/vocab/gl-es/Snowing.voc b/locale/gl-es/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/gl-es/Snowing.voc
rename to locale/gl-es/vocabulary/condition/snow.voc
diff --git a/vocab/gl-es/Storm.voc b/locale/gl-es/vocabulary/condition/thunderstorm.voc
similarity index 100%
rename from vocab/gl-es/Storm.voc
rename to locale/gl-es/vocabulary/condition/thunderstorm.voc
diff --git a/vocab/gl-es/Windy.voc b/locale/gl-es/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/gl-es/Windy.voc
rename to locale/gl-es/vocabulary/condition/windy.voc
diff --git a/vocab/gl-es/Couple.voc b/locale/gl-es/vocabulary/date-time/couple.voc
similarity index 100%
rename from vocab/gl-es/Couple.voc
rename to locale/gl-es/vocabulary/date-time/couple.voc
diff --git a/vocab/gl-es/Later.voc b/locale/gl-es/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/gl-es/Later.voc
rename to locale/gl-es/vocabulary/date-time/later.voc
diff --git a/vocab/gl-es/Next.voc b/locale/gl-es/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/gl-es/Next.voc
rename to locale/gl-es/vocabulary/date-time/next.voc
diff --git a/vocab/gl-es/Now.voc b/locale/gl-es/vocabulary/date-time/now.voc
similarity index 100%
rename from vocab/gl-es/Now.voc
rename to locale/gl-es/vocabulary/date-time/now.voc
diff --git a/vocab/gl-es/RelativeDay.voc b/locale/gl-es/vocabulary/date-time/relative-day.voc
similarity index 100%
rename from vocab/gl-es/RelativeDay.voc
rename to locale/gl-es/vocabulary/date-time/relative-day.voc
diff --git a/vocab/gl-es/RelativeTime.voc b/locale/gl-es/vocabulary/date-time/relative-time.voc
similarity index 100%
rename from vocab/gl-es/RelativeTime.voc
rename to locale/gl-es/vocabulary/date-time/relative-time.voc
diff --git a/vocab/gl-es/Today.voc b/locale/gl-es/vocabulary/date-time/today.voc
similarity index 100%
rename from vocab/gl-es/Today.voc
rename to locale/gl-es/vocabulary/date-time/today.voc
diff --git a/vocab/gl-es/Week.voc b/locale/gl-es/vocabulary/date-time/week.voc
similarity index 100%
rename from vocab/gl-es/Week.voc
rename to locale/gl-es/vocabulary/date-time/week.voc
diff --git a/vocab/gl-es/Weekend.voc b/locale/gl-es/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/gl-es/Weekend.voc
rename to locale/gl-es/vocabulary/date-time/weekend.voc
diff --git a/vocab/gl-es/ConfirmQueryCurrent.voc b/locale/gl-es/vocabulary/query/confirm-query-current.voc
similarity index 100%
rename from vocab/gl-es/ConfirmQueryCurrent.voc
rename to locale/gl-es/vocabulary/query/confirm-query-current.voc
diff --git a/vocab/gl-es/ConfirmQueryFuture.voc b/locale/gl-es/vocabulary/query/confirm-query-future.voc
similarity index 100%
rename from vocab/gl-es/ConfirmQueryFuture.voc
rename to locale/gl-es/vocabulary/query/confirm-query-future.voc
diff --git a/vocab/gl-es/ConfirmQuery.voc b/locale/gl-es/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/gl-es/ConfirmQuery.voc
rename to locale/gl-es/vocabulary/query/confirm-query.voc
diff --git a/vocab/gl-es/How.voc b/locale/gl-es/vocabulary/query/how.voc
similarity index 100%
rename from vocab/gl-es/How.voc
rename to locale/gl-es/vocabulary/query/how.voc
diff --git a/vocab/gl-es/Query.voc b/locale/gl-es/vocabulary/query/query.voc
similarity index 100%
rename from vocab/gl-es/Query.voc
rename to locale/gl-es/vocabulary/query/query.voc
diff --git a/vocab/gl-es/When.voc b/locale/gl-es/vocabulary/query/when.voc
similarity index 100%
rename from vocab/gl-es/When.voc
rename to locale/gl-es/vocabulary/query/when.voc
diff --git a/vocab/gl-es/Cold.voc b/locale/gl-es/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/gl-es/Cold.voc
rename to locale/gl-es/vocabulary/temperature/cold.voc
diff --git a/vocab/gl-es/High.voc b/locale/gl-es/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/gl-es/High.voc
rename to locale/gl-es/vocabulary/temperature/high.voc
diff --git a/vocab/gl-es/Hot.voc b/locale/gl-es/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/gl-es/Hot.voc
rename to locale/gl-es/vocabulary/temperature/hot.voc
diff --git a/vocab/gl-es/Low.voc b/locale/gl-es/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/gl-es/Low.voc
rename to locale/gl-es/vocabulary/temperature/low.voc
diff --git a/vocab/gl-es/Temperature.voc b/locale/gl-es/vocabulary/temperature/temperature.voc
similarity index 100%
rename from vocab/gl-es/Temperature.voc
rename to locale/gl-es/vocabulary/temperature/temperature.voc
diff --git a/vocab/ca-es/Fahrenheit.voc b/locale/gl-es/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from vocab/ca-es/Fahrenheit.voc
rename to locale/gl-es/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/gl-es/Unit.entity b/locale/gl-es/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/gl-es/Unit.entity
rename to locale/gl-es/vocabulary/unit/unit.entity
diff --git a/vocab/gl-es/Unit.voc b/locale/gl-es/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/gl-es/Unit.voc
rename to locale/gl-es/vocabulary/unit/unit.voc
diff --git a/vocab/gl-es/Weather.voc b/locale/gl-es/weather.voc
similarity index 100%
rename from vocab/gl-es/Weather.voc
rename to locale/gl-es/weather.voc
diff --git a/dialog/it-it/no precipitation expected.dialog b/locale/it-it/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/it-it/no precipitation expected.dialog
rename to locale/it-it/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/it-it/precipitation expected.dialog b/locale/it-it/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/it-it/precipitation expected.dialog
rename to locale/it-it/dialog/condition/precipitation expected.dialog
diff --git a/dialog/it-it/rain.dialog b/locale/it-it/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/it-it/rain.dialog
rename to locale/it-it/dialog/condition/rain.dialog
diff --git a/dialog/it-it/snow.dialog b/locale/it-it/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/it-it/snow.dialog
rename to locale/it-it/dialog/condition/snow.dialog
diff --git a/dialog/it-it/local.affirmative.condition.dialog b/locale/it-it/dialog/current/current-condition-expected-local.dialog
similarity index 100%
rename from dialog/it-it/local.affirmative.condition.dialog
rename to locale/it-it/dialog/current/current-condition-expected-local.dialog
diff --git a/dialog/it-it/affirmative.condition.dialog b/locale/it-it/dialog/current/current-condition-expected-location.dialog
similarity index 100%
rename from dialog/it-it/affirmative.condition.dialog
rename to locale/it-it/dialog/current/current-condition-expected-location.dialog
diff --git a/dialog/it-it/humidity.dialog b/locale/it-it/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/it-it/humidity.dialog
rename to locale/it-it/dialog/current/current-humidity-location.dialog
diff --git a/dialog/it-it/current.local.high.temperature.dialog b/locale/it-it/dialog/current/current-temperature-high-local.dialog
similarity index 100%
rename from dialog/it-it/current.local.high.temperature.dialog
rename to locale/it-it/dialog/current/current-temperature-high-local.dialog
diff --git a/dialog/it-it/current.high.temperature.dialog b/locale/it-it/dialog/current/current-temperature-high-location.dialog
similarity index 100%
rename from dialog/it-it/current.high.temperature.dialog
rename to locale/it-it/dialog/current/current-temperature-high-location.dialog
diff --git a/dialog/it-it/min.max.dialog b/locale/it-it/dialog/current/current-temperature-high-low.dialog
similarity index 100%
rename from dialog/it-it/min.max.dialog
rename to locale/it-it/dialog/current/current-temperature-high-low.dialog
diff --git a/dialog/it-it/current.local.temperature.dialog b/locale/it-it/dialog/current/current-temperature-local.dialog
similarity index 100%
rename from dialog/it-it/current.local.temperature.dialog
rename to locale/it-it/dialog/current/current-temperature-local.dialog
diff --git a/dialog/it-it/current.temperature.dialog b/locale/it-it/dialog/current/current-temperature-location.dialog
similarity index 100%
rename from dialog/it-it/current.temperature.dialog
rename to locale/it-it/dialog/current/current-temperature-location.dialog
diff --git a/dialog/it-it/current.local.low.temperature.dialog b/locale/it-it/dialog/current/current-temperature-low-local.dialog
similarity index 100%
rename from dialog/it-it/current.local.low.temperature.dialog
rename to locale/it-it/dialog/current/current-temperature-low-local.dialog
diff --git a/dialog/it-it/current.low.temperature.dialog b/locale/it-it/dialog/current/current-temperature-low-location.dialog
similarity index 100%
rename from dialog/it-it/current.low.temperature.dialog
rename to locale/it-it/dialog/current/current-temperature-low-location.dialog
diff --git a/dialog/it-it/current.local.weather.dialog b/locale/it-it/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/it-it/current.local.weather.dialog
rename to locale/it-it/dialog/current/current-weather-local.dialog
diff --git a/dialog/it-it/current.weather.dialog b/locale/it-it/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/it-it/current.weather.dialog
rename to locale/it-it/dialog/current/current-weather-location.dialog
diff --git a/dialog/it-it/local.light.wind.dialog b/locale/it-it/dialog/current/current-wind-light-local.dialog
similarity index 100%
rename from dialog/it-it/local.light.wind.dialog
rename to locale/it-it/dialog/current/current-wind-light-local.dialog
diff --git a/dialog/it-it/light.wind.dialog b/locale/it-it/dialog/current/current-wind-light-location.dialog
similarity index 100%
rename from dialog/it-it/light.wind.dialog
rename to locale/it-it/dialog/current/current-wind-light-location.dialog
diff --git a/dialog/it-it/local.medium.wind.dialog b/locale/it-it/dialog/current/current-wind-moderate-local.dialog
similarity index 100%
rename from dialog/it-it/local.medium.wind.dialog
rename to locale/it-it/dialog/current/current-wind-moderate-local.dialog
diff --git a/dialog/it-it/medium.wind.dialog b/locale/it-it/dialog/current/current-wind-moderate-location.dialog
similarity index 100%
rename from dialog/it-it/medium.wind.dialog
rename to locale/it-it/dialog/current/current-wind-moderate-location.dialog
diff --git a/dialog/it-it/local.hard.wind.dialog b/locale/it-it/dialog/current/current-wind-strong-local.dialog
similarity index 100%
rename from dialog/it-it/local.hard.wind.dialog
rename to locale/it-it/dialog/current/current-wind-strong-local.dialog
diff --git a/dialog/it-it/hard.wind.dialog b/locale/it-it/dialog/current/current-wind-strong-location.dialog
similarity index 100%
rename from dialog/it-it/hard.wind.dialog
rename to locale/it-it/dialog/current/current-wind-strong-location.dialog
diff --git a/dialog/it-it/forecast.local.affirmative.condition.dialog b/locale/it-it/dialog/daily/daily-condition-expected-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.affirmative.condition.dialog
rename to locale/it-it/dialog/daily/daily-condition-expected-local.dialog
diff --git a/dialog/it-it/forecast.affirmative.condition.dialog b/locale/it-it/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/it-it/forecast.affirmative.condition.dialog
rename to locale/it-it/dialog/daily/daily-condition-expected-location.dialog
diff --git a/dialog/it-it/forecast.local.high.temperature.dialog b/locale/it-it/dialog/daily/daily-temperature-high-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.high.temperature.dialog
rename to locale/it-it/dialog/daily/daily-temperature-high-local.dialog
diff --git a/dialog/it-it/forecast.high.temperature.dialog b/locale/it-it/dialog/daily/daily-temperature-high-location.dialog
similarity index 100%
rename from dialog/it-it/forecast.high.temperature.dialog
rename to locale/it-it/dialog/daily/daily-temperature-high-location.dialog
diff --git a/dialog/it-it/forecast.local.temperature.dialog b/locale/it-it/dialog/daily/daily-temperature-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.temperature.dialog
rename to locale/it-it/dialog/daily/daily-temperature-local.dialog
diff --git a/dialog/it-it/forecast.temperature.dialog b/locale/it-it/dialog/daily/daily-temperature-location.dialog
similarity index 100%
rename from dialog/it-it/forecast.temperature.dialog
rename to locale/it-it/dialog/daily/daily-temperature-location.dialog
diff --git a/dialog/it-it/forecast.local.low.temperature.dialog b/locale/it-it/dialog/daily/daily-temperature-low-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.low.temperature.dialog
rename to locale/it-it/dialog/daily/daily-temperature-low-local.dialog
diff --git a/dialog/it-it/forecast.local.weather.dialog b/locale/it-it/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.weather.dialog
rename to locale/it-it/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/it-it/forecast.weather.dialog b/locale/it-it/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/it-it/forecast.weather.dialog
rename to locale/it-it/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/it-it/forecast.local.light.wind.dialog b/locale/it-it/dialog/daily/daily-wind-light-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.light.wind.dialog
rename to locale/it-it/dialog/daily/daily-wind-light-local.dialog
diff --git a/dialog/it-it/forecast.light.wind.dialog b/locale/it-it/dialog/daily/daily-wind-light-location.dialog
similarity index 100%
rename from dialog/it-it/forecast.light.wind.dialog
rename to locale/it-it/dialog/daily/daily-wind-light-location.dialog
diff --git a/dialog/it-it/forecast.local.medium.wind.dialog b/locale/it-it/dialog/daily/daily-wind-moderate-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.medium.wind.dialog
rename to locale/it-it/dialog/daily/daily-wind-moderate-local.dialog
diff --git a/dialog/it-it/forecast.medium.wind.dialog b/locale/it-it/dialog/daily/daily-wind-moderate-location.dialog
similarity index 100%
rename from dialog/it-it/forecast.medium.wind.dialog
rename to locale/it-it/dialog/daily/daily-wind-moderate-location.dialog
diff --git a/dialog/it-it/forecast.local.hard.wind.dialog b/locale/it-it/dialog/daily/daily-wind-strong-local.dialog
similarity index 100%
rename from dialog/it-it/forecast.local.hard.wind.dialog
rename to locale/it-it/dialog/daily/daily-wind-strong-local.dialog
diff --git a/dialog/it-it/forecast.hard.wind.dialog b/locale/it-it/dialog/daily/daily-wind-strong-location.dialog
similarity index 100%
rename from dialog/it-it/forecast.hard.wind.dialog
rename to locale/it-it/dialog/daily/daily-wind-strong-location.dialog
diff --git a/dialog/it-it/E.dialog b/locale/it-it/dialog/direction/east.dialog
similarity index 100%
rename from dialog/it-it/E.dialog
rename to locale/it-it/dialog/direction/east.dialog
diff --git a/dialog/it-it/N.dialog b/locale/it-it/dialog/direction/north.dialog
similarity index 100%
rename from dialog/it-it/N.dialog
rename to locale/it-it/dialog/direction/north.dialog
diff --git a/dialog/it-it/NE.dialog b/locale/it-it/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/it-it/NE.dialog
rename to locale/it-it/dialog/direction/northeast.dialog
diff --git a/dialog/it-it/NW.dialog b/locale/it-it/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/it-it/NW.dialog
rename to locale/it-it/dialog/direction/northwest.dialog
diff --git a/dialog/it-it/S.dialog b/locale/it-it/dialog/direction/south.dialog
similarity index 100%
rename from dialog/it-it/S.dialog
rename to locale/it-it/dialog/direction/south.dialog
diff --git a/dialog/it-it/SE.dialog b/locale/it-it/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/it-it/SE.dialog
rename to locale/it-it/dialog/direction/southeast.dialog
diff --git a/dialog/it-it/SW.dialog b/locale/it-it/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/it-it/SW.dialog
rename to locale/it-it/dialog/direction/southwest.dialog
diff --git a/dialog/it-it/W.dialog b/locale/it-it/dialog/direction/west.dialog
similarity index 100%
rename from dialog/it-it/W.dialog
rename to locale/it-it/dialog/direction/west.dialog
diff --git a/dialog/it-it/location.not.found.dialog b/locale/it-it/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/it-it/location.not.found.dialog
rename to locale/it-it/dialog/error/location-not-found.dialog
diff --git a/dialog/it-it/hour.local.weather.dialog b/locale/it-it/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/it-it/hour.local.weather.dialog
rename to locale/it-it/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/it-it/hour.weather.dialog b/locale/it-it/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/it-it/hour.weather.dialog
rename to locale/it-it/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/it-it/celsius.dialog b/locale/it-it/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/it-it/celsius.dialog
rename to locale/it-it/dialog/unit/celsius.dialog
diff --git a/vocab/en-us/Fahrenheit.voc b/locale/it-it/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from vocab/en-us/Fahrenheit.voc
rename to locale/it-it/dialog/unit/fahrenheit.dialog
diff --git a/dialog/it-it/meters per second.dialog b/locale/it-it/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/it-it/meters per second.dialog
rename to locale/it-it/dialog/unit/meters per second.dialog
diff --git a/dialog/it-it/miles per hour.dialog b/locale/it-it/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/it-it/miles per hour.dialog
rename to locale/it-it/dialog/unit/miles per hour.dialog
diff --git a/vocab/it-it/Forecast.voc b/locale/it-it/forecast.voc
similarity index 100%
rename from vocab/it-it/Forecast.voc
rename to locale/it-it/forecast.voc
diff --git a/vocab/it-it/Location.voc b/locale/it-it/location.voc
similarity index 100%
rename from vocab/it-it/Location.voc
rename to locale/it-it/location.voc
diff --git a/regex/it-it/location.rx b/locale/it-it/regex/location.rx
similarity index 100%
rename from regex/it-it/location.rx
rename to locale/it-it/regex/location.rx
diff --git a/vocab/it-it/Sunrise.voc b/locale/it-it/sunrise.voc
similarity index 100%
rename from vocab/it-it/Sunrise.voc
rename to locale/it-it/sunrise.voc
diff --git a/vocab/it-it/Sunset.voc b/locale/it-it/sunset.voc
similarity index 100%
rename from vocab/it-it/Sunset.voc
rename to locale/it-it/sunset.voc
diff --git a/vocab/it-it/Clear.voc b/locale/it-it/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/it-it/Clear.voc
rename to locale/it-it/vocabulary/condition/clear.voc
diff --git a/vocab/it-it/Cloudy.voc b/locale/it-it/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/it-it/Cloudy.voc
rename to locale/it-it/vocabulary/condition/clouds.voc
diff --git a/vocab/it-it/do.i.need.an.umbrella.intent b/locale/it-it/vocabulary/condition/do.i.need.an.umbrella.intent
similarity index 100%
rename from vocab/it-it/do.i.need.an.umbrella.intent
rename to locale/it-it/vocabulary/condition/do.i.need.an.umbrella.intent
diff --git a/vocab/it-it/Foggy.voc b/locale/it-it/vocabulary/condition/fog.voc
similarity index 100%
rename from vocab/it-it/Foggy.voc
rename to locale/it-it/vocabulary/condition/fog.voc
diff --git a/vocab/it-it/Humidity.voc b/locale/it-it/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/it-it/Humidity.voc
rename to locale/it-it/vocabulary/condition/humidity.voc
diff --git a/vocab/it-it/Precipitation.voc b/locale/it-it/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/it-it/Precipitation.voc
rename to locale/it-it/vocabulary/condition/precipitation.voc
diff --git a/vocab/it-it/Raining.voc b/locale/it-it/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/it-it/Raining.voc
rename to locale/it-it/vocabulary/condition/rain.voc
diff --git a/vocab/it-it/Snowing.voc b/locale/it-it/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/it-it/Snowing.voc
rename to locale/it-it/vocabulary/condition/snow.voc
diff --git a/vocab/it-it/Windy.voc b/locale/it-it/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/it-it/Windy.voc
rename to locale/it-it/vocabulary/condition/windy.voc
diff --git a/vocab/it-it/Later.voc b/locale/it-it/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/it-it/Later.voc
rename to locale/it-it/vocabulary/date-time/later.voc
diff --git a/vocab/it-it/Next.voc b/locale/it-it/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/it-it/Next.voc
rename to locale/it-it/vocabulary/date-time/next.voc
diff --git a/vocab/it-it/Weekend.voc b/locale/it-it/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/it-it/Weekend.voc
rename to locale/it-it/vocabulary/date-time/weekend.voc
diff --git a/vocab/it-it/ConfirmQuery.voc b/locale/it-it/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/it-it/ConfirmQuery.voc
rename to locale/it-it/vocabulary/query/confirm-query.voc
diff --git a/vocab/it-it/Query.voc b/locale/it-it/vocabulary/query/query.voc
similarity index 100%
rename from vocab/it-it/Query.voc
rename to locale/it-it/vocabulary/query/query.voc
diff --git a/vocab/it-it/Cold.voc b/locale/it-it/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/it-it/Cold.voc
rename to locale/it-it/vocabulary/temperature/cold.voc
diff --git a/vocab/it-it/High.voc b/locale/it-it/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/it-it/High.voc
rename to locale/it-it/vocabulary/temperature/high.voc
diff --git a/vocab/it-it/Hot.voc b/locale/it-it/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/it-it/Hot.voc
rename to locale/it-it/vocabulary/temperature/hot.voc
diff --git a/vocab/it-it/Low.voc b/locale/it-it/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/it-it/Low.voc
rename to locale/it-it/vocabulary/temperature/low.voc
diff --git a/vocab/it-it/Temperature.voc b/locale/it-it/vocabulary/temperature/temperature.voc
similarity index 100%
rename from vocab/it-it/Temperature.voc
rename to locale/it-it/vocabulary/temperature/temperature.voc
diff --git a/vocab/gl-es/Fahrenheit.voc b/locale/it-it/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from vocab/gl-es/Fahrenheit.voc
rename to locale/it-it/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/it-it/Unit.entity b/locale/it-it/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/it-it/Unit.entity
rename to locale/it-it/vocabulary/unit/unit.entity
diff --git a/vocab/it-it/Unit.voc b/locale/it-it/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/it-it/Unit.voc
rename to locale/it-it/vocabulary/unit/unit.voc
diff --git a/vocab/it-it/Weather.voc b/locale/it-it/weather.voc
similarity index 100%
rename from vocab/it-it/Weather.voc
rename to locale/it-it/weather.voc
diff --git a/dialog/nl-nl/no precipitation expected.dialog b/locale/nl-nl/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/nl-nl/no precipitation expected.dialog
rename to locale/nl-nl/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/nl-nl/precipitation expected.dialog b/locale/nl-nl/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/nl-nl/precipitation expected.dialog
rename to locale/nl-nl/dialog/condition/precipitation expected.dialog
diff --git a/dialog/nl-nl/rain.dialog b/locale/nl-nl/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/nl-nl/rain.dialog
rename to locale/nl-nl/dialog/condition/rain.dialog
diff --git a/dialog/nl-nl/snow.dialog b/locale/nl-nl/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/nl-nl/snow.dialog
rename to locale/nl-nl/dialog/condition/snow.dialog
diff --git a/dialog/nl-nl/humidity.dialog b/locale/nl-nl/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/nl-nl/humidity.dialog
rename to locale/nl-nl/dialog/current/current-humidity-location.dialog
diff --git a/dialog/nl-nl/current.local.weather.dialog b/locale/nl-nl/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/nl-nl/current.local.weather.dialog
rename to locale/nl-nl/dialog/current/current-weather-local.dialog
diff --git a/dialog/nl-nl/current.weather.dialog b/locale/nl-nl/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/nl-nl/current.weather.dialog
rename to locale/nl-nl/dialog/current/current-weather-location.dialog
diff --git a/dialog/nl-nl/forecast.local.weather.dialog b/locale/nl-nl/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/nl-nl/forecast.local.weather.dialog
rename to locale/nl-nl/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/nl-nl/forecast.weather.dialog b/locale/nl-nl/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/nl-nl/forecast.weather.dialog
rename to locale/nl-nl/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/nl-nl/E.dialog b/locale/nl-nl/dialog/direction/east.dialog
similarity index 100%
rename from dialog/nl-nl/E.dialog
rename to locale/nl-nl/dialog/direction/east.dialog
diff --git a/dialog/nl-nl/N.dialog b/locale/nl-nl/dialog/direction/north.dialog
similarity index 100%
rename from dialog/nl-nl/N.dialog
rename to locale/nl-nl/dialog/direction/north.dialog
diff --git a/dialog/nl-nl/NE.dialog b/locale/nl-nl/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/nl-nl/NE.dialog
rename to locale/nl-nl/dialog/direction/northeast.dialog
diff --git a/dialog/nl-nl/NW.dialog b/locale/nl-nl/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/nl-nl/NW.dialog
rename to locale/nl-nl/dialog/direction/northwest.dialog
diff --git a/dialog/nl-nl/S.dialog b/locale/nl-nl/dialog/direction/south.dialog
similarity index 100%
rename from dialog/nl-nl/S.dialog
rename to locale/nl-nl/dialog/direction/south.dialog
diff --git a/dialog/nl-nl/SE.dialog b/locale/nl-nl/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/nl-nl/SE.dialog
rename to locale/nl-nl/dialog/direction/southeast.dialog
diff --git a/dialog/nl-nl/SW.dialog b/locale/nl-nl/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/nl-nl/SW.dialog
rename to locale/nl-nl/dialog/direction/southwest.dialog
diff --git a/dialog/nl-nl/location.not.found.dialog b/locale/nl-nl/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/nl-nl/location.not.found.dialog
rename to locale/nl-nl/dialog/error/location-not-found.dialog
diff --git a/dialog/nl-nl/hour.local.weather.dialog b/locale/nl-nl/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/nl-nl/hour.local.weather.dialog
rename to locale/nl-nl/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/nl-nl/hour.weather.dialog b/locale/nl-nl/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/nl-nl/hour.weather.dialog
rename to locale/nl-nl/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/nl-nl/celsius.dialog b/locale/nl-nl/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/nl-nl/celsius.dialog
rename to locale/nl-nl/dialog/unit/celsius.dialog
diff --git a/dialog/pt-br/fahrenheit.dialog b/locale/nl-nl/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/pt-br/fahrenheit.dialog
rename to locale/nl-nl/dialog/unit/fahrenheit.dialog
diff --git a/dialog/nl-nl/meters per second.dialog b/locale/nl-nl/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/nl-nl/meters per second.dialog
rename to locale/nl-nl/dialog/unit/meters per second.dialog
diff --git a/dialog/nl-nl/miles per hour.dialog b/locale/nl-nl/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/nl-nl/miles per hour.dialog
rename to locale/nl-nl/dialog/unit/miles per hour.dialog
diff --git a/vocab/nl-nl/Forecast.voc b/locale/nl-nl/forecast.voc
similarity index 100%
rename from vocab/nl-nl/Forecast.voc
rename to locale/nl-nl/forecast.voc
diff --git a/vocab/nl-nl/Location.voc b/locale/nl-nl/location.voc
similarity index 100%
rename from vocab/nl-nl/Location.voc
rename to locale/nl-nl/location.voc
diff --git a/regex/nl-nl/location.rx b/locale/nl-nl/regex/location.rx
similarity index 100%
rename from regex/nl-nl/location.rx
rename to locale/nl-nl/regex/location.rx
diff --git a/vocab/nl-nl/Sunrise.voc b/locale/nl-nl/sunrise.voc
similarity index 100%
rename from vocab/nl-nl/Sunrise.voc
rename to locale/nl-nl/sunrise.voc
diff --git a/vocab/nl-nl/Sunset.voc b/locale/nl-nl/sunset.voc
similarity index 100%
rename from vocab/nl-nl/Sunset.voc
rename to locale/nl-nl/sunset.voc
diff --git a/vocab/nl-nl/Humidity.voc b/locale/nl-nl/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/nl-nl/Humidity.voc
rename to locale/nl-nl/vocabulary/condition/humidity.voc
diff --git a/vocab/nl-nl/Precipitation.voc b/locale/nl-nl/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/nl-nl/Precipitation.voc
rename to locale/nl-nl/vocabulary/condition/precipitation.voc
diff --git a/vocab/nl-nl/Windy.voc b/locale/nl-nl/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/nl-nl/Windy.voc
rename to locale/nl-nl/vocabulary/condition/windy.voc
diff --git a/vocab/nl-nl/Later.voc b/locale/nl-nl/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/nl-nl/Later.voc
rename to locale/nl-nl/vocabulary/date-time/later.voc
diff --git a/vocab/nl-nl/Next.voc b/locale/nl-nl/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/nl-nl/Next.voc
rename to locale/nl-nl/vocabulary/date-time/next.voc
diff --git a/vocab/nl-nl/Query.voc b/locale/nl-nl/vocabulary/query/query.voc
similarity index 100%
rename from vocab/nl-nl/Query.voc
rename to locale/nl-nl/vocabulary/query/query.voc
diff --git a/vocab/nl-nl/Weather.voc b/locale/nl-nl/weather.voc
similarity index 100%
rename from vocab/nl-nl/Weather.voc
rename to locale/nl-nl/weather.voc
diff --git a/dialog/pt-br/and.dialog b/locale/pt-br/dialog/and.dialog
similarity index 100%
rename from dialog/pt-br/and.dialog
rename to locale/pt-br/dialog/and.dialog
diff --git a/dialog/pt-br/clear sky.dialog b/locale/pt-br/dialog/condition/clear sky.dialog
similarity index 100%
rename from dialog/pt-br/clear sky.dialog
rename to locale/pt-br/dialog/condition/clear sky.dialog
diff --git a/dialog/pt-br/clear.dialog b/locale/pt-br/dialog/condition/clear.dialog
similarity index 100%
rename from dialog/pt-br/clear.dialog
rename to locale/pt-br/dialog/condition/clear.dialog
diff --git a/dialog/pt-br/no precipitation expected.dialog b/locale/pt-br/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/pt-br/no precipitation expected.dialog
rename to locale/pt-br/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/pt-br/precipitation expected.dialog b/locale/pt-br/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/pt-br/precipitation expected.dialog
rename to locale/pt-br/dialog/condition/precipitation expected.dialog
diff --git a/dialog/pt-br/rain.dialog b/locale/pt-br/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/pt-br/rain.dialog
rename to locale/pt-br/dialog/condition/rain.dialog
diff --git a/dialog/pt-br/snow.dialog b/locale/pt-br/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/pt-br/snow.dialog
rename to locale/pt-br/dialog/condition/snow.dialog
diff --git a/dialog/pt-br/storm.dialog b/locale/pt-br/dialog/condition/thunderstorm.dialog
similarity index 100%
rename from dialog/pt-br/storm.dialog
rename to locale/pt-br/dialog/condition/thunderstorm.dialog
diff --git a/dialog/pt-br/local.affirmative.condition.dialog b/locale/pt-br/dialog/current/current-condition-expected-local.dialog
similarity index 100%
rename from dialog/pt-br/local.affirmative.condition.dialog
rename to locale/pt-br/dialog/current/current-condition-expected-local.dialog
diff --git a/dialog/pt-br/affirmative.condition.dialog b/locale/pt-br/dialog/current/current-condition-expected-location.dialog
similarity index 100%
rename from dialog/pt-br/affirmative.condition.dialog
rename to locale/pt-br/dialog/current/current-condition-expected-location.dialog
diff --git a/dialog/pt-br/humidity.dialog b/locale/pt-br/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/pt-br/humidity.dialog
rename to locale/pt-br/dialog/current/current-humidity-location.dialog
diff --git a/dialog/pt-br/current.local.high.temperature.dialog b/locale/pt-br/dialog/current/current-temperature-high-local.dialog
similarity index 100%
rename from dialog/pt-br/current.local.high.temperature.dialog
rename to locale/pt-br/dialog/current/current-temperature-high-local.dialog
diff --git a/dialog/pt-br/current.high.temperature.dialog b/locale/pt-br/dialog/current/current-temperature-high-location.dialog
similarity index 100%
rename from dialog/pt-br/current.high.temperature.dialog
rename to locale/pt-br/dialog/current/current-temperature-high-location.dialog
diff --git a/dialog/pt-br/min.max.dialog b/locale/pt-br/dialog/current/current-temperature-high-low.dialog
similarity index 100%
rename from dialog/pt-br/min.max.dialog
rename to locale/pt-br/dialog/current/current-temperature-high-low.dialog
diff --git a/dialog/pt-br/current.local.temperature.dialog b/locale/pt-br/dialog/current/current-temperature-local.dialog
similarity index 100%
rename from dialog/pt-br/current.local.temperature.dialog
rename to locale/pt-br/dialog/current/current-temperature-local.dialog
diff --git a/dialog/pt-br/current.temperature.dialog b/locale/pt-br/dialog/current/current-temperature-location.dialog
similarity index 100%
rename from dialog/pt-br/current.temperature.dialog
rename to locale/pt-br/dialog/current/current-temperature-location.dialog
diff --git a/dialog/pt-br/current.local.low.temperature.dialog b/locale/pt-br/dialog/current/current-temperature-low-local.dialog
similarity index 100%
rename from dialog/pt-br/current.local.low.temperature.dialog
rename to locale/pt-br/dialog/current/current-temperature-low-local.dialog
diff --git a/dialog/pt-br/current.low.temperature.dialog b/locale/pt-br/dialog/current/current-temperature-low-location.dialog
similarity index 100%
rename from dialog/pt-br/current.low.temperature.dialog
rename to locale/pt-br/dialog/current/current-temperature-low-location.dialog
diff --git a/dialog/pt-br/current.local.weather.dialog b/locale/pt-br/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/pt-br/current.local.weather.dialog
rename to locale/pt-br/dialog/current/current-weather-local.dialog
diff --git a/dialog/pt-br/current.weather.dialog b/locale/pt-br/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/pt-br/current.weather.dialog
rename to locale/pt-br/dialog/current/current-weather-location.dialog
diff --git a/dialog/pt-br/local.light.wind.dialog b/locale/pt-br/dialog/current/current-wind-light-local.dialog
similarity index 100%
rename from dialog/pt-br/local.light.wind.dialog
rename to locale/pt-br/dialog/current/current-wind-light-local.dialog
diff --git a/dialog/pt-br/light.wind.dialog b/locale/pt-br/dialog/current/current-wind-light-location.dialog
similarity index 100%
rename from dialog/pt-br/light.wind.dialog
rename to locale/pt-br/dialog/current/current-wind-light-location.dialog
diff --git a/dialog/pt-br/local.medium.wind.dialog b/locale/pt-br/dialog/current/current-wind-moderate-local.dialog
similarity index 100%
rename from dialog/pt-br/local.medium.wind.dialog
rename to locale/pt-br/dialog/current/current-wind-moderate-local.dialog
diff --git a/dialog/pt-br/medium.wind.dialog b/locale/pt-br/dialog/current/current-wind-moderate-location.dialog
similarity index 100%
rename from dialog/pt-br/medium.wind.dialog
rename to locale/pt-br/dialog/current/current-wind-moderate-location.dialog
diff --git a/dialog/pt-br/local.hard.wind.dialog b/locale/pt-br/dialog/current/current-wind-strong-local.dialog
similarity index 100%
rename from dialog/pt-br/local.hard.wind.dialog
rename to locale/pt-br/dialog/current/current-wind-strong-local.dialog
diff --git a/dialog/pt-br/hard.wind.dialog b/locale/pt-br/dialog/current/current-wind-strong-location.dialog
similarity index 100%
rename from dialog/pt-br/hard.wind.dialog
rename to locale/pt-br/dialog/current/current-wind-strong-location.dialog
diff --git a/dialog/pt-br/forecast.local.affirmative.condition.dialog b/locale/pt-br/dialog/daily/daily-condition-expected-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.affirmative.condition.dialog
rename to locale/pt-br/dialog/daily/daily-condition-expected-local.dialog
diff --git a/dialog/pt-br/forecast.affirmative.condition.dialog b/locale/pt-br/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/pt-br/forecast.affirmative.condition.dialog
rename to locale/pt-br/dialog/daily/daily-condition-expected-location.dialog
diff --git a/dialog/pt-br/forecast.local.high.temperature.dialog b/locale/pt-br/dialog/daily/daily-temperature-high-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.high.temperature.dialog
rename to locale/pt-br/dialog/daily/daily-temperature-high-local.dialog
diff --git a/dialog/pt-br/forecast.high.temperature.dialog b/locale/pt-br/dialog/daily/daily-temperature-high.dialog
similarity index 100%
rename from dialog/pt-br/forecast.high.temperature.dialog
rename to locale/pt-br/dialog/daily/daily-temperature-high.dialog
diff --git a/dialog/pt-br/forecast.local.temperature.dialog b/locale/pt-br/dialog/daily/daily-temperature-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.temperature.dialog
rename to locale/pt-br/dialog/daily/daily-temperature-local.dialog
diff --git a/dialog/pt-br/forecast.temperature.dialog b/locale/pt-br/dialog/daily/daily-temperature-location.dialog
similarity index 100%
rename from dialog/pt-br/forecast.temperature.dialog
rename to locale/pt-br/dialog/daily/daily-temperature-location.dialog
diff --git a/dialog/pt-br/forecast.local.low.temperature.dialog b/locale/pt-br/dialog/daily/daily-temperature-low-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.low.temperature.dialog
rename to locale/pt-br/dialog/daily/daily-temperature-low-local.dialog
diff --git a/dialog/pt-br/forecast.low.temperature.dialog b/locale/pt-br/dialog/daily/daily-temperature-low-location.dialog
similarity index 100%
rename from dialog/pt-br/forecast.low.temperature.dialog
rename to locale/pt-br/dialog/daily/daily-temperature-low-location.dialog
diff --git a/dialog/pt-br/forecast.local.weather.dialog b/locale/pt-br/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.weather.dialog
rename to locale/pt-br/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/pt-br/forecast.weather.dialog b/locale/pt-br/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/pt-br/forecast.weather.dialog
rename to locale/pt-br/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/pt-br/forecast.local.light.wind.dialog b/locale/pt-br/dialog/daily/daily-wind-light-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.light.wind.dialog
rename to locale/pt-br/dialog/daily/daily-wind-light-local.dialog
diff --git a/dialog/pt-br/forecast.light.wind.dialog b/locale/pt-br/dialog/daily/daily-wind-light-location.dialog
similarity index 100%
rename from dialog/pt-br/forecast.light.wind.dialog
rename to locale/pt-br/dialog/daily/daily-wind-light-location.dialog
diff --git a/dialog/pt-br/forecast.local.medium.wind.dialog b/locale/pt-br/dialog/daily/daily-wind-moderate-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.medium.wind.dialog
rename to locale/pt-br/dialog/daily/daily-wind-moderate-local.dialog
diff --git a/dialog/pt-br/forecast.medium.wind.dialog b/locale/pt-br/dialog/daily/daily-wind-moderate-location.dialog
similarity index 100%
rename from dialog/pt-br/forecast.medium.wind.dialog
rename to locale/pt-br/dialog/daily/daily-wind-moderate-location.dialog
diff --git a/dialog/pt-br/forecast.local.hard.wind.dialog b/locale/pt-br/dialog/daily/daily-wind-strong-local.dialog
similarity index 100%
rename from dialog/pt-br/forecast.local.hard.wind.dialog
rename to locale/pt-br/dialog/daily/daily-wind-strong-local.dialog
diff --git a/dialog/pt-br/forecast.hard.wind.dialog b/locale/pt-br/dialog/daily/daily-wind-strong-location.dialog
similarity index 100%
rename from dialog/pt-br/forecast.hard.wind.dialog
rename to locale/pt-br/dialog/daily/daily-wind-strong-location.dialog
diff --git a/dialog/pt-br/E.dialog b/locale/pt-br/dialog/direction/east.dialog
similarity index 100%
rename from dialog/pt-br/E.dialog
rename to locale/pt-br/dialog/direction/east.dialog
diff --git a/dialog/pt-br/N.dialog b/locale/pt-br/dialog/direction/north.dialog
similarity index 100%
rename from dialog/pt-br/N.dialog
rename to locale/pt-br/dialog/direction/north.dialog
diff --git a/dialog/pt-br/NE.dialog b/locale/pt-br/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/pt-br/NE.dialog
rename to locale/pt-br/dialog/direction/northeast.dialog
diff --git a/dialog/pt-br/NW.dialog b/locale/pt-br/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/pt-br/NW.dialog
rename to locale/pt-br/dialog/direction/northwest.dialog
diff --git a/dialog/pt-br/S.dialog b/locale/pt-br/dialog/direction/south.dialog
similarity index 100%
rename from dialog/pt-br/S.dialog
rename to locale/pt-br/dialog/direction/south.dialog
diff --git a/dialog/pt-br/SE.dialog b/locale/pt-br/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/pt-br/SE.dialog
rename to locale/pt-br/dialog/direction/southeast.dialog
diff --git a/dialog/pt-br/SW.dialog b/locale/pt-br/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/pt-br/SW.dialog
rename to locale/pt-br/dialog/direction/southwest.dialog
diff --git a/dialog/pt-br/W.dialog b/locale/pt-br/dialog/direction/west.dialog
similarity index 100%
rename from dialog/pt-br/W.dialog
rename to locale/pt-br/dialog/direction/west.dialog
diff --git a/dialog/pt-br/cant.get.forecast.dialog b/locale/pt-br/dialog/error/cant-get-forecast.dialog
similarity index 100%
rename from dialog/pt-br/cant.get.forecast.dialog
rename to locale/pt-br/dialog/error/cant-get-forecast.dialog
diff --git a/dialog/pt-br/location.not.found.dialog b/locale/pt-br/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/pt-br/location.not.found.dialog
rename to locale/pt-br/dialog/error/location-not-found.dialog
diff --git a/dialog/pt-br/at.time.local.cond.alternative.dialog b/locale/pt-br/dialog/hourly/hourly-condition-alternative-local.dialog
similarity index 100%
rename from dialog/pt-br/at.time.local.cond.alternative.dialog
rename to locale/pt-br/dialog/hourly/hourly-condition-alternative-local.dialog
diff --git a/dialog/pt-br/at.time.cond.alternative.dialog b/locale/pt-br/dialog/hourly/hourly-condition-alternative-location.dialog
similarity index 100%
rename from dialog/pt-br/at.time.cond.alternative.dialog
rename to locale/pt-br/dialog/hourly/hourly-condition-alternative-location.dialog
diff --git a/dialog/pt-br/at.time.local.affirmative.condition.dialog b/locale/pt-br/dialog/hourly/hourly-condition-expected-local.dialog
similarity index 100%
rename from dialog/pt-br/at.time.local.affirmative.condition.dialog
rename to locale/pt-br/dialog/hourly/hourly-condition-expected-local.dialog
diff --git a/dialog/pt-br/at.time.affirmative.condition.dialog b/locale/pt-br/dialog/hourly/hourly-condition-expected-location.dialog
similarity index 100%
rename from dialog/pt-br/at.time.affirmative.condition.dialog
rename to locale/pt-br/dialog/hourly/hourly-condition-expected-location.dialog
diff --git a/dialog/pt-br/at.time.local.no.cond.predicted.dialog b/locale/pt-br/dialog/hourly/hourly-condition-not-expected-local.dialog
similarity index 100%
rename from dialog/pt-br/at.time.local.no.cond.predicted.dialog
rename to locale/pt-br/dialog/hourly/hourly-condition-not-expected-local.dialog
diff --git a/dialog/pt-br/at.time.no.cond.predicted.dialog b/locale/pt-br/dialog/hourly/hourly-condition-not-expected-location.dialog
similarity index 100%
rename from dialog/pt-br/at.time.no.cond.predicted.dialog
rename to locale/pt-br/dialog/hourly/hourly-condition-not-expected-location.dialog
diff --git a/dialog/pt-br/at.time.local.temperature.dialog b/locale/pt-br/dialog/hourly/hourly-temperature-local.dialog
similarity index 100%
rename from dialog/pt-br/at.time.local.temperature.dialog
rename to locale/pt-br/dialog/hourly/hourly-temperature-local.dialog
diff --git a/dialog/pt-br/hour.local.weather.dialog b/locale/pt-br/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/pt-br/hour.local.weather.dialog
rename to locale/pt-br/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/pt-br/hour.weather.dialog b/locale/pt-br/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/pt-br/hour.weather.dialog
rename to locale/pt-br/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/pt-br/percentage.number.dialog b/locale/pt-br/dialog/percentage-number.dialog
similarity index 100%
rename from dialog/pt-br/percentage.number.dialog
rename to locale/pt-br/dialog/percentage-number.dialog
diff --git a/dialog/pt-br/celsius.dialog b/locale/pt-br/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/pt-br/celsius.dialog
rename to locale/pt-br/dialog/unit/celsius.dialog
diff --git a/vocab/de-de/Fahrenheit.voc b/locale/pt-br/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from vocab/de-de/Fahrenheit.voc
rename to locale/pt-br/dialog/unit/fahrenheit.dialog
diff --git a/dialog/pt-br/meters per second.dialog b/locale/pt-br/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/pt-br/meters per second.dialog
rename to locale/pt-br/dialog/unit/meters per second.dialog
diff --git a/dialog/pt-br/miles per hour.dialog b/locale/pt-br/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/pt-br/miles per hour.dialog
rename to locale/pt-br/dialog/unit/miles per hour.dialog
diff --git a/dialog/pt-br/weekly.temp.range.dialog b/locale/pt-br/dialog/weekly/weekly-temperature.dialog
similarity index 100%
rename from dialog/pt-br/weekly.temp.range.dialog
rename to locale/pt-br/dialog/weekly/weekly-temperature.dialog
diff --git a/vocab/pt-br/Forecast.voc b/locale/pt-br/forecast.voc
similarity index 100%
rename from vocab/pt-br/Forecast.voc
rename to locale/pt-br/forecast.voc
diff --git a/vocab/pt-br/Location.voc b/locale/pt-br/location.voc
similarity index 100%
rename from vocab/pt-br/Location.voc
rename to locale/pt-br/location.voc
diff --git a/regex/pt-br/location.rx b/locale/pt-br/regex/location.rx
similarity index 100%
rename from regex/pt-br/location.rx
rename to locale/pt-br/regex/location.rx
diff --git a/vocab/pt-br/Sunrise.voc b/locale/pt-br/sunrise.voc
similarity index 100%
rename from vocab/pt-br/Sunrise.voc
rename to locale/pt-br/sunrise.voc
diff --git a/vocab/pt-br/Sunset.voc b/locale/pt-br/sunset.voc
similarity index 100%
rename from vocab/pt-br/Sunset.voc
rename to locale/pt-br/sunset.voc
diff --git a/vocab/pt-br/Clear.voc b/locale/pt-br/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/pt-br/Clear.voc
rename to locale/pt-br/vocabulary/condition/clear.voc
diff --git a/vocab/pt-br/Cloudy.voc b/locale/pt-br/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/pt-br/Cloudy.voc
rename to locale/pt-br/vocabulary/condition/clouds.voc
diff --git a/vocab/pt-br/do.i.need.an.umbrella.intent b/locale/pt-br/vocabulary/condition/do.i.need.an.umbrella.intent
similarity index 100%
rename from vocab/pt-br/do.i.need.an.umbrella.intent
rename to locale/pt-br/vocabulary/condition/do.i.need.an.umbrella.intent
diff --git a/vocab/pt-br/Foggy.voc b/locale/pt-br/vocabulary/condition/fog.voc
similarity index 100%
rename from vocab/pt-br/Foggy.voc
rename to locale/pt-br/vocabulary/condition/fog.voc
diff --git a/vocab/pt-br/Humidity.voc b/locale/pt-br/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/pt-br/Humidity.voc
rename to locale/pt-br/vocabulary/condition/humidity.voc
diff --git a/vocab/pt-br/Precipitation.voc b/locale/pt-br/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/pt-br/Precipitation.voc
rename to locale/pt-br/vocabulary/condition/precipitation.voc
diff --git a/vocab/pt-br/Raining.voc b/locale/pt-br/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/pt-br/Raining.voc
rename to locale/pt-br/vocabulary/condition/rain.voc
diff --git a/vocab/pt-br/Snowing.voc b/locale/pt-br/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/pt-br/Snowing.voc
rename to locale/pt-br/vocabulary/condition/snow.voc
diff --git a/vocab/pt-br/Storm.voc b/locale/pt-br/vocabulary/condition/thunderstorm.voc
similarity index 100%
rename from vocab/pt-br/Storm.voc
rename to locale/pt-br/vocabulary/condition/thunderstorm.voc
diff --git a/vocab/pt-br/Windy.voc b/locale/pt-br/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/pt-br/Windy.voc
rename to locale/pt-br/vocabulary/condition/windy.voc
diff --git a/vocab/pt-br/Couple.voc b/locale/pt-br/vocabulary/date-time/couple.voc
similarity index 100%
rename from vocab/pt-br/Couple.voc
rename to locale/pt-br/vocabulary/date-time/couple.voc
diff --git a/vocab/pt-br/Later.voc b/locale/pt-br/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/pt-br/Later.voc
rename to locale/pt-br/vocabulary/date-time/later.voc
diff --git a/vocab/pt-br/Next.voc b/locale/pt-br/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/pt-br/Next.voc
rename to locale/pt-br/vocabulary/date-time/next.voc
diff --git a/vocab/pt-br/Now.voc b/locale/pt-br/vocabulary/date-time/now.voc
similarity index 100%
rename from vocab/pt-br/Now.voc
rename to locale/pt-br/vocabulary/date-time/now.voc
diff --git a/vocab/pt-br/RelativeDay.voc b/locale/pt-br/vocabulary/date-time/relative-day.voc
similarity index 100%
rename from vocab/pt-br/RelativeDay.voc
rename to locale/pt-br/vocabulary/date-time/relative-day.voc
diff --git a/vocab/pt-br/RelativeTime.voc b/locale/pt-br/vocabulary/date-time/relative-time.voc
similarity index 100%
rename from vocab/pt-br/RelativeTime.voc
rename to locale/pt-br/vocabulary/date-time/relative-time.voc
diff --git a/vocab/pt-br/Today.voc b/locale/pt-br/vocabulary/date-time/today.voc
similarity index 100%
rename from vocab/pt-br/Today.voc
rename to locale/pt-br/vocabulary/date-time/today.voc
diff --git a/vocab/pt-br/Week.voc b/locale/pt-br/vocabulary/date-time/week.voc
similarity index 100%
rename from vocab/pt-br/Week.voc
rename to locale/pt-br/vocabulary/date-time/week.voc
diff --git a/vocab/pt-br/Weekend.voc b/locale/pt-br/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/pt-br/Weekend.voc
rename to locale/pt-br/vocabulary/date-time/weekend.voc
diff --git a/vocab/pt-br/ConfirmQueryCurrent.voc b/locale/pt-br/vocabulary/query/confirm-query-current.voc
similarity index 100%
rename from vocab/pt-br/ConfirmQueryCurrent.voc
rename to locale/pt-br/vocabulary/query/confirm-query-current.voc
diff --git a/vocab/pt-br/ConfirmQueryFuture.voc b/locale/pt-br/vocabulary/query/confirm-query-future.voc
similarity index 100%
rename from vocab/pt-br/ConfirmQueryFuture.voc
rename to locale/pt-br/vocabulary/query/confirm-query-future.voc
diff --git a/vocab/pt-br/ConfirmQuery.voc b/locale/pt-br/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/pt-br/ConfirmQuery.voc
rename to locale/pt-br/vocabulary/query/confirm-query.voc
diff --git a/vocab/pt-br/How.voc b/locale/pt-br/vocabulary/query/how.voc
similarity index 100%
rename from vocab/pt-br/How.voc
rename to locale/pt-br/vocabulary/query/how.voc
diff --git a/vocab/pt-br/Query.voc b/locale/pt-br/vocabulary/query/query.voc
similarity index 100%
rename from vocab/pt-br/Query.voc
rename to locale/pt-br/vocabulary/query/query.voc
diff --git a/vocab/pt-br/When.voc b/locale/pt-br/vocabulary/query/when.voc
similarity index 100%
rename from vocab/pt-br/When.voc
rename to locale/pt-br/vocabulary/query/when.voc
diff --git a/vocab/pt-br/Cold.voc b/locale/pt-br/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/pt-br/Cold.voc
rename to locale/pt-br/vocabulary/temperature/cold.voc
diff --git a/vocab/pt-br/High.voc b/locale/pt-br/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/pt-br/High.voc
rename to locale/pt-br/vocabulary/temperature/high.voc
diff --git a/vocab/pt-br/Hot.voc b/locale/pt-br/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/pt-br/Hot.voc
rename to locale/pt-br/vocabulary/temperature/hot.voc
diff --git a/vocab/pt-br/Low.voc b/locale/pt-br/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/pt-br/Low.voc
rename to locale/pt-br/vocabulary/temperature/low.voc
diff --git a/vocab/pt-br/Temperature.voc b/locale/pt-br/vocabulary/temperature/temperature.voc
similarity index 100%
rename from vocab/pt-br/Temperature.voc
rename to locale/pt-br/vocabulary/temperature/temperature.voc
diff --git a/vocab/pt-br/Fahrenheit.voc b/locale/pt-br/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from vocab/pt-br/Fahrenheit.voc
rename to locale/pt-br/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/pt-br/Unit.entity b/locale/pt-br/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/pt-br/Unit.entity
rename to locale/pt-br/vocabulary/unit/unit.entity
diff --git a/vocab/pt-br/Unit.voc b/locale/pt-br/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/pt-br/Unit.voc
rename to locale/pt-br/vocabulary/unit/unit.voc
diff --git a/vocab/pt-br/Weather.voc b/locale/pt-br/weather.voc
similarity index 100%
rename from vocab/pt-br/Weather.voc
rename to locale/pt-br/weather.voc
diff --git a/dialog/ru-ru/no precipitation expected.dialog b/locale/ru-ru/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/ru-ru/no precipitation expected.dialog
rename to locale/ru-ru/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/ru-ru/precipitation expected.dialog b/locale/ru-ru/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/ru-ru/precipitation expected.dialog
rename to locale/ru-ru/dialog/condition/precipitation expected.dialog
diff --git a/dialog/ru-ru/rain.dialog b/locale/ru-ru/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/ru-ru/rain.dialog
rename to locale/ru-ru/dialog/condition/rain.dialog
diff --git a/dialog/ru-ru/snow.dialog b/locale/ru-ru/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/ru-ru/snow.dialog
rename to locale/ru-ru/dialog/condition/snow.dialog
diff --git a/dialog/ru-ru/humidity.dialog b/locale/ru-ru/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/ru-ru/humidity.dialog
rename to locale/ru-ru/dialog/current/current-humidity-location.dialog
diff --git a/dialog/ru-ru/current.local.weather.dialog b/locale/ru-ru/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/ru-ru/current.local.weather.dialog
rename to locale/ru-ru/dialog/current/current-weather-local.dialog
diff --git a/dialog/ru-ru/current.weather.dialog b/locale/ru-ru/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/ru-ru/current.weather.dialog
rename to locale/ru-ru/dialog/current/current-weather-location.dialog
diff --git a/dialog/ru-ru/forecast.weather.dialog b/locale/ru-ru/dialog/daily/daily-weather-loation.dialog
similarity index 100%
rename from dialog/ru-ru/forecast.weather.dialog
rename to locale/ru-ru/dialog/daily/daily-weather-loation.dialog
diff --git a/dialog/ru-ru/forecast.local.weather.dialog b/locale/ru-ru/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/ru-ru/forecast.local.weather.dialog
rename to locale/ru-ru/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/ru-ru/E.dialog b/locale/ru-ru/dialog/direction/east.dialog
similarity index 100%
rename from dialog/ru-ru/E.dialog
rename to locale/ru-ru/dialog/direction/east.dialog
diff --git a/dialog/ru-ru/N.dialog b/locale/ru-ru/dialog/direction/north.dialog
similarity index 100%
rename from dialog/ru-ru/N.dialog
rename to locale/ru-ru/dialog/direction/north.dialog
diff --git a/dialog/ru-ru/NE.dialog b/locale/ru-ru/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/ru-ru/NE.dialog
rename to locale/ru-ru/dialog/direction/northeast.dialog
diff --git a/dialog/ru-ru/NW.dialog b/locale/ru-ru/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/ru-ru/NW.dialog
rename to locale/ru-ru/dialog/direction/northwest.dialog
diff --git a/dialog/ru-ru/S.dialog b/locale/ru-ru/dialog/direction/south.dialog
similarity index 100%
rename from dialog/ru-ru/S.dialog
rename to locale/ru-ru/dialog/direction/south.dialog
diff --git a/dialog/ru-ru/SE.dialog b/locale/ru-ru/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/ru-ru/SE.dialog
rename to locale/ru-ru/dialog/direction/southeast.dialog
diff --git a/dialog/ru-ru/SW.dialog b/locale/ru-ru/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/ru-ru/SW.dialog
rename to locale/ru-ru/dialog/direction/southwest.dialog
diff --git a/dialog/ru-ru/W.dialog b/locale/ru-ru/dialog/direction/west.dialog
similarity index 100%
rename from dialog/ru-ru/W.dialog
rename to locale/ru-ru/dialog/direction/west.dialog
diff --git a/dialog/ru-ru/location.not.found.dialog b/locale/ru-ru/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/ru-ru/location.not.found.dialog
rename to locale/ru-ru/dialog/error/location-not-found.dialog
diff --git a/dialog/ru-ru/hour.local.weather.dialog b/locale/ru-ru/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/ru-ru/hour.local.weather.dialog
rename to locale/ru-ru/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/ru-ru/hour.weather.dialog b/locale/ru-ru/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/ru-ru/hour.weather.dialog
rename to locale/ru-ru/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/ru-ru/celsius.dialog b/locale/ru-ru/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/ru-ru/celsius.dialog
rename to locale/ru-ru/dialog/unit/celsius.dialog
diff --git a/dialog/ru-ru/fahrenheit.dialog b/locale/ru-ru/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from dialog/ru-ru/fahrenheit.dialog
rename to locale/ru-ru/dialog/unit/fahrenheit.dialog
diff --git a/dialog/ru-ru/meters per second.dialog b/locale/ru-ru/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/ru-ru/meters per second.dialog
rename to locale/ru-ru/dialog/unit/meters per second.dialog
diff --git a/dialog/ru-ru/miles per hour.dialog b/locale/ru-ru/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/ru-ru/miles per hour.dialog
rename to locale/ru-ru/dialog/unit/miles per hour.dialog
diff --git a/vocab/ru-ru/Forecast.voc b/locale/ru-ru/forecast.voc
similarity index 100%
rename from vocab/ru-ru/Forecast.voc
rename to locale/ru-ru/forecast.voc
diff --git a/vocab/ru-ru/Location.voc b/locale/ru-ru/location.voc
similarity index 100%
rename from vocab/ru-ru/Location.voc
rename to locale/ru-ru/location.voc
diff --git a/regex/ru-ru/location.rx b/locale/ru-ru/regex/location.rx
similarity index 100%
rename from regex/ru-ru/location.rx
rename to locale/ru-ru/regex/location.rx
diff --git a/vocab/ru-ru/Sunrise.voc b/locale/ru-ru/sunrise.voc
similarity index 100%
rename from vocab/ru-ru/Sunrise.voc
rename to locale/ru-ru/sunrise.voc
diff --git a/vocab/ru-ru/Sunset.voc b/locale/ru-ru/sunset.voc
similarity index 100%
rename from vocab/ru-ru/Sunset.voc
rename to locale/ru-ru/sunset.voc
diff --git a/vocab/ru-ru/Humidity.voc b/locale/ru-ru/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/ru-ru/Humidity.voc
rename to locale/ru-ru/vocabulary/condition/humidity.voc
diff --git a/vocab/ru-ru/Precipitation.voc b/locale/ru-ru/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/ru-ru/Precipitation.voc
rename to locale/ru-ru/vocabulary/condition/precipitation.voc
diff --git a/vocab/ru-ru/Windy.voc b/locale/ru-ru/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/ru-ru/Windy.voc
rename to locale/ru-ru/vocabulary/condition/windy.voc
diff --git a/vocab/ru-ru/Later.voc b/locale/ru-ru/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/ru-ru/Later.voc
rename to locale/ru-ru/vocabulary/date-time/later.voc
diff --git a/vocab/ru-ru/Next.voc b/locale/ru-ru/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/ru-ru/Next.voc
rename to locale/ru-ru/vocabulary/date-time/next.voc
diff --git a/vocab/ru-ru/Query.voc b/locale/ru-ru/vocabulary/query/query.voc
similarity index 100%
rename from vocab/ru-ru/Query.voc
rename to locale/ru-ru/vocabulary/query/query.voc
diff --git a/vocab/ru-ru/Weather.voc b/locale/ru-ru/weather.voc
similarity index 100%
rename from vocab/ru-ru/Weather.voc
rename to locale/ru-ru/weather.voc
diff --git a/dialog/sv-se/and.dialog b/locale/sv-se/dialog/and.dialog
similarity index 100%
rename from dialog/sv-se/and.dialog
rename to locale/sv-se/dialog/and.dialog
diff --git a/dialog/sv-se/clear sky.dialog b/locale/sv-se/dialog/condition/clear sky.dialog
similarity index 100%
rename from dialog/sv-se/clear sky.dialog
rename to locale/sv-se/dialog/condition/clear sky.dialog
diff --git a/dialog/sv-se/clear.dialog b/locale/sv-se/dialog/condition/clear.dialog
similarity index 100%
rename from dialog/sv-se/clear.dialog
rename to locale/sv-se/dialog/condition/clear.dialog
diff --git a/dialog/sv-se/no precipitation expected.dialog b/locale/sv-se/dialog/condition/no precipitation expected.dialog
similarity index 100%
rename from dialog/sv-se/no precipitation expected.dialog
rename to locale/sv-se/dialog/condition/no precipitation expected.dialog
diff --git a/dialog/sv-se/precipitation expected.dialog b/locale/sv-se/dialog/condition/precipitation expected.dialog
similarity index 100%
rename from dialog/sv-se/precipitation expected.dialog
rename to locale/sv-se/dialog/condition/precipitation expected.dialog
diff --git a/dialog/sv-se/rain.dialog b/locale/sv-se/dialog/condition/rain.dialog
similarity index 100%
rename from dialog/sv-se/rain.dialog
rename to locale/sv-se/dialog/condition/rain.dialog
diff --git a/dialog/sv-se/snow.dialog b/locale/sv-se/dialog/condition/snow.dialog
similarity index 100%
rename from dialog/sv-se/snow.dialog
rename to locale/sv-se/dialog/condition/snow.dialog
diff --git a/dialog/en-us/storm.dialog b/locale/sv-se/dialog/condition/thunderstorm.dialog
similarity index 100%
rename from dialog/en-us/storm.dialog
rename to locale/sv-se/dialog/condition/thunderstorm.dialog
diff --git a/dialog/sv-se/local.affirmative.condition.dialog b/locale/sv-se/dialog/current/current-condition-expected-local.dialog
similarity index 100%
rename from dialog/sv-se/local.affirmative.condition.dialog
rename to locale/sv-se/dialog/current/current-condition-expected-local.dialog
diff --git a/dialog/sv-se/affirmative.condition.dialog b/locale/sv-se/dialog/current/current-condition-expected-location.dialog
similarity index 100%
rename from dialog/sv-se/affirmative.condition.dialog
rename to locale/sv-se/dialog/current/current-condition-expected-location.dialog
diff --git a/dialog/sv-se/humidity.dialog b/locale/sv-se/dialog/current/current-humidity-location.dialog
similarity index 100%
rename from dialog/sv-se/humidity.dialog
rename to locale/sv-se/dialog/current/current-humidity-location.dialog
diff --git a/dialog/sv-se/current.local.high.temperature.dialog b/locale/sv-se/dialog/current/current-temperature-high-local.dialog
similarity index 100%
rename from dialog/sv-se/current.local.high.temperature.dialog
rename to locale/sv-se/dialog/current/current-temperature-high-local.dialog
diff --git a/dialog/sv-se/current.high.temperature.dialog b/locale/sv-se/dialog/current/current-temperature-high-location.dialog
similarity index 100%
rename from dialog/sv-se/current.high.temperature.dialog
rename to locale/sv-se/dialog/current/current-temperature-high-location.dialog
diff --git a/dialog/sv-se/min.max.dialog b/locale/sv-se/dialog/current/current-temperature-high-low.dialog
similarity index 100%
rename from dialog/sv-se/min.max.dialog
rename to locale/sv-se/dialog/current/current-temperature-high-low.dialog
diff --git a/dialog/sv-se/current.local.temperature.dialog b/locale/sv-se/dialog/current/current-temperature-local.dialog
similarity index 100%
rename from dialog/sv-se/current.local.temperature.dialog
rename to locale/sv-se/dialog/current/current-temperature-local.dialog
diff --git a/dialog/sv-se/current.temperature.dialog b/locale/sv-se/dialog/current/current-temperature-location.dialog
similarity index 100%
rename from dialog/sv-se/current.temperature.dialog
rename to locale/sv-se/dialog/current/current-temperature-location.dialog
diff --git a/dialog/sv-se/current.local.low.temperature.dialog b/locale/sv-se/dialog/current/current-temperature-low-local.dialog
similarity index 100%
rename from dialog/sv-se/current.local.low.temperature.dialog
rename to locale/sv-se/dialog/current/current-temperature-low-local.dialog
diff --git a/dialog/sv-se/current.low.temperature.dialog b/locale/sv-se/dialog/current/current-temperature-low-location.dialog
similarity index 100%
rename from dialog/sv-se/current.low.temperature.dialog
rename to locale/sv-se/dialog/current/current-temperature-low-location.dialog
diff --git a/dialog/sv-se/current.local.weather.dialog b/locale/sv-se/dialog/current/current-weather-local.dialog
similarity index 100%
rename from dialog/sv-se/current.local.weather.dialog
rename to locale/sv-se/dialog/current/current-weather-local.dialog
diff --git a/dialog/sv-se/current.weather.dialog b/locale/sv-se/dialog/current/current-weather-location.dialog
similarity index 100%
rename from dialog/sv-se/current.weather.dialog
rename to locale/sv-se/dialog/current/current-weather-location.dialog
diff --git a/dialog/sv-se/local.light.wind.dialog b/locale/sv-se/dialog/current/current-wind-light-local.dialog
similarity index 100%
rename from dialog/sv-se/local.light.wind.dialog
rename to locale/sv-se/dialog/current/current-wind-light-local.dialog
diff --git a/dialog/sv-se/light.wind.dialog b/locale/sv-se/dialog/current/current-wind-light-location.dialog
similarity index 100%
rename from dialog/sv-se/light.wind.dialog
rename to locale/sv-se/dialog/current/current-wind-light-location.dialog
diff --git a/dialog/sv-se/local.medium.wind.dialog b/locale/sv-se/dialog/current/current-wind-moderate-local.dialog
similarity index 100%
rename from dialog/sv-se/local.medium.wind.dialog
rename to locale/sv-se/dialog/current/current-wind-moderate-local.dialog
diff --git a/dialog/sv-se/medium.wind.dialog b/locale/sv-se/dialog/current/current-wind-moderate-location.dialog
similarity index 100%
rename from dialog/sv-se/medium.wind.dialog
rename to locale/sv-se/dialog/current/current-wind-moderate-location.dialog
diff --git a/dialog/sv-se/local.hard.wind.dialog b/locale/sv-se/dialog/current/current-wind-strong-local.dialog
similarity index 100%
rename from dialog/sv-se/local.hard.wind.dialog
rename to locale/sv-se/dialog/current/current-wind-strong-local.dialog
diff --git a/dialog/sv-se/hard.wind.dialog b/locale/sv-se/dialog/current/current-wind-strong-location.dialog
similarity index 100%
rename from dialog/sv-se/hard.wind.dialog
rename to locale/sv-se/dialog/current/current-wind-strong-location.dialog
diff --git a/dialog/sv-se/forecast.local.affirmative.condition.dialog b/locale/sv-se/dialog/daily/daily-condition-expected-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.affirmative.condition.dialog
rename to locale/sv-se/dialog/daily/daily-condition-expected-local.dialog
diff --git a/dialog/sv-se/forecast.affirmative.condition.dialog b/locale/sv-se/dialog/daily/daily-condition-expected-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.affirmative.condition.dialog
rename to locale/sv-se/dialog/daily/daily-condition-expected-location.dialog
diff --git a/dialog/sv-se/forecast.local.high.temperature.dialog b/locale/sv-se/dialog/daily/daily-temperature-high-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.high.temperature.dialog
rename to locale/sv-se/dialog/daily/daily-temperature-high-local.dialog
diff --git a/dialog/sv-se/forecast.high.temperature.dialog b/locale/sv-se/dialog/daily/daily-temperature-high-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.high.temperature.dialog
rename to locale/sv-se/dialog/daily/daily-temperature-high-location.dialog
diff --git a/dialog/sv-se/forecast.local.temperature.dialog b/locale/sv-se/dialog/daily/daily-temperature-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.temperature.dialog
rename to locale/sv-se/dialog/daily/daily-temperature-local.dialog
diff --git a/dialog/sv-se/forecast.temperature.dialog b/locale/sv-se/dialog/daily/daily-temperature-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.temperature.dialog
rename to locale/sv-se/dialog/daily/daily-temperature-location.dialog
diff --git a/dialog/sv-se/forecast.local.low.temperature.dialog b/locale/sv-se/dialog/daily/daily-temperature-low-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.low.temperature.dialog
rename to locale/sv-se/dialog/daily/daily-temperature-low-local.dialog
diff --git a/dialog/sv-se/forecast.low.temperature.dialog b/locale/sv-se/dialog/daily/daily-temperature-low-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.low.temperature.dialog
rename to locale/sv-se/dialog/daily/daily-temperature-low-location.dialog
diff --git a/dialog/sv-se/forecast.local.weather.dialog b/locale/sv-se/dialog/daily/daily-weather-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.weather.dialog
rename to locale/sv-se/dialog/daily/daily-weather-local.dialog
diff --git a/dialog/sv-se/forecast.weather.dialog b/locale/sv-se/dialog/daily/daily-weather-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.weather.dialog
rename to locale/sv-se/dialog/daily/daily-weather-location.dialog
diff --git a/dialog/sv-se/forecast.local.light.wind.dialog b/locale/sv-se/dialog/daily/daily-wind-light-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.light.wind.dialog
rename to locale/sv-se/dialog/daily/daily-wind-light-local.dialog
diff --git a/dialog/sv-se/forecast.light.wind.dialog b/locale/sv-se/dialog/daily/daily-wind-light-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.light.wind.dialog
rename to locale/sv-se/dialog/daily/daily-wind-light-location.dialog
diff --git a/dialog/sv-se/forecast.local.medium.wind.dialog b/locale/sv-se/dialog/daily/daily-wind-moderate-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.medium.wind.dialog
rename to locale/sv-se/dialog/daily/daily-wind-moderate-local.dialog
diff --git a/dialog/sv-se/forecast.medium.wind.dialog b/locale/sv-se/dialog/daily/daily-wind-moderate-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.medium.wind.dialog
rename to locale/sv-se/dialog/daily/daily-wind-moderate-location.dialog
diff --git a/dialog/sv-se/forecast.local.hard.wind.dialog b/locale/sv-se/dialog/daily/daily-wind-strong-local.dialog
similarity index 100%
rename from dialog/sv-se/forecast.local.hard.wind.dialog
rename to locale/sv-se/dialog/daily/daily-wind-strong-local.dialog
diff --git a/dialog/sv-se/forecast.hard.wind.dialog b/locale/sv-se/dialog/daily/daily-wind-strong-location.dialog
similarity index 100%
rename from dialog/sv-se/forecast.hard.wind.dialog
rename to locale/sv-se/dialog/daily/daily-wind-strong-location.dialog
diff --git a/dialog/sv-se/E.dialog b/locale/sv-se/dialog/direction/east.dialog
similarity index 100%
rename from dialog/sv-se/E.dialog
rename to locale/sv-se/dialog/direction/east.dialog
diff --git a/dialog/sv-se/N.dialog b/locale/sv-se/dialog/direction/north.dialog
similarity index 100%
rename from dialog/sv-se/N.dialog
rename to locale/sv-se/dialog/direction/north.dialog
diff --git a/dialog/sv-se/NE.dialog b/locale/sv-se/dialog/direction/northeast.dialog
similarity index 100%
rename from dialog/sv-se/NE.dialog
rename to locale/sv-se/dialog/direction/northeast.dialog
diff --git a/dialog/sv-se/NW.dialog b/locale/sv-se/dialog/direction/northwest.dialog
similarity index 100%
rename from dialog/sv-se/NW.dialog
rename to locale/sv-se/dialog/direction/northwest.dialog
diff --git a/dialog/sv-se/S.dialog b/locale/sv-se/dialog/direction/south.dialog
similarity index 100%
rename from dialog/sv-se/S.dialog
rename to locale/sv-se/dialog/direction/south.dialog
diff --git a/dialog/sv-se/SE.dialog b/locale/sv-se/dialog/direction/southeast.dialog
similarity index 100%
rename from dialog/sv-se/SE.dialog
rename to locale/sv-se/dialog/direction/southeast.dialog
diff --git a/dialog/sv-se/SW.dialog b/locale/sv-se/dialog/direction/southwest.dialog
similarity index 100%
rename from dialog/sv-se/SW.dialog
rename to locale/sv-se/dialog/direction/southwest.dialog
diff --git a/dialog/sv-se/W.dialog b/locale/sv-se/dialog/direction/west.dialog
similarity index 100%
rename from dialog/sv-se/W.dialog
rename to locale/sv-se/dialog/direction/west.dialog
diff --git a/dialog/sv-se/cant.get.forecast.dialog b/locale/sv-se/dialog/error/cant-get-forecast.dialog
similarity index 100%
rename from dialog/sv-se/cant.get.forecast.dialog
rename to locale/sv-se/dialog/error/cant-get-forecast.dialog
diff --git a/dialog/sv-se/location.not.found.dialog b/locale/sv-se/dialog/error/location-not-found.dialog
similarity index 100%
rename from dialog/sv-se/location.not.found.dialog
rename to locale/sv-se/dialog/error/location-not-found.dialog
diff --git a/dialog/sv-se/no.forecast.dialog b/locale/sv-se/dialog/error/no-forecast.dialog
similarity index 100%
rename from dialog/sv-se/no.forecast.dialog
rename to locale/sv-se/dialog/error/no-forecast.dialog
diff --git a/dialog/sv-se/at.time.local.cond.alternative.dialog b/locale/sv-se/dialog/hourly/hourly-condition-alternative-local.dialog
similarity index 100%
rename from dialog/sv-se/at.time.local.cond.alternative.dialog
rename to locale/sv-se/dialog/hourly/hourly-condition-alternative-local.dialog
diff --git a/dialog/sv-se/at.time.cond.alternative.dialog b/locale/sv-se/dialog/hourly/hourly-condition-alternative-location.dialog
similarity index 100%
rename from dialog/sv-se/at.time.cond.alternative.dialog
rename to locale/sv-se/dialog/hourly/hourly-condition-alternative-location.dialog
diff --git a/dialog/sv-se/at.time.local.affirmative.condition.dialog b/locale/sv-se/dialog/hourly/hourly-condition-expected-local.dialog
similarity index 100%
rename from dialog/sv-se/at.time.local.affirmative.condition.dialog
rename to locale/sv-se/dialog/hourly/hourly-condition-expected-local.dialog
diff --git a/dialog/sv-se/at.time.affirmative.condition.dialog b/locale/sv-se/dialog/hourly/hourly-condition-expected-location.dialog
similarity index 100%
rename from dialog/sv-se/at.time.affirmative.condition.dialog
rename to locale/sv-se/dialog/hourly/hourly-condition-expected-location.dialog
diff --git a/dialog/sv-se/at.time.local.no.cond.predicted.dialog b/locale/sv-se/dialog/hourly/hourly-condition-not-expected-local.dialog
similarity index 100%
rename from dialog/sv-se/at.time.local.no.cond.predicted.dialog
rename to locale/sv-se/dialog/hourly/hourly-condition-not-expected-local.dialog
diff --git a/dialog/sv-se/at.time.no.cond.predicted.dialog b/locale/sv-se/dialog/hourly/hourly-condition-not-expected-location.dialog
similarity index 100%
rename from dialog/sv-se/at.time.no.cond.predicted.dialog
rename to locale/sv-se/dialog/hourly/hourly-condition-not-expected-location.dialog
diff --git a/dialog/sv-se/at.time.local.temperature.dialog b/locale/sv-se/dialog/hourly/hourly-temperature-local.dialog
similarity index 100%
rename from dialog/sv-se/at.time.local.temperature.dialog
rename to locale/sv-se/dialog/hourly/hourly-temperature-local.dialog
diff --git a/dialog/sv-se/hour.local.weather.dialog b/locale/sv-se/dialog/hourly/hourly-weather-local.dialog
similarity index 100%
rename from dialog/sv-se/hour.local.weather.dialog
rename to locale/sv-se/dialog/hourly/hourly-weather-local.dialog
diff --git a/dialog/sv-se/hour.weather.dialog b/locale/sv-se/dialog/hourly/hourly-weather-location.dialog
similarity index 100%
rename from dialog/sv-se/hour.weather.dialog
rename to locale/sv-se/dialog/hourly/hourly-weather-location.dialog
diff --git a/dialog/sv-se/percentage.number.dialog b/locale/sv-se/dialog/percentage-number.dialog
similarity index 100%
rename from dialog/sv-se/percentage.number.dialog
rename to locale/sv-se/dialog/percentage-number.dialog
diff --git a/dialog/sv-se/celsius.dialog b/locale/sv-se/dialog/unit/celsius.dialog
similarity index 100%
rename from dialog/sv-se/celsius.dialog
rename to locale/sv-se/dialog/unit/celsius.dialog
diff --git a/vocab/it-it/Fahrenheit.voc b/locale/sv-se/dialog/unit/fahrenheit.dialog
similarity index 100%
rename from vocab/it-it/Fahrenheit.voc
rename to locale/sv-se/dialog/unit/fahrenheit.dialog
diff --git a/dialog/sv-se/meters per second.dialog b/locale/sv-se/dialog/unit/meters per second.dialog
similarity index 100%
rename from dialog/sv-se/meters per second.dialog
rename to locale/sv-se/dialog/unit/meters per second.dialog
diff --git a/dialog/sv-se/miles per hour.dialog b/locale/sv-se/dialog/unit/miles per hour.dialog
similarity index 100%
rename from dialog/sv-se/miles per hour.dialog
rename to locale/sv-se/dialog/unit/miles per hour.dialog
diff --git a/dialog/sv-se/weekly.temp.range.dialog b/locale/sv-se/dialog/weekly/weekly-temperature.dialog
similarity index 100%
rename from dialog/sv-se/weekly.temp.range.dialog
rename to locale/sv-se/dialog/weekly/weekly-temperature.dialog
diff --git a/vocab/sv-se/Forecast.voc b/locale/sv-se/forecast.voc
similarity index 100%
rename from vocab/sv-se/Forecast.voc
rename to locale/sv-se/forecast.voc
diff --git a/vocab/gl-es/Location.voc b/locale/sv-se/location.voc
similarity index 100%
rename from vocab/gl-es/Location.voc
rename to locale/sv-se/location.voc
diff --git a/regex/sv-se/location.rx b/locale/sv-se/regex/location.rx
similarity index 100%
rename from regex/sv-se/location.rx
rename to locale/sv-se/regex/location.rx
diff --git a/vocab/sv-se/Sunrise.voc b/locale/sv-se/sunrise.voc
similarity index 100%
rename from vocab/sv-se/Sunrise.voc
rename to locale/sv-se/sunrise.voc
diff --git a/vocab/sv-se/Sunset.voc b/locale/sv-se/sunset.voc
similarity index 100%
rename from vocab/sv-se/Sunset.voc
rename to locale/sv-se/sunset.voc
diff --git a/vocab/sv-se/Clear.voc b/locale/sv-se/vocabulary/condition/clear.voc
similarity index 100%
rename from vocab/sv-se/Clear.voc
rename to locale/sv-se/vocabulary/condition/clear.voc
diff --git a/vocab/sv-se/Cloudy.voc b/locale/sv-se/vocabulary/condition/clouds.voc
similarity index 100%
rename from vocab/sv-se/Cloudy.voc
rename to locale/sv-se/vocabulary/condition/clouds.voc
diff --git a/vocab/sv-se/do.i.need.an.umbrella.intent b/locale/sv-se/vocabulary/condition/do.i.need.an.umbrella.intent
similarity index 100%
rename from vocab/sv-se/do.i.need.an.umbrella.intent
rename to locale/sv-se/vocabulary/condition/do.i.need.an.umbrella.intent
diff --git a/vocab/sv-se/Humidity.voc b/locale/sv-se/vocabulary/condition/humidity.voc
similarity index 100%
rename from vocab/sv-se/Humidity.voc
rename to locale/sv-se/vocabulary/condition/humidity.voc
diff --git a/vocab/sv-se/Precipitation.voc b/locale/sv-se/vocabulary/condition/precipitation.voc
similarity index 100%
rename from vocab/sv-se/Precipitation.voc
rename to locale/sv-se/vocabulary/condition/precipitation.voc
diff --git a/vocab/sv-se/Raining.voc b/locale/sv-se/vocabulary/condition/rain.voc
similarity index 100%
rename from vocab/sv-se/Raining.voc
rename to locale/sv-se/vocabulary/condition/rain.voc
diff --git a/vocab/sv-se/Snowing.voc b/locale/sv-se/vocabulary/condition/snow.voc
similarity index 100%
rename from vocab/sv-se/Snowing.voc
rename to locale/sv-se/vocabulary/condition/snow.voc
diff --git a/vocab/sv-se/Storm.voc b/locale/sv-se/vocabulary/condition/thunderstorm.voc
similarity index 100%
rename from vocab/sv-se/Storm.voc
rename to locale/sv-se/vocabulary/condition/thunderstorm.voc
diff --git a/vocab/sv-se/Windy.voc b/locale/sv-se/vocabulary/condition/windy.voc
similarity index 100%
rename from vocab/sv-se/Windy.voc
rename to locale/sv-se/vocabulary/condition/windy.voc
diff --git a/vocab/sv-se/Couple.voc b/locale/sv-se/vocabulary/date-time/couple.voc
similarity index 100%
rename from vocab/sv-se/Couple.voc
rename to locale/sv-se/vocabulary/date-time/couple.voc
diff --git a/vocab/sv-se/Later.voc b/locale/sv-se/vocabulary/date-time/later.voc
similarity index 100%
rename from vocab/sv-se/Later.voc
rename to locale/sv-se/vocabulary/date-time/later.voc
diff --git a/vocab/sv-se/Next.voc b/locale/sv-se/vocabulary/date-time/next.voc
similarity index 100%
rename from vocab/sv-se/Next.voc
rename to locale/sv-se/vocabulary/date-time/next.voc
diff --git a/vocab/sv-se/Now.voc b/locale/sv-se/vocabulary/date-time/now.voc
similarity index 100%
rename from vocab/sv-se/Now.voc
rename to locale/sv-se/vocabulary/date-time/now.voc
diff --git a/vocab/sv-se/RelativeDay.voc b/locale/sv-se/vocabulary/date-time/relative-day.voc
similarity index 100%
rename from vocab/sv-se/RelativeDay.voc
rename to locale/sv-se/vocabulary/date-time/relative-day.voc
diff --git a/vocab/sv-se/RelativeTime.voc b/locale/sv-se/vocabulary/date-time/relative-time.voc
similarity index 100%
rename from vocab/sv-se/RelativeTime.voc
rename to locale/sv-se/vocabulary/date-time/relative-time.voc
diff --git a/vocab/sv-se/Today.voc b/locale/sv-se/vocabulary/date-time/today.voc
similarity index 100%
rename from vocab/sv-se/Today.voc
rename to locale/sv-se/vocabulary/date-time/today.voc
diff --git a/vocab/sv-se/Week.voc b/locale/sv-se/vocabulary/date-time/week.voc
similarity index 100%
rename from vocab/sv-se/Week.voc
rename to locale/sv-se/vocabulary/date-time/week.voc
diff --git a/vocab/sv-se/Weekend.voc b/locale/sv-se/vocabulary/date-time/weekend.voc
similarity index 100%
rename from vocab/sv-se/Weekend.voc
rename to locale/sv-se/vocabulary/date-time/weekend.voc
diff --git a/vocab/sv-se/ConfirmQueryCurrent.voc b/locale/sv-se/vocabulary/query/confirm-query-current.voc
similarity index 100%
rename from vocab/sv-se/ConfirmQueryCurrent.voc
rename to locale/sv-se/vocabulary/query/confirm-query-current.voc
diff --git a/vocab/sv-se/ConfirmQueryFuture.voc b/locale/sv-se/vocabulary/query/confirm-query-future.voc
similarity index 100%
rename from vocab/sv-se/ConfirmQueryFuture.voc
rename to locale/sv-se/vocabulary/query/confirm-query-future.voc
diff --git a/vocab/sv-se/ConfirmQuery.voc b/locale/sv-se/vocabulary/query/confirm-query.voc
similarity index 100%
rename from vocab/sv-se/ConfirmQuery.voc
rename to locale/sv-se/vocabulary/query/confirm-query.voc
diff --git a/vocab/sv-se/How.voc b/locale/sv-se/vocabulary/query/how.voc
similarity index 100%
rename from vocab/sv-se/How.voc
rename to locale/sv-se/vocabulary/query/how.voc
diff --git a/vocab/sv-se/Query.voc b/locale/sv-se/vocabulary/query/query.voc
similarity index 100%
rename from vocab/sv-se/Query.voc
rename to locale/sv-se/vocabulary/query/query.voc
diff --git a/vocab/sv-se/When.voc b/locale/sv-se/vocabulary/query/when.voc
similarity index 100%
rename from vocab/sv-se/When.voc
rename to locale/sv-se/vocabulary/query/when.voc
diff --git a/vocab/sv-se/Cold.voc b/locale/sv-se/vocabulary/temperature/cold.voc
similarity index 100%
rename from vocab/sv-se/Cold.voc
rename to locale/sv-se/vocabulary/temperature/cold.voc
diff --git a/vocab/sv-se/Foggy.voc b/locale/sv-se/vocabulary/temperature/fog.voc
similarity index 100%
rename from vocab/sv-se/Foggy.voc
rename to locale/sv-se/vocabulary/temperature/fog.voc
diff --git a/vocab/sv-se/High.voc b/locale/sv-se/vocabulary/temperature/high.voc
similarity index 100%
rename from vocab/sv-se/High.voc
rename to locale/sv-se/vocabulary/temperature/high.voc
diff --git a/vocab/sv-se/Hot.voc b/locale/sv-se/vocabulary/temperature/hot.voc
similarity index 100%
rename from vocab/sv-se/Hot.voc
rename to locale/sv-se/vocabulary/temperature/hot.voc
diff --git a/vocab/sv-se/Low.voc b/locale/sv-se/vocabulary/temperature/low.voc
similarity index 100%
rename from vocab/sv-se/Low.voc
rename to locale/sv-se/vocabulary/temperature/low.voc
diff --git a/vocab/sv-se/Temperature.voc b/locale/sv-se/vocabulary/temperature/temperature.voc
similarity index 100%
rename from vocab/sv-se/Temperature.voc
rename to locale/sv-se/vocabulary/temperature/temperature.voc
diff --git a/vocab/sv-se/Fahrenheit.voc b/locale/sv-se/vocabulary/unit/fahrenheit.voc
similarity index 100%
rename from vocab/sv-se/Fahrenheit.voc
rename to locale/sv-se/vocabulary/unit/fahrenheit.voc
diff --git a/vocab/sv-se/Unit.entity b/locale/sv-se/vocabulary/unit/unit.entity
similarity index 100%
rename from vocab/sv-se/Unit.entity
rename to locale/sv-se/vocabulary/unit/unit.entity
diff --git a/vocab/sv-se/Unit.voc b/locale/sv-se/vocabulary/unit/unit.voc
similarity index 100%
rename from vocab/sv-se/Unit.voc
rename to locale/sv-se/vocabulary/unit/unit.voc
diff --git a/vocab/sv-se/Weather.voc b/locale/sv-se/weather.voc
similarity index 100%
rename from vocab/sv-se/Weather.voc
rename to locale/sv-se/weather.voc
diff --git a/regex/da-dk/AUTO_TRANSLATED b/regex/da-dk/AUTO_TRANSLATED
deleted file mode 100644
index 11b245d4..00000000
--- a/regex/da-dk/AUTO_TRANSLATED
+++ /dev/null
@@ -1 +0,0 @@
-Files in this folder is auto translated by mycroft-msk. Files in this folder is auto translated by mycroft-msk.
\ No newline at end of file
diff --git a/skill/__init__.py b/skill/__init__.py
new file mode 100644
index 00000000..1440667f
--- /dev/null
+++ b/skill/__init__.py
@@ -0,0 +1,26 @@
+# Copyright 2021, Mycroft AI Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from .api import OpenWeatherMapApi
+from .config import WeatherConfig
+from .dialog import (
+ CurrentDialog,
+ DailyDialog,
+ HourlyDialog,
+ WeatherDialog,
+ WeeklyDialog,
+ get_dialog_for_timeframe,
+)
+from .intent import WeatherIntent
+from .weather import CURRENT, DAILY, DailyWeather, HOURLY, WeatherReport
+from .util import LocationNotFoundError
diff --git a/skill/api.py b/skill/api.py
new file mode 100644
index 00000000..1032eed4
--- /dev/null
+++ b/skill/api.py
@@ -0,0 +1,128 @@
+# Copyright 2021, Mycroft AI Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Call the Open Weather Map One Call API through Selene.
+
+The One Call API provides current weather, 48 hourly forecasts, 7 daily forecasts
+and weather alert data all in a single API call. The endpoint is passed a
+latitude and longitude from either the user's configuration or a requested
+location.
+
+It also supports returning values in the measurement system (Metric/Imperial)
+provided, precluding us from having to do the conversions.
+
+"""
+from mycroft.api import Api
+from .weather import WeatherReport
+
+OPEN_WEATHER_MAP_LANGUAGES = (
+ "af",
+ "al",
+ "ar",
+ "bg",
+ "ca",
+ "cz",
+ "da",
+ "de",
+ "el",
+ "en",
+ "es",
+ "eu",
+ "fa",
+ "fi",
+ "fr",
+ "gl",
+ "he",
+ "hi",
+ "hr",
+ "hu",
+ "id",
+ "it",
+ "ja",
+ "kr",
+ "la",
+ "lt",
+ "mk",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "pt_br",
+ "ro",
+ "ru",
+ "se",
+ "sk",
+ "sl",
+ "sp",
+ "sr",
+ "sv",
+ "th",
+ "tr",
+ "ua",
+ "uk",
+ "vi",
+ "zh_cn",
+ "zh_tw",
+ "zu"
+)
+
+
+class OpenWeatherMapApi(Api):
+ """Use Open Weather Map's One Call API to retrieve weather information"""
+
+ def __init__(self):
+ super().__init__(path="owm")
+ self.language = "en"
+
+ def get_weather_for_coordinates(
+ self, measurement_system: str, latitude: float, longitude: float
+ ) -> WeatherReport:
+ """Issue an API call and map the return value into a weather report
+
+ Args:
+ measurement_system: Metric or Imperial measurement units
+ latitude: the geologic latitude of the weather location
+ longitude: the geologic longitude of the weather location
+ """
+ query_parameters = dict(
+ exclude="minutely",
+ lang=self.language,
+ lat=latitude,
+ lon=longitude,
+ units=measurement_system
+ )
+ api_request = dict(path="/onecall", query=query_parameters)
+ response = self.request(api_request)
+ local_weather = WeatherReport(response)
+
+ return local_weather
+
+ def set_language_parameter(self, language_config: str):
+ """
+ OWM supports 31 languages, see https://openweathermap.org/current#multi
+
+ Convert Mycroft's language code to OpenWeatherMap's, if missing use english.
+
+ Args:
+ language_config: The Mycroft language code.
+ """
+ special_cases = {"cs": "cz", "ko": "kr", "lv": "la"}
+ language_part_one, language_part_two = language_config.split('-')
+ if language_config.replace('-', '_') in OPEN_WEATHER_MAP_LANGUAGES:
+ self.language = language_config.replace('-', '_')
+ elif language_part_one in OPEN_WEATHER_MAP_LANGUAGES:
+ self.language = language_part_one
+ elif language_part_two in OPEN_WEATHER_MAP_LANGUAGES:
+ self.language = language_part_two
+ elif language_part_one in special_cases:
+ self.language = special_cases[language_part_one]
diff --git a/skill/config.py b/skill/config.py
new file mode 100644
index 00000000..34c3c33e
--- /dev/null
+++ b/skill/config.py
@@ -0,0 +1,86 @@
+# Copyright 2021, Mycroft AI Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Parse the device configuration and skill settings to determine the """
+FAHRENHEIT = "fahrenheit"
+CELSIUS = "celsius"
+METRIC = "metric"
+METERS_PER_SECOND = "meters per second"
+MILES_PER_HOUR = "miles per hour"
+
+
+class WeatherConfig:
+ """Build an object representing the configuration values for the weather skill."""
+
+ def __init__(self, core_config: dict, settings: dict):
+ self.core_config = core_config
+ self.settings = settings
+
+ @property
+ def city(self):
+ """The current value of the city name in the device configuration."""
+ return self.core_config["location"]["city"]["name"]
+
+ @property
+ def country(self):
+ """The current value of the country name in the device configuration."""
+ return self.core_config["location"]["city"]["state"]["country"]["name"]
+
+ @property
+ def latitude(self):
+ """The current value of the latitude location configuration"""
+ return self.core_config["location"]["coordinate"]["latitude"]
+
+ @property
+ def longitude(self):
+ """The current value of the longitude location configuration"""
+ return self.core_config["location"]["coordinate"]["longitude"]
+
+ @property
+ def state(self):
+ """The current value of the state name in the device configuration."""
+ return self.core_config["location"]["city"]["state"]["name"]
+
+ @property
+ def speed_unit(self) -> str:
+ """Use the core configuration to determine the unit of speed.
+
+ Returns: (str) 'meters_sec' or 'mph'
+ """
+ system_unit = self.core_config["system_unit"]
+ if system_unit == METRIC:
+ speed_unit = METERS_PER_SECOND
+ else:
+ speed_unit = MILES_PER_HOUR
+
+ return speed_unit
+
+ @property
+ def temperature_unit(self) -> str:
+ """Use the core configuration to determine the unit of temperature.
+
+ Returns: "celsius" or "fahrenheit"
+ """
+ unit_from_settings = self.settings.get("units")
+ measurement_system = self.core_config["system_unit"]
+ if measurement_system == METRIC:
+ temperature_unit = CELSIUS
+ else:
+ temperature_unit = FAHRENHEIT
+ if unit_from_settings is not None and unit_from_settings != "default":
+ if unit_from_settings.lower() == FAHRENHEIT:
+ temperature_unit = FAHRENHEIT
+ elif unit_from_settings.lower() == CELSIUS:
+ temperature_unit = CELSIUS
+
+ return temperature_unit
diff --git a/skill/dialog.py b/skill/dialog.py
new file mode 100644
index 00000000..b356810d
--- /dev/null
+++ b/skill/dialog.py
@@ -0,0 +1,435 @@
+# Copyright 2021, Mycroft AI Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Abstraction of dialog building for the weather skill.
+
+There are A LOT of dialog files in this skill. All the permutations of timeframe,
+weather condition and location add up fast. To help with discoverability, a naming
+convention was applied to the dialog files:
+ ---.dialog
+
+ Example:
+ daily-temperature-high-local.dialog
+
+ * Timeframe: the date or time applicable to the forecast. This skill supports
+ current, hourly and daily weather.
+ * Weather info: a description of what type of weather the dialog refers to.
+ Examples include "temperature", "weather" and "sunrise".
+ * Qualifier: further qualifies what type of weather is being reported. For
+ example, temperature can be qualified by "high" or "low".
+ * Locale: indicates if the dialog is for local weather or weather in a remote
+ location.
+
+The skill class will use the "name" and "data" attributes to pass to the TTS process.
+"""
+from typing import List, Tuple
+
+from mycroft.util.format import join_list, nice_number, nice_time
+from mycroft.util.time import now_local
+from .config import WeatherConfig
+from .intent import WeatherIntent
+from .util import get_speakable_day_of_week, get_time_period
+from .weather import (
+ CURRENT,
+ CurrentWeather,
+ DAILY,
+ DailyWeather,
+ HOURLY,
+ HourlyWeather,
+)
+
+# TODO: MISSING DIALOGS
+# - current.clear.alternative.local
+# - current.clouds.alternative.local
+# - daily.snow.alternative.local
+# - all hourly..alternative.local/location
+# - all hourly..not.expected.local/location
+class WeatherDialog:
+ """Abstract base class for the weather dialog builders."""
+
+ def __init__(self, intent_data: WeatherIntent, config: WeatherConfig):
+ self.intent_data = intent_data
+ self.config = config
+ self.name = None
+ self.data = None
+
+ def _add_location(self):
+ """Add location information to the dialog."""
+ if self.intent_data.location is None:
+ self.name += "-local"
+ else:
+ self.name += "-location"
+ if self.config.country == self.intent_data.geolocation["country"]:
+ spoken_location = ", ".join(
+ [
+ self.intent_data.geolocation["city"],
+ self.intent_data.geolocation["region"],
+ ]
+ )
+ else:
+ spoken_location = ", ".join(
+ [
+ self.intent_data.geolocation["city"],
+ self.intent_data.geolocation["country"],
+ ]
+ )
+ self.data.update(location=spoken_location)
+
+
+class CurrentDialog(WeatherDialog):
+ """Weather dialog builder for current weather."""
+
+ def __init__(
+ self, intent_data: WeatherIntent, config: WeatherConfig, weather: CurrentWeather
+ ):
+ super().__init__(intent_data, config)
+ self.weather = weather
+ self.name = CURRENT
+
+ def build_weather_dialog(self):
+ """Build the components necessary to speak current weather."""
+ self.name += "-weather"
+ self.data = dict(
+ condition=self.weather.condition.description,
+ temperature=self.weather.temperature,
+ temperature_unit=self.config.temperature_unit,
+ )
+ self._add_location()
+
+ def build_high_low_temperature_dialog(self):
+ """Build the components necessary to speak high and low temperature."""
+ self.name += "-temperature-high-low"
+ self.data = dict(
+ high_temperature=self.weather.high_temperature,
+ low_temperature=self.weather.low_temperature,
+ )
+
+ def build_temperature_dialog(self, temperature_type: str):
+ """Build the components necessary to speak the current temperature.
+
+ :param temperature_type: indicates if temperature is current, high or low
+ """
+ self.name += "-temperature"
+ if temperature_type == "high":
+ self.name += "-high"
+ self.data = dict(temperature=self.weather.high_temperature)
+ elif temperature_type == "low":
+ self.name += "-low"
+ self.data = dict(temperature=self.weather.low_temperature)
+ else:
+ self.data = dict(temperature=self.weather.temperature)
+ self.data.update(
+ temperature_unit=self.intent_data.unit or self.config.temperature_unit
+ )
+ self._add_location()
+
+ def build_condition_dialog(self, intent_match: bool):
+ """Select the relevant dialog file for condition based reports.
+
+ A condition can for example be "snow" or "rain".
+
+ :param intent_match: true if intent matches a vocabulary for the condition
+ """
+ self.data = dict(condition=self.weather.condition.description.lower())
+ if intent_match:
+ self.name += "-condition-expected"
+ else:
+ self.name += "-condition-not-expected".format(
+ self.weather.condition.category.lower()
+ )
+ self._add_location()
+
+ def build_sunrise_dialog(self):
+ """Build the components necessary to speak the sunrise time."""
+ if self.intent_data.location is None:
+ now = now_local()
+ else:
+ now = now_local(tz=self.intent_data.geolocation["timezone"])
+ if now < self.weather.sunrise:
+ self.name += "-sunrise-future"
+ else:
+ self.name += "-sunrise-past"
+ self.data = dict(time=nice_time(self.weather.sunrise))
+ self._add_location()
+
+ def build_sunset_dialog(self):
+ """Build the components necessary to speak the sunset time."""
+ if self.intent_data.location is None:
+ now = now_local()
+ else:
+ now = now_local(tz=self.intent_data.geolocation["timezone"])
+ if now < self.weather.sunset:
+ self.name += ".sunset.future"
+ else:
+ self.name = ".sunset.past"
+ self.data = dict(time=nice_time(self.weather.sunset))
+ self._add_location()
+
+ def build_wind_dialog(self):
+ """Build the components necessary to speak the wind conditions."""
+ wind_strength = self.weather.determine_wind_strength(self.config.speed_unit)
+ self.data = dict(
+ speed=nice_number(self.weather.wind_speed),
+ speed_unit=self.config.speed_unit,
+ direction=self.weather.wind_direction,
+ )
+ self.name += "-wind-" + wind_strength
+ self._add_location()
+
+ def build_humidity_dialog(self):
+ """Build the components necessary to speak the percentage humidity."""
+ self.data = dict(percent=self.weather.humidity)
+ self.name += "-humidity"
+ self._add_location()
+
+
+class HourlyDialog(WeatherDialog):
+ """Weather dialog builder for hourly weather."""
+
+ def __init__(
+ self, intent_data: WeatherIntent, config: WeatherConfig, weather: HourlyWeather
+ ):
+ super().__init__(intent_data, config)
+ self.weather = weather
+ self.name = HOURLY
+
+ def build_weather_dialog(self):
+ """Build the components necessary to speak the forecast for a hour."""
+ self.name += "-weather"
+ self.data = dict(
+ condition=self.weather.condition.description,
+ time=self.weather.date_time.strftime("%H:00"),
+ temperature=self.weather.temperature,
+ )
+ self._add_location()
+
+ def build_temperature_dialog(self, _):
+ """Build the components necessary to speak the hourly temperature."""
+ self.name += "-temperature"
+ self.data = dict(
+ temperature=self.weather.temperature,
+ time=get_time_period(self.weather.date_time),
+ temperature_unit=self.intent_data.unit or self.config.temperature_unit,
+ )
+ self._add_location()
+
+ def build_condition_dialog(self, intent_match: bool):
+ """Select the relevant dialog file for condition based reports.
+
+ A condition can for example be "snow" or "rain".
+
+ :param intent_match: true if intent matches a vocabulary for the condition
+ """
+ self.data = dict(
+ condition=self.weather.condition.description.lower(),
+ time=nice_time(self.weather.date_time),
+ )
+ if intent_match:
+ self.name += "-condition-expected"
+ else:
+ self.name += "-condition-not-expected".format(
+ self.weather.condition.category.lower()
+ )
+ self._add_location()
+
+ def build_wind_dialog(self):
+ """Build the components necessary to speak the wind conditions."""
+ wind_strength = self.weather.determine_wind_strength(self.config.speed_unit)
+ self.data = dict(
+ speed=nice_number(self.weather.wind_speed),
+ speed_unit=self.config.speed_unit,
+ direction=self.weather.wind_direction,
+ time=nice_time(self.weather.date_time),
+ )
+ self.name += "-wind-" + wind_strength
+ self._add_location()
+
+ def build_next_precipitation_dialog(self):
+ """Build the components necessary to speak the next chance of rain."""
+ if self.weather is None:
+ self.name += "-precipitation-next-none"
+ self.data = dict()
+ else:
+ self.name += "-precipitation-next"
+ self.data = dict(
+ percent=self.weather.chance_of_precipitation,
+ precipitation="rain",
+ day=self.weather.date_time.strftime("%A"),
+ time=get_time_period(self.weather.date_time),
+ )
+ self._add_location()
+
+
+class DailyDialog(WeatherDialog):
+ """Weather dialog builder for daily weather."""
+
+ def __init__(
+ self, intent_data: WeatherIntent, config: WeatherConfig, weather: DailyWeather
+ ):
+ super().__init__(intent_data, config)
+ self.weather = weather
+ self.name = DAILY
+
+ def build_weather_dialog(self):
+ """Build the components necessary to speak the forecast for a day."""
+ self.name += "-weather"
+ self.data = dict(
+ condition=self.weather.condition.description,
+ day=get_speakable_day_of_week(self.weather.date_time),
+ high_temperature=self.weather.temperature.high,
+ low_temperature=self.weather.temperature.low,
+ )
+ if self.weather.date_time.date() == self.intent_data.location_datetime.date():
+ self.data.update(day="Today")
+ self._add_location()
+
+ def build_temperature_dialog(self, temperature_type: str):
+ """Build the components necessary to speak the daily temperature.
+
+ :param temperature_type: indicates if temperature is day, high or low
+ """
+ self.name += "-temperature"
+ if temperature_type == "high":
+ self.name += "-high"
+ self.data = dict(temperature=self.weather.temperature.high)
+ elif temperature_type == "low":
+ self.name += "-low"
+ self.data = dict(temperature=self.weather.temperature.low)
+ else:
+ self.data = dict(temperature=self.weather.temperature.day)
+ self.data.update(
+ day=get_speakable_day_of_week(self.weather.date_time),
+ temperature_unit=self.intent_data.unit or self.config.temperature_unit,
+ )
+ self._add_location()
+
+ def build_condition_dialog(self, intent_match: bool):
+ """Select the relevant dialog file for condition based reports.
+
+ A condition can for example be "snow" or "rain".
+
+ :param intent_match: true if intent matches a vocabulary for the condition
+ """
+ self.data = dict(
+ condition=self.weather.condition.description.lower(),
+ day=get_speakable_day_of_week(self.weather.date_time),
+ )
+ if intent_match:
+ self.name += "-condition-expected"
+ else:
+ self.name += "-condition-not-expected".format(
+ self.weather.condition.category.lower()
+ )
+ self._add_location()
+
+ def build_sunrise_dialog(self):
+ """Build the components necessary to speak the sunrise time."""
+ self.name += "-sunrise"
+ self.data = dict(time=nice_time(self.weather.sunrise))
+ self.data.update(day=get_speakable_day_of_week(self.weather.date_time))
+ self._add_location()
+
+ def build_sunset_dialog(self):
+ """Build the components necessary to speak the sunset time."""
+ self.name += "-sunset"
+ self.data = dict(time=nice_time(self.weather.sunset))
+ self.data.update(day=get_speakable_day_of_week(self.weather.date_time))
+ self._add_location()
+
+ def build_wind_dialog(self):
+ """Build the components necessary to speak the wind conditions."""
+ wind_strength = self.weather.determine_wind_strength(self.config.speed_unit)
+ self.data = dict(
+ day=self.weather.date_time.strftime("%A"),
+ speed=nice_number(self.weather.wind_speed),
+ speed_unit=self.config.speed_unit,
+ direction=self.weather.wind_direction,
+ )
+ self.name += "-wind-" + wind_strength
+ self._add_location()
+
+ def build_humidity_dialog(self):
+ """Build the components necessary to speak the percentage humidity."""
+ self.data = dict(
+ percent=self.weather.humidity, day=self.weather.date_time.strftime("%A")
+ )
+ self.name += "-humidity"
+ self._add_location()
+
+ def build_next_precipitation_dialog(self):
+ """Build the components necessary to speak the next chance of rain."""
+ if self.weather is None:
+ self.name += "-precipitation-next-none"
+ self.data = dict()
+ else:
+ self.name += "-precipitation-next"
+ self.data = dict(
+ percent=self.weather.chance_of_precipitation,
+ precipitation="rain",
+ day=self.weather.date_time.strftime("%A"),
+ )
+ self._add_location()
+
+
+class WeeklyDialog(WeatherDialog):
+ """Weather dialog builder for weekly weather."""
+
+ def __init__(
+ self,
+ intent_data: WeatherIntent,
+ config: WeatherConfig,
+ forecast: List[DailyWeather],
+ ):
+ super().__init__(intent_data, config)
+ self.forecast = forecast
+ self.name = "weekly"
+
+ def build_temperature_dialog(self):
+ """Build the components necessary to temperature ranges for a week."""
+ low_temperatures = [daily.temperature.low for daily in self.forecast]
+ high_temperatures = [daily.temperature.high for daily in self.forecast]
+ self.name += "-temperature"
+ self.data = dict(
+ low_min=min(low_temperatures),
+ low_max=max(low_temperatures),
+ high_min=min(high_temperatures),
+ high_max=max(high_temperatures),
+ )
+
+ def build_condition_dialog(self, condition: str):
+ """Build the components necessary to speak the days of week for a condition."""
+ self.name += "-condition"
+ self.data = dict(condition=condition)
+ days_with_condition = []
+ for daily in self.forecast:
+ if daily.condition.category == condition:
+ day = get_speakable_day_of_week(daily.date_time)
+ days_with_condition.append(day)
+ self.data.update(days=join_list(days_with_condition, "and"))
+
+
+def get_dialog_for_timeframe(timeframe: str, dialog_ags: Tuple):
+ """Use the intent data to determine which dialog builder to use.
+
+ :param timeframe: current, hourly, daily
+ :param dialog_ags: Arguments to pass to the dialog builder
+ :return: The correct dialog builder for the timeframe
+ """
+ if timeframe == DAILY:
+ dialog = DailyDialog(*dialog_ags)
+ elif timeframe == HOURLY:
+ dialog = HourlyDialog(*dialog_ags)
+ else:
+ dialog = CurrentDialog(*dialog_ags)
+
+ return dialog
diff --git a/skill/intent.py b/skill/intent.py
new file mode 100644
index 00000000..2f39c77e
--- /dev/null
+++ b/skill/intent.py
@@ -0,0 +1,102 @@
+# Copyright 2021, Mycroft AI Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Parse the intent into data used by the weather skill."""
+from datetime import timedelta
+
+from mycroft.util.time import now_local
+from .util import (
+ get_utterance_datetime,
+ get_geolocation,
+ get_tz_info,
+ LocationNotFoundError,
+)
+from .weather import CURRENT
+
+
+class WeatherIntent:
+ _geolocation = None
+ _intent_datetime = None
+ _location_datetime = None
+
+ def __init__(self, message, language):
+ """Constructor
+
+ :param message: Intent data from the message bus
+ :param language: The configured language of the device
+ """
+ self.utterance = message.data["utterance"]
+ self.location = message.data.get("location")
+ self.language = language
+ self.unit = message.data.get("unit")
+ self.timeframe = CURRENT
+
+ @property
+ def geolocation(self):
+ """Lookup the intent location using the Selene API.
+
+ The Selene geolocation API assumes the location of a city is being
+ requested. If the user asks "What is the weather in Russia"
+ an error will be raised.
+ """
+ if self._geolocation is None:
+ if self.location is None:
+ self._geolocation = dict()
+ else:
+ self._geolocation = get_geolocation(self.location)
+ if self._geolocation["city"].lower() not in self.location.lower():
+ raise LocationNotFoundError(self.location + " is not a city")
+
+ return self._geolocation
+
+ @property
+ def intent_datetime(self):
+ """Use the configured timezone and the utterance to know the intended time.
+
+ If a relative date or relative time is supplied in the utterance, use a
+ datetime object representing the request. Otherwise, use the timezone
+ configured by the device.
+ """
+ if self._intent_datetime is None:
+ utterance_datetime = get_utterance_datetime(
+ self.utterance,
+ timezone=self.geolocation.get("timezone"),
+ language=self.language,
+ )
+ if utterance_datetime is not None:
+ delta = utterance_datetime - self.location_datetime
+ if int(delta / timedelta(days=1)) > 7:
+ raise ValueError("Weather forecasts only supported up to 7 days")
+ if utterance_datetime.date() < self.location_datetime.date():
+ raise ValueError("Historical weather is not supported")
+ self._intent_datetime = utterance_datetime
+ else:
+ self._intent_datetime = self.location_datetime
+
+ return self._intent_datetime
+
+ @property
+ def location_datetime(self):
+ """Determine the current date and time for the request.
+
+ If a location is specified in the request, use the timezone for that
+ location, otherwise, use the timezone configured on the device.
+ """
+ if self._location_datetime is None:
+ if self.location is None:
+ self._location_datetime = now_local()
+ else:
+ tz_info = get_tz_info(self.geolocation["timezone"])
+ self._location_datetime = now_local(tz_info)
+
+ return self._location_datetime
diff --git a/skill/util.py b/skill/util.py
new file mode 100644
index 00000000..8176ec04
--- /dev/null
+++ b/skill/util.py
@@ -0,0 +1,158 @@
+# Copyright 2021, Mycroft AI Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Utility functions for the weather skill."""
+from datetime import datetime, timedelta, tzinfo
+from time import time
+
+import pytz
+
+from mycroft.api import GeolocationApi
+from mycroft.util.format import nice_date
+from mycroft.util.parse import extract_datetime
+from mycroft.util.time import now_local
+
+
+class LocationNotFoundError(ValueError):
+ """Raise when the API cannot find the requested location."""
+
+ pass
+
+
+def convert_to_local_datetime(timestamp: time, timezone: str) -> datetime:
+ """Convert a timestamp to a datetime object in the requested timezone.
+
+ This function assumes it is passed a timestamp in the UTC timezone. It
+ then adjusts the datetime to match the specified timezone.
+
+ Args:
+ timestamp: seconds since epoch
+ timezone: the timezone requested by the user
+
+ Returns:
+ A datetime in the passed timezone based on the passed timestamp
+ """
+ naive_datetime = datetime.fromtimestamp(timestamp)
+ utc_datetime = pytz.utc.localize(naive_datetime)
+ local_timezone = pytz.timezone(timezone)
+ local_datetime = utc_datetime.astimezone(local_timezone)
+
+ return local_datetime
+
+
+def get_utterance_datetime(
+ utterance: str, timezone: str = None, language: str = None
+) -> datetime:
+ """Get a datetime representation of a date or time concept in an utterance.
+
+ Args:
+ utterance: the words spoken by the user
+ timezone: the timezone requested by the user
+ language: the language configured on the device
+
+ Returns:
+ The date and time represented in the utterance in the specified timezone.
+ """
+ utterance_datetime = None
+ if timezone is None:
+ anchor_date = None
+ else:
+ intent_timezone = get_tz_info(timezone)
+ anchor_date = datetime.now(intent_timezone)
+ extract = extract_datetime(utterance, anchor_date, language)
+ if extract is not None:
+ utterance_datetime, _ = extract
+
+ return utterance_datetime
+
+
+def get_tz_info(timezone: str) -> tzinfo:
+ """Generate a tzinfo object from a timezone string.
+
+ Args:
+ timezone: a string representing a timezone
+
+ Returns:
+ timezone in a string format
+ """
+ return pytz.timezone(timezone)
+
+
+def get_geolocation(location: str):
+ """Retrieve the geolocation information about the requested location.
+
+ Args:
+ location: a location specified in the utterance
+
+ Returns:
+ A deserialized JSON object containing geolocation information for the
+ specified city.
+
+ Raises:
+ LocationNotFound error if the API returns no results.
+ """
+ geolocation_api = GeolocationApi()
+ geolocation = geolocation_api.get_geolocation(location)
+
+ if geolocation is None:
+ raise LocationNotFoundError("Location {} is unknown".format(location))
+
+ return geolocation
+
+
+def get_time_period(intent_datetime: datetime) -> str:
+ """Translate a specific time '9am' to period of the day 'morning'
+
+ Args:
+ intent_datetime: the datetime extracted from an utterance
+
+ Returns:
+ A generalized time of day based on the passed datetime object.
+ """
+ hour = intent_datetime.time().hour
+ if 1 <= hour < 5:
+ period = "early morning"
+ elif 5 <= hour < 12:
+ period = "morning"
+ elif 12 <= hour < 17:
+ period = "afternoon"
+ elif 17 <= hour < 20:
+ period = "evening"
+ else:
+ period = "overnight"
+
+ return period
+
+
+def get_speakable_day_of_week(date_to_speak: datetime):
+ """Convert the time of the a daily weather forecast to a speakable day of week.
+
+ Args:
+ date_to_speak: The date/time for the forecast being reported.
+
+ Returns:
+ The day of the week in the device's configured language
+ """
+ now = now_local()
+ tomorrow = now.date() + timedelta(days=1)
+
+ # A little hack to prevent nice_date() from returning "tomorrow"
+ if date_to_speak.date() == tomorrow:
+ now_arg = now - timedelta(days=1)
+ else:
+ now_arg = now
+
+ speakable_date = nice_date(date_to_speak, now=now_arg)
+ day_of_week = speakable_date.split(",")[0]
+
+ return day_of_week
diff --git a/skill/weather.py b/skill/weather.py
new file mode 100644
index 00000000..4fbe5e3e
--- /dev/null
+++ b/skill/weather.py
@@ -0,0 +1,371 @@
+# Copyright 2021, Mycroft AI Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Representations and conversions of the data returned by the weather API."""
+from datetime import timedelta
+from pathlib import Path
+from typing import List
+
+from .config import MILES_PER_HOUR
+from .util import convert_to_local_datetime
+
+# Forecast timeframes
+CURRENT = "current"
+DAILY = "daily"
+HOURLY = "hourly"
+
+# Days of week
+SATURDAY = 5
+SUNDAY = 6
+
+# Condition Icons (see https://openweathermap.org/weather-conditions)
+# Map each of the possible weather condition icon codes from OpenWeatherMap to an
+# image/animation file used by the GUI. The icon codes contain a number and a letter.
+# A "n" after the number indicates night and a "d" indicates day.
+#
+# The icon/image map is used by the Mark II, which does not use animations for
+# performance reasons. The icon/animation map is used by the scalable QML. The
+# icon/code map is for the Mark I, which accepts a code to determine what
+# is displayed.
+ICON_IMAGE_MAP = (
+ (("01d",), "sun.svg"),
+ (("01n",), "moon.svg"),
+ (("04d", "04n"), "clouds.svg"),
+ (("50d",), "fog.svg"),
+ (("02d", "03d"), "partial_clouds_day.svg"),
+ (("02n", "03n"), "partial_clouds_night.svg"),
+ (("09d", "10d"), "rain.svg"),
+ (("13d",), "snow.svg"),
+ (("11d",), "storm.svg"),
+)
+ICON_ANIMATION_MAP = (
+ (("01d", "01n"), "sun.json"),
+ (("04d", "04n"), "clouds.json"),
+ (("50d",), "fog.json"),
+ (("02d", "03d", "02n", "03n"), "partial_clouds.json"),
+ (("09d", "10d"), "rain.json"),
+ (("13d",), "snow.json"),
+ (("11d",), "storm.json"),
+)
+ICON_CODE_MAP = (
+ (("01d", "01n"), 0),
+ (("04d", "04n"), 2),
+ (("50d",), 7),
+ (("02d", "03d", "02n", "03n"), 1),
+ (("09d", "10d"), 3),
+ (("13d",), 6),
+ (("11d",), 5),
+)
+
+THIRTY_PERCENT = 30
+WIND_DIRECTION_CONVERSION = (
+ (22.5, "north"),
+ (67.5, "northeast"),
+ (112.5, "east"),
+ (157.5, "southeast"),
+ (202.5, "south"),
+ (247.5, "southwest"),
+ (292.5, "west"),
+ (337.5, "northwest"),
+)
+
+
+class WeatherCondition:
+ """Data representation of a weather conditions JSON object from the API"""
+
+ def __init__(self, conditions: dict):
+ self.id = conditions["id"]
+ self.category = conditions["main"]
+ self.description = conditions["description"]
+ self.icon = conditions["icon"]
+
+ @property
+ def image(self) -> str:
+ """Use the icon to image mapping to determine which image to display."""
+ image_path = Path("images")
+ for icons, image_file_name in ICON_IMAGE_MAP:
+ if self.icon in icons:
+ image_path = image_path.joinpath(image_file_name)
+
+ return str(image_path)
+
+ @property
+ def animation(self) -> str:
+ """Use the icon to animation mapping to determine which animation to display."""
+ image_path = Path("animations")
+ for icons, animation_file_name in ICON_ANIMATION_MAP:
+ if self.icon in icons:
+ image_path = image_path.joinpath(animation_file_name)
+
+ return str(image_path)
+
+ @property
+ def code(self) -> str:
+ """Use the icon to animation mapping to determine which animation to display."""
+ condition_code = None
+ for icons, code in ICON_CODE_MAP:
+ if self.icon in icons:
+ condition_code = code
+
+ return condition_code
+
+
+class Weather:
+ """Abstract data representation of commonalities in forecast types."""
+
+ def __init__(self, weather: dict, timezone: str):
+ self.date_time = convert_to_local_datetime(weather["dt"], timezone)
+ self.feels_like = weather["feelsLike"]
+ self.pressure = weather["pressure"]
+ self.humidity = weather["humidity"]
+ self.dew_point = weather["dewPoint"]
+ self.clouds = weather["clouds"]
+ self.wind_speed = int(weather["windSpeed"])
+ self.wind_direction = self._determine_wind_direction(weather["windDeg"])
+ self.condition = WeatherCondition(weather["weather"][0])
+
+ @staticmethod
+ def _determine_wind_direction(degree_direction: int):
+ """Convert wind direction from compass degrees to compass direction.
+
+ Args:
+ degree_direction: Degrees on a compass indicating wind direction.
+
+ Returns:
+ the wind direction in one of eight compass directions
+ """
+ for min_degree, compass_direction in WIND_DIRECTION_CONVERSION:
+ if degree_direction < min_degree:
+ wind_direction = compass_direction
+ break
+ else:
+ wind_direction = "north"
+
+ return wind_direction
+
+ def determine_wind_strength(self, speed_unit: str):
+ """Convert a wind speed to a wind strength.
+
+ Args:
+ speed_unit: unit of measure for speed depending on device configuration
+
+ Returns:
+ a string representation of the wind strength
+ """
+ if speed_unit == MILES_PER_HOUR:
+ limits = dict(strong=20, moderate=11)
+ else:
+ limits = dict(strong=9, moderate=5)
+ if self.wind_speed >= limits["strong"]:
+ wind_strength = "strong"
+ elif self.wind_speed >= limits["moderate"]:
+ wind_strength = "moderate"
+ else:
+ wind_strength = "light"
+
+ return wind_strength
+
+
+class CurrentWeather(Weather):
+ """Data representation of the current weather returned by the API"""
+
+ def __init__(self, weather: dict, timezone: str):
+ super().__init__(weather, timezone)
+ self.sunrise = convert_to_local_datetime(weather["sunrise"], timezone)
+ self.sunset = convert_to_local_datetime(weather["sunset"], timezone)
+ self.temperature = round(weather["temp"])
+ self.visibility = weather["visibility"]
+ self.low_temperature = None
+ self.high_temperature = None
+
+
+class DailyFeelsLike:
+ """Data representation of a "feels like" JSON object from the API"""
+
+ def __init__(self, temperatures: dict):
+ self.day = round(temperatures["day"])
+ self.night = round(temperatures["night"])
+ self.evening = round(temperatures["eve"])
+ self.morning = round(temperatures["morn"])
+
+
+class DailyTemperature(DailyFeelsLike):
+ """Data representation of a temperatures JSON object from the API"""
+
+ def __init__(self, temperatures: dict):
+ super().__init__(temperatures)
+ self.low = round(temperatures["min"])
+ self.high = round(temperatures["max"])
+
+
+class DailyWeather(Weather):
+ """Data representation of a daily forecast JSON object from the API"""
+
+ def __init__(self, weather: dict, timezone: str):
+ super().__init__(weather, timezone)
+ self.sunrise = convert_to_local_datetime(weather["sunrise"], timezone)
+ self.sunset = convert_to_local_datetime(weather["sunset"], timezone)
+ self.temperature = DailyTemperature(weather["temp"])
+ self.feels_like = DailyFeelsLike(weather["feelsLike"])
+ self.chance_of_precipitation = int(weather["pop"] * 100)
+
+
+class HourlyWeather(Weather):
+ """Data representation of a hourly forecast JSON object from the API"""
+
+ def __init__(self, weather: dict, timezone: str):
+ super().__init__(weather, timezone)
+ self.temperature = round(weather["temp"])
+ self.chance_of_precipitation = int(weather["pop"] * 100)
+
+
+class WeatherAlert:
+ """Data representation of a weather conditions JSON object from the API"""
+
+ def __init__(self, alert: dict, timezone: str):
+ self.sender = alert.get("sender_name")
+ self.event = alert["event"]
+ self.start = convert_to_local_datetime(alert["start"], timezone)
+ self.end = convert_to_local_datetime(alert["end"], timezone)
+ self.description = alert["description"]
+
+
+class WeatherReport:
+ """Full representation of the data returned by the Open Weather Maps One Call API"""
+
+ def __init__(self, report):
+ timezone = report["timezone"]
+ self.current = CurrentWeather(report["current"], timezone)
+ self.hourly = [HourlyWeather(hour, timezone) for hour in report["hourly"]]
+ self.daily = [DailyWeather(day, timezone) for day in report["daily"]]
+ today = self.daily[0]
+ self.current.high_temperature = today.temperature.high
+ self.current.low_temperature = today.temperature.low
+ if "alerts" in report:
+ self.alerts = [WeatherAlert(alert, timezone) for alert in report["alerts"]]
+ else:
+ self.alerts = None
+
+ def get_weather_for_intent(self, intent_data):
+ """Use the intent to determine which forecast satisfies the request.
+
+ Args:
+ intent_data: Parsed intent data
+ """
+ if intent_data.timeframe == "hourly":
+ weather = self.get_forecast_for_hour(intent_data)
+ elif intent_data.timeframe == "daily":
+ weather = self.get_forecast_for_date(intent_data)
+ else:
+ weather = self.current
+
+ return weather
+
+ def get_forecast_for_date(self, intent_data):
+ """Use the intent to determine which daily forecast(s) satisfies the request.
+
+ Args:
+ intent_data: Parsed intent data
+ """
+ if intent_data.intent_datetime.date() == intent_data.location_datetime.date():
+ forecast = self.daily[0]
+ else:
+ delta = intent_data.intent_datetime - intent_data.location_datetime
+ day_delta = int(delta / timedelta(days=1))
+ day_index = day_delta + 1
+ forecast = self.daily[day_index]
+
+ return forecast
+
+ def get_forecast_for_multiple_days(self, days: int) -> List[DailyWeather]:
+ """Use the intent to determine which daily forecast(s) satisfies the request.
+
+ Args:
+ days: number of forecast days to return
+
+ Returns:
+ list of daily forecasts for the specified number of days
+
+ Raises:
+ IndexError when number of days is more than what is returned by the API
+ """
+ if days > 7:
+ raise IndexError("Only seven days of forecasted weather available.")
+
+ forecast = self.daily[1 : days + 1]
+
+ return forecast
+
+ def get_forecast_for_hour(self, intent_data):
+ """Use the intent to determine which hourly forecast(s) satisfies the request.
+
+ Args:
+ intent_data: Parsed intent data
+
+ Returns:
+ A single hour of forecast data based on the intent data
+ """
+ delta = intent_data.intent_datetime - intent_data.location_datetime
+ hour_delta = int(delta / timedelta(hours=1))
+ hour_index = hour_delta + 1
+ report = self.hourly[hour_index]
+
+ return report
+
+ def get_weekend_forecast(self):
+ """Use the intent to determine which daily forecast(s) satisfies the request.
+
+ Returns:
+ The Saturday and Sunday forecast from the list of daily forecasts
+ """
+ forecast = list()
+ for forecast_day in self.daily:
+ report_date = forecast_day.date_time.date()
+ if report_date.weekday() in (SATURDAY, SUNDAY):
+ forecast.append(forecast_day)
+
+ return forecast
+
+ def get_next_precipitation(self, intent_data):
+ """Determine when the next chance of precipitation is in the forecast.
+
+ Args:
+ intent_data: Parsed intent data
+
+ Returns:
+ The weather report containing the next chance of rain and the timeframe of
+ the selected report.
+ """
+ report = None
+ current_precipitation = True
+ timeframe = HOURLY
+ for hourly in self.hourly:
+ if hourly.date_time.date() > intent_data.location_datetime.date():
+ break
+ if hourly.chance_of_precipitation > THIRTY_PERCENT:
+ if not current_precipitation:
+ report = hourly
+ break
+ else:
+ current_precipitation = False
+
+ if report is None:
+ timeframe = DAILY
+ for daily in self.daily:
+ if daily.date_time.date() == intent_data.location_datetime.date():
+ continue
+ if daily.chance_of_precipitation > THIRTY_PERCENT:
+ report = daily
+ break
+
+ return report, timeframe
diff --git a/test/behave/current-temperature-local.feature b/test/behave/current-temperature-local.feature
new file mode 100644
index 00000000..db64f19a
--- /dev/null
+++ b/test/behave/current-temperature-local.feature
@@ -0,0 +1,44 @@
+Feature: Mycroft Weather Skill current local weather
+
+ Scenario Outline: What is the temperature today
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-temperature-local.dialog"
+
+ Examples: What is the temperature today
+ | what is the temperature today |
+ | what is the temperature today |
+ | temperature |
+ | what's the temperature |
+ | what will be the temperature today |
+ | temperature today |
+ | what's the temp |
+ | temperature outside |
+
+
+ Scenario Outline: What is the high temperature today
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-temperature-high-local.dialog"
+
+ Examples: What is the high temperature today
+ | what is the high temperature today |
+ | what is the high temperature today |
+ | what's the high temp today |
+ | what's the high temperature |
+ | how hot will it be today |
+ | how hot is it today |
+ | what's the current high temperature |
+ | high temperature |
+
+
+ Scenario Outline: What is the low temperature today
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-temperature-low-local.dialog"
+
+ Examples: What is the low temperature today
+ | what is the low temperature today |
+ | what is the low temperature today |
+ | what will the lowest temperature be today |
+
diff --git a/test/behave/current-temperature-location.feature b/test/behave/current-temperature-location.feature
new file mode 100644
index 00000000..be76fc99
--- /dev/null
+++ b/test/behave/current-temperature-location.feature
@@ -0,0 +1,47 @@
+Feature: Mycroft Weather Skill current temperature at specified location
+
+ Scenario Outline: User asks for the temperature today in a location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-temperature-location.dialog"
+
+ Examples: what is the temperature today in location
+ | what is the temperature today in location |
+ | temperature in sydney |
+ | temperature today in san francisco, california |
+ | temperature outside in kansas city |
+ | In tokyo what's the temp |
+ | what will be the temperature today in berlin |
+ | what's the temperature in new york city |
+
+
+ Scenario Outline: User asks for the high temperature today in a location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-temperature-high-location.dialog"
+
+ Examples: what is the high temperature today in location
+ | what is the high temperature today in location |
+ | what's the high temperature in san francisco california |
+ | how hot will it be today in kansas city |
+ | what's the current high temperature in kansas |
+ | how hot is it today in tokyo |
+ | what is the high temperature today in sydney |
+ | what's the high temp today in berlin |
+ | high temperature in new york city |
+
+
+ Scenario Outline: User asks for the low temperature in a location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-temperature-low-location.dialog"
+
+ Examples: low temperature today in location
+ | what is the low temperature today in location |
+ | what's the low temperature in san francisco california |
+ | how cold will it be today in kansas city |
+ | low temperature today in sydney |
+ | what's the low temp today in berlin |
+ | what's the current low temperature in kansas |
+ | how cold is it today in tokyo |
+ | low temperature in new york city |
diff --git a/test/behave/current-weather-local.feature b/test/behave/current-weather-local.feature
new file mode 100644
index 00000000..45a87cf6
--- /dev/null
+++ b/test/behave/current-weather-local.feature
@@ -0,0 +1,40 @@
+Feature: Mycroft Weather Skill local current weather conditions
+
+ Scenario Outline: What is the current local weather
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-weather-local.dialog"
+
+ Examples: What is the current local weather
+ | current local weather |
+ | tell me the current weather |
+ | what's the current weather like |
+ | what is the current weather like |
+ | current weather |
+ | what is it like outside |
+ | what's the current weather conditions |
+ | give me the current weather |
+ | tell me the current weather |
+ | how's the weather |
+ | tell me the weather |
+ | what's the weather like |
+ | weather |
+ | what's the weather conditions |
+ | give me the weather |
+ | tell me the weather |
+ | what's the forecast |
+ | weather forecast |
+ | what's the weather forecast |
+ | how is the weather now |
+ | what is it like outside right now |
+ | what's it like outside |
+
+ @xfail
+ Scenario Outline: Current local weather matches date/time relative day intent
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-weather-local.dialog"
+
+ Examples: What is the current local weather
+ | current local weather |
+ | what's it like outside today |
diff --git a/test/behave/current-weather-location.feature b/test/behave/current-weather-location.feature
new file mode 100644
index 00000000..fa330fec
--- /dev/null
+++ b/test/behave/current-weather-location.feature
@@ -0,0 +1,41 @@
+Feature: Mycroft Weather Skill current weather at a specified location
+
+ Scenario Outline: User asks for the current weather in a location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-weather-location.dialog"
+
+ Examples: what is the current local weather in a location
+ | what is the current weather in location |
+ | what is the current weather in san francisco, california |
+ | current weather in kansas city |
+ | tell me the current weather in sydney |
+ | what's the current weather like in berlin |
+ | how's the weather in Paris |
+ | tell me the weather in Paris, Texas |
+ | give me the current weather in Kansas |
+ | what is it like outside in italy |
+ | In tokyo what is it like outside |
+ | how is the weather in new york city |
+
+
+ @xfail
+ Scenario Outline: FAILING User asks for the current weather in a location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "current-weather-location.dialog"
+
+ Examples: what is the current local weather in a location
+ | what is the current weather in location |
+ | what's the current weather conditions in Washington, D.C. |
+ | what is it like outside in baltimore today |
+
+
+ Scenario Outline: User asks for the current weather in an unknown location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "location-not-found.dialog"
+
+ Examples: what is the current local weather in a location
+ | what is the current weather in location |
+ | tell me the current weather in Missouri |
diff --git a/test/behave/daily-temperature-local.feature b/test/behave/daily-temperature-local.feature
new file mode 100644
index 00000000..feddcaad
--- /dev/null
+++ b/test/behave/daily-temperature-local.feature
@@ -0,0 +1,97 @@
+Feature: Mycroft Weather Skill local forecasted temperatures
+
+ Scenario Outline: What is the temperature for tomorrow
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-temperature-local.dialog"
+
+ Examples: what is the temperature for tomorrow
+ | what is the temperature tomorrow |
+ | what will be the temperature for tomorrow |
+
+
+ @xfail
+ # Jira MS-98 https://mycroft.atlassian.net/browse/MS-98
+ Scenario Outline: Failing what is the temperature for tomorrow
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-temperature-local.dialog"
+
+ Examples: what is the temperature for tomorrow
+ | what is the temperature tomorrow |
+ | what's the temperature tomorrow |
+
+
+ Scenario Outline: what is the high temperature for tomorrow
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-temperature-high-local.dialog"
+
+ Examples: what is the high temperature for tomorrow
+ | what is the high temperature tomorrow |
+ | what is the high temperature tomorrow |
+ | tomorrow what is the high temperature |
+ | tomorrow how hot will it get |
+ | how hot will it be tomorrow |
+ | what should I expect for a high temperature tomorrow |
+ | what is the expected high temperature for tomorrow |
+
+
+ Scenario Outline: what is the low temperature for tomorrow
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-temperature-low-local.dialog"
+
+ Examples: what is the low temperature for tomorrow
+ | what is the low temperature tomorrow |
+ | what is the low temperature tomorrow |
+ | tomorrow what is the low temperature |
+ | how cold will it be tomorrow |
+ | what should I expect for a low temperature tomorrow |
+ | what is the expected low temperature for tomorrow |
+
+
+ Scenario Outline: what is the temperature for a future date
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-temperature-local.dialog"
+
+ Examples: what is the temperature for a future date
+ | what is the temperature for a future date |
+ | what is the temperature for wednesday |
+ | what is the temperature for saturday |
+ | what is the temperature 5 days from now |
+
+ Scenario Outline: what is the high temperature for a future date
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-temperature-high-local.dialog"
+
+ Examples: what is the high temperature for a future date
+ | what is the high temperature for a future date |
+ | what is the high temperature for wednesday |
+ | what is the high temperature for saturday |
+ | what is the high temperature 5 days from now |
+
+ Scenario Outline: what is the low temperature for a future date
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-temperature-low-local.dialog"
+
+ Examples: what is the low temperature for a future date
+ | what is the low temperature for a future date |
+ | what is the low temperature for wednesday |
+ | what is the low temperature for saturday |
+ | what is the low temperature 5 days from now |
+
+ Scenario Outline: what is the temperature at a certain time
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "hourly-temperature-local.dialog"
+
+ Examples: what is the temperature at a certain time
+ | what is the temperature at a certain time |
+ | what will the temperature be tonight |
+ | what will the temperature be this evening |
+ | what is the temperature this morning |
+ | temperature in the afternoon |
diff --git a/test/behave/daily-weather-local.feature b/test/behave/daily-weather-local.feature
new file mode 100644
index 00000000..074f71a7
--- /dev/null
+++ b/test/behave/daily-weather-local.feature
@@ -0,0 +1,25 @@
+Feature: Mycroft Weather Skill local daily forecasts
+
+ Scenario Outline: what is the forecast for tomorrow
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-weather-local.dialog"
+
+ Examples: What is the forecast for tomorrow
+ | what is the forecast for tomorrow |
+ | what is the forecast for tomorrow |
+ | what is the weather tomorrow |
+ | what is the weather like tomorrow |
+ | tomorrow what will the weather be like |
+
+ Scenario Outline: what is the forecast for a future date
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-weather-local.dialog"
+
+ Examples: what is the forecast for a future date
+ | what is the forecast for a future date |
+ | what is the weather like tuesday |
+ | what is the weather like on saturday |
+ | what is the weather like monday |
+ | what is the weather like in 5 days from now |
diff --git a/test/behave/daily-weather-location.feature b/test/behave/daily-weather-location.feature
new file mode 100644
index 00000000..1f70a291
--- /dev/null
+++ b/test/behave/daily-weather-location.feature
@@ -0,0 +1,14 @@
+Feature: Mycroft Weather Skill daily forecast for a specified location.
+
+ Scenario Outline: User asks for the forecast on a future date in a location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "daily-weather-location.dialog"
+
+ Examples: what is the forecast for a future date in location
+ | what is the forecast on a future date in a location |
+ | what is the weather tomorrow in sydney |
+ | what is the weather like in new york city tuesday |
+ | what is the weather like in san francisco california saturday |
+ | what is the weather like in kansas city friday |
+ | what is the weather like in berlin on sunday |
diff --git a/test/behave/hourly-weather-local.feature b/test/behave/hourly-weather-local.feature
new file mode 100644
index 00000000..2868dba4
--- /dev/null
+++ b/test/behave/hourly-weather-local.feature
@@ -0,0 +1,11 @@
+Feature: Mycroft Weather Skill local hourly forecasts
+
+ Scenario Outline: what is the weather later
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "hourly-weather-local.dialog"
+
+ Examples: What is the weather later
+ | what is the weather later |
+ | what is the weather later |
+ | what's the weather later today |
diff --git a/test/behave/hourly-weather-location.feature b/test/behave/hourly-weather-location.feature
new file mode 100644
index 00000000..ba1b1df9
--- /dev/null
+++ b/test/behave/hourly-weather-location.feature
@@ -0,0 +1,11 @@
+Feature: Mycroft Weather Skill hourly forecasts at a specified location
+
+ Scenario Outline: User asks what the weather is later at a location
+ Given an english speaking user
+ When the user says ""
+ Then "mycroft-weather" should reply with dialog from "hourly-weather-location.dialog"
+
+ Examples: What is the weather later
+ | what is the weather later |
+ | what is the weather in Baltimore later |
+ | what is the weather in London later today |
diff --git a/test/behave/weather-local.feature b/test/behave/weather-local.feature
deleted file mode 100644
index 067e1acb..00000000
--- a/test/behave/weather-local.feature
+++ /dev/null
@@ -1,239 +0,0 @@
-Feature: Mycroft Weather Skill local forecasts and temperature
-
- Scenario Outline: What is the current local weather
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.local.weather.dialog"
-
- Examples: What is the current local weather
- | current local weather |
- | tell me the current weather |
- | what's the current weather like |
- | what is the current weather like |
- | current weather |
- | what is it like outside |
- | what's the current weather conditions |
- | give me the current weather |
- | tell me the current weather |
- | how's the weather |
- | tell me the weather |
- | what's the weather like |
- | weather |
- | what's the weather conditions |
- | give me the weather |
- | tell me the weather |
- | what's the forecast |
- | weather forecast |
- | what's the weather forecast |
-
- @xfail
- # JIra MS-54 https://mycroft.atlassian.net/browse/MS-54
- Scenario Outline: Failing what is the current local weather
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.local.weather.dialog"
-
- Examples: What is the current local weather
- | current local weather |
- | how is the weather now |
- | what is it like outside right now |
-
- Scenario Outline: What is the temperature today
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.local.temperature.dialog"
-
- Examples: What is the temperature today
- | what is the temperature today |
- | what is the temperature today |
- | temperature |
- | what's the temperature |
- | what will be the temperature today |
- | temperature today |
-
-
- @xfail
- # JIra MS-55 https://mycroft.atlassian.net/browse/MS-55
- Scenario Outline: Failing What is the temperature today
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.local.temperature.dialog"
-
- Examples: Failing temperature examples
- | what is the temperature today |
- | what's the temp |
- | temperature outside |
-
- Scenario Outline: What is the high temperature today
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.local.high.temperature.dialog"
-
- Examples: What is the high temperature today
- | what is the high temperature today |
- | what is the high temperature today |
- | what's the high temp today |
- | what's the high temperature |
- | how hot will it be today |
- | how hot is it today |
- | what's the current high temperature |
-
- @xfail
- # JIra MS-97 https://mycroft.atlassian.net/browse/MS-97
- Scenario Outline: Failing what is the high temperature today
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.local.high.temperature.dialog"
-
- Examples: What is the high temperature today
- | what is the high temperature today |
- | high temperature |
-
- Scenario Outline: What is the low temperature today
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.local.low.temperature.dialog"
-
- Examples: What is the low temperature today
- | what is the low temperature today |
- | what is the low temperature today |
- | what will the lowest temperature be today |
-
- Scenario Outline: what is the forecast for tomorrow
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.weather.dialog"
-
- Examples: What is the forecast for tomorrow
- | what is the forecast for tomorrow |
- | what is the forecast for tomorrow |
- | what is the weather tomorrow |
- | what is the weather like tomorrow |
- | tomorrow what will the weather be like |
-
- Scenario Outline: what is the forecast for a future date
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.weather.dialog"
-
- Examples: what is the forecast for a future date
- | what is the forecast for a future date |
- | what is the weather like next tuesday |
- | what is the weather like on next saturday |
- | what is the weather like next monday |
-
- @xfail
- # Jira MS-57 https://mycroft.atlassian.net/browse/MS-57
- Scenario Outline: failing what is the forecast for a future date
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.weather.dialog"
-
- Examples: what is the forecast for a future date
- | what is the forecast for a future date |
- | what is the weather like in 9 days from now |
-
- @xfail
- # Jira MS-98 https://mycroft.atlassian.net/browse/MS-98
- Scenario Outline: What is the temperature for tomorrow
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.temperature.dialog"
-
- Examples: what is the temperature for tomorrow
- | what is the temperature tomorrow |
- | what will be the temperature for tomorrow |
- | what's the temperature tomorrow |
-
- Scenario Outline: what is the high temperature for tomorrow
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.high.temperature.dialog"
-
- Examples: what is the high temperature for tomorrow
- | what is the high temperature tomorrow |
- | what is the high temperature tomorrow |
- | tomorrow what is the high temperature |
- | tomorrow how hot will it get |
- | how hot will it be tomorrow |
-
- @xfail
- # Jira Ms-98 https://mycroft.atlassian.net/browse/MS-98
- Scenario Outline: failing what is the high temperature for tomorrow
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.high.temperature.dialog"
-
- Examples: what is the high temperature for tomorrow
- | what is the high temperature tomorrow |
- | what should I expect for a high temperature tomorrow |
- | what is the expected high temperature for tomorrow |
-
- Scenario Outline: what is the low temperature for tomorrow
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.low.temperature.dialog"
-
- Examples: what is the low temperature for tomorrow
- | what is the low temperature tomorrow |
- | what is the low temperature tomorrow |
- | tomorrow what is the low temperature |
- | how cold will it be tomorrow |
-
- @xfail
- # Jira Ms-99 https://mycroft.atlassian.net/browse/MS-99
- Scenario Outline: failing what is the low temperature for tomorrow
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.low.temperature.dialog"
-
- Examples: what is the low temperature for tomorrow
- | what is the low temperature tomorrow |
- | what should I expect for a low temperature tomorrow |
- | what is the expected low temperature for tomorrow |
-
- Scenario Outline: what is the temperature for a future date
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.temperature.dialog"
-
- Examples: what is the temperature for a future date
- | what is the temperature for a future date |
- | what is the temperature for next wednesday |
- | what is the temperature for next saturday |
- | what is the temperature 5 days from now |
-
- Scenario Outline: what is the high temperature for a future date
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.high.temperature.dialog"
-
- Examples: what is the high temperature for a future date
- | what is the high temperature for a future date |
- | what is the high temperature for next wednesday |
- | what is the high temperature for next saturday |
- | what is the high temperature 5 days from now |
-
- Scenario Outline: what is the low temperature for a future date
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.local.low.temperature.dialog"
-
- Examples: what is the low temperature for a future date
- | what is the low temperature for a future date |
- | what is the low temperature for next wednesday |
- | what is the low temperature for next saturday |
- | what is the low temperature 5 days from now |
-
- @xfail
- Scenario Outline: what is the temperature at a certain time
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "at.time.local.temperature.dialog"
-
- Examples: what is the temperature at a certain time
- | what is the temperature at a certain time |
- | what will the temperature be tonight |
- | what will the temperature be this evening |
- | what is the temperature this morning |
- | temperature in the afternoon |
diff --git a/test/behave/weather-location.feature b/test/behave/weather-location.feature
deleted file mode 100644
index b4acee87..00000000
--- a/test/behave/weather-location.feature
+++ /dev/null
@@ -1,115 +0,0 @@
-Feature: Mycroft Weather Skill location forecasts and temperature
-
- Scenario Outline: User asks for the current weather in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.weather.dialog"
-
- Examples: what is the current local weather in a location
- | what is the current weather in location |
- | how is the weather in new york city |
- | what is the current weather in san francisco, california |
- | current weather in kansas city |
- | what's the current weather conditions in Washington DC |
-
- @xfail
- Scenario Outline: Failing User asks for the current weather in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.weather.dialog"
-
- Examples: what is the current local weather in a location
- | what is the current weather in location |
- | what is it like outside in italy |
- | In tokyo what is it like outside |
- | give me the current weather in Kansas |
- | tell me the current weather Missouri |
- | tell me the current weather in sydney |
- | what's the current weather like in berlin |
- | how's the weather in Paris |
- | tell me the weather in Paris, Texas |
-
- @xfail
- Scenario Outline: Failing user asks for the temperature today in location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.temperature.dialog"
-
- Examples: what is the temperature today in location
- | what is the temperature today in location |
- | temperature in sydney |
- | temperature today in san francisco, california |
- | temperature outside in kansas city |
- | In tokyo what's the temp |
- | what's the temperature in new york city |
- | what will be the temperature today in berlin |
-
- Scenario Outline: User asks for the high temperature today in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.high.temperature.dialog"
-
- Examples: what is the high temperature today in location
- | what is the high temperature today in location |
- | what's the high temperature in san francisco california |
- | how hot will it be today in kansas city |
-
- @xfail
- Scenario Outline: Failing user asks for the high temperature today in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.high.temperature.dialog"
-
- Examples: what is the high temperature today in location
- | what is the high temperature today in location |
- | high temperature in new york city |
- | what's the current high temperature in kansas |
- | how hot is it today in tokyo |
- | what is the high temperature today in sydney |
- | what's the high temp today in berlin |
-
- Scenario Outline: User asks for the low temperature in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.low.temperature.dialog"
-
- Examples: low temperature today in location
- | what is the low temperature today in location |
- | what's the low temperature in san francisco california |
- | how cold will it be today in kansas city |
-
- @xfail
- Scenario Outline: Failing user asks for the low temperature in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "current.low.temperature.dialog"
-
- Examples: low temperature today in location
- | what is the low temperature today in location |
- | what is the low temperature today in sydney |
- | what's the low temp today in berlin |
- | what's the current low temperature in kansas |
- | low temperature in new york city |
- | how cold is it today in tokyo |
-
- Scenario Outline: User asks for the forecast on a future date in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.weather.dialog"
-
- Examples: what is the forecast for a future date in location
- | what is the forecast on a future date in a location |
- | what is the weather tomorrow in sydney |
- | what is the weather like in new york city next tuesday |
- | what is the weather like in san francisco california next saturday |
- | what is the weather like in kansas city next friday |
-
- @xfail
- Scenario Outline: Failing User asks for the forecast on a future date in a location
- Given an english speaking user
- When the user says ""
- Then "mycroft-weather" should reply with dialog from "forecast.weather.dialog"
-
- Examples: what is the forecast for a future date in location
- | what is the forecast on a future date in a location |
- | what is the weather like in berlin on sunday |
diff --git a/dialog/da-dk/this.week.dialog b/test/unit/__init__.py
similarity index 100%
rename from dialog/da-dk/this.week.dialog
rename to test/unit/__init__.py
diff --git a/ui/DailyColumn.qml b/ui/DailyColumn.qml
new file mode 100644
index 00000000..b453b12e
--- /dev/null
+++ b/ui/DailyColumn.qml
@@ -0,0 +1,65 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Define the default values for a weather forecast column.
+
+A forecast screen has four columns, each with the same data. This abstracts out the
+common bits of each column.
+
+This code is specific to the Mark II device. It uses a grid of 16x16 pixel
+squares for alignment of items.
+*/
+import QtQuick 2.4
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.3
+
+Column {
+ id: dailyColumn
+ spacing: gridUnit * 2
+ width: gridUnit * 9
+
+ property var forecast
+
+ WeatherImage {
+ id: forecastCondition
+ heightUnits: 4
+ imageSource: forecast.weatherCondition
+ }
+
+ WeatherLabel {
+ id: forecastDay
+ heightUnits: 2
+ fontSize: 47
+ fontStyle: "Regular"
+ text: forecast.day
+ }
+
+ WeatherLabel {
+ id: forecastHighTemperature
+ heightUnits: 3
+ fontSize: 72
+ fontStyle: "Bold"
+ text: forecast.highTemperature + "°"
+ }
+
+ WeatherLabel {
+ id: forecastLowTemperature
+ heightUnits: 3
+ fontSize: 72
+ fontStyle: "Light"
+ text: forecast.lowTemperature + "°"
+ }
+}
+
diff --git a/ui/ForecastDelegate.qml b/ui/DailyDelegateScalable.qml
similarity index 65%
rename from ui/ForecastDelegate.qml
rename to ui/DailyDelegateScalable.qml
index c16452f9..076ef1b1 100644
--- a/ui/ForecastDelegate.qml
+++ b/ui/DailyDelegateScalable.qml
@@ -1,3 +1,23 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Re-usable code to display two days forecast.
+
+This code written to be scalable for different screen sizes. It can be used on any
+device not conforming to the Mark II screen's form factor.
+*/
import QtQuick.Layouts 1.4
import QtQuick 2.4
import QtQuick.Controls 2.0
@@ -6,7 +26,7 @@ import org.kde.kirigami 2.4 as Kirigami
import Mycroft 1.0 as Mycroft
import org.kde.lottie 1.0
-WeatherDelegate {
+WeatherDelegateScalable {
id: root
property alias model: forecastRepeater.model
@@ -26,7 +46,7 @@ WeatherDelegate {
Layout.preferredHeight: proportionalGridUnit * 30
Layout.preferredWidth: Layout.preferredHeight
- source: Qt.resolvedUrl(getWeatherImagery(modelData.weathercode))
+ source: Qt.resolvedUrl(modelData.weatherCondition)
loops: Animation.Infinite
fillMode: Image.PreserveAspectFit
running: true
@@ -47,7 +67,7 @@ WeatherDelegate {
rightPadding: -font.pixelSize * 0.1
font.pixelSize: height * 0.90
horizontalAlignment: Text.AlignHCenter
- text: modelData.max + "°"
+ text: modelData.highTemperature + "°"
}
Label {
@@ -57,7 +77,7 @@ WeatherDelegate {
rightPadding: -font.pixelSize * 0.1
font.pixelSize: height * 0.90
horizontalAlignment: Text.AlignHCenter
- text: modelData.min + "°"
+ text: modelData.lowTemperature + "°"
}
}
}
diff --git a/ui/HourlyColumn.qml b/ui/HourlyColumn.qml
new file mode 100644
index 00000000..ab1c460f
--- /dev/null
+++ b/ui/HourlyColumn.qml
@@ -0,0 +1,65 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Define the default values for a weather forecast column.
+
+A forecast screen has four columns, each with the same data. This abstracts out the
+common bits of each column.
+
+This code is specific to the Mark II device. It uses a grid of 16x16 pixel
+squares for alignment of items.
+*/
+import QtQuick 2.4
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.3
+
+Column {
+ id: hourlyColumn
+ spacing: gridUnit * 2
+ width: gridUnit * 9
+
+ property var forecast
+
+ WeatherImage {
+ id: forecastCondition
+ heightUnits: 4
+ imageSource: forecast.weatherCondition
+ }
+
+ WeatherLabel {
+ id: forecastTime
+ heightUnits: 2
+ fontSize: 47
+ fontStyle: "Regular"
+ text: forecast.time
+ }
+
+ WeatherLabel {
+ id: forecastTemperature
+ heightUnits: 3
+ fontSize: 72
+ fontStyle: "Bold"
+ text: forecast.temperature + "°"
+ }
+
+ WeatherLabel {
+ id: forecastPrecipitation
+ heightUnits: 3
+ fontSize: 72
+ fontStyle: "Light"
+ text: forecast.precipitation + "%"
+ }
+}
+
diff --git a/ui/WeatherDate.qml b/ui/WeatherDate.qml
new file mode 100644
index 00000000..bdfe3b33
--- /dev/null
+++ b/ui/WeatherDate.qml
@@ -0,0 +1,40 @@
+ // Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Abstract component for alphanunumeric values.
+
+The Mark II card design requires the ability to have a text field's baseline sit on one
+of the 16 pixel grid lines. The benefit of this approach is consistent alignment of
+text fields that disregards the extra space that can be included around the text for
+ascenders and descenders.
+
+To implement this idea, a bounding box is defined around a label for alignment purposes.
+The baseline of the text sits on the bottom of the bounding box and the value is
+centered within the box.
+
+This code is specific to the Mark II device. It uses a grid of 16x16 pixel
+squares for alignment of items.
+*/
+import QtQuick 2.4
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.3
+
+WeatherLabel {
+ // The date of the weather forecast being displayed
+ heightUnits: 4
+ fontSize: 48
+ fontStyle: "Medium"
+ text: sessionData.weatherDate
+}
diff --git a/ui/WeatherDelegateMarkII.qml b/ui/WeatherDelegateMarkII.qml
new file mode 100644
index 00000000..d35c7815
--- /dev/null
+++ b/ui/WeatherDelegateMarkII.qml
@@ -0,0 +1,29 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Re-usable code that defines a map of Open Weather Map icon codes to SVGs.
+
+This code is specific to the Mark II device. It uses images instead of animations to
+address performance concerns. Could change to use animations if the performance improves
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+
+import Mycroft 1.0 as Mycroft
+
+Mycroft.CardDelegate {
+ id: root
+}
diff --git a/ui/WeatherDelegate.qml b/ui/WeatherDelegateScalable.qml
similarity index 53%
rename from ui/WeatherDelegate.qml
rename to ui/WeatherDelegateScalable.qml
index 540d8c7e..e73bab28 100644
--- a/ui/WeatherDelegate.qml
+++ b/ui/WeatherDelegateScalable.qml
@@ -1,3 +1,23 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Re-usable code that defines a map of Open Weather Map icon codes to animations.
+
+This code is specific to the Mark II device. It uses images instead of animations to
+address performance concerns. Could change to use animations if the performance improves
+*/
import QtQuick.Layouts 1.4
import QtQuick 2.4
import QtQuick.Controls 2.0
diff --git a/ui/WeatherImage.qml b/ui/WeatherImage.qml
new file mode 100644
index 00000000..20b65c66
--- /dev/null
+++ b/ui/WeatherImage.qml
@@ -0,0 +1,40 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Abstract component for SVGs.
+
+This code is specific to the Mark II device. It uses a grid of 16x16 pixel
+squares for alignment of items. The image is wrapped in a bounding box for
+alignment purposes.
+*/
+import QtQuick 2.4
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.3
+
+Item {
+ property alias imageSource: weatherImage.source
+ property int heightUnits
+
+ height: gridUnit * heightUnits
+ width: parent.width
+
+ Image {
+ id: weatherImage
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ height: gridUnit * heightUnits
+ fillMode: Image.PreserveAspectFit
+ }
+}
diff --git a/ui/WeatherLabel.qml b/ui/WeatherLabel.qml
new file mode 100644
index 00000000..5ad408a4
--- /dev/null
+++ b/ui/WeatherLabel.qml
@@ -0,0 +1,49 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Abstract component for alphanunumeric values.
+
+The Mark II card design requires the ability to have a text field's baseline sit on one
+of the 16 pixel grid lines. The benefit of this approach is consistent alignment of
+text fields that disregards the extra space that can be included around the text for
+ascenders and descenders.
+
+To implement this idea, a bounding box is defined around a label for alignment purposes.
+The baseline of the text sits on the bottom of the bounding box and the value is
+centered within the box.
+
+This code is specific to the Mark II device. It uses a grid of 16x16 pixel
+squares for alignment of items.
+*/
+import QtQuick 2.4
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.3
+
+Item {
+ property alias fontSize: weatherLabel.font.pixelSize
+ property alias fontStyle: weatherLabel.font.styleName
+ property alias text: weatherLabel.text
+ property int heightUnits
+
+ height: gridUnit * heightUnits
+ width: parent.width
+
+ Label {
+ id: weatherLabel
+ anchors.baseline: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Noto Sans Display"
+ }
+}
diff --git a/ui/WeatherLocation.qml b/ui/WeatherLocation.qml
new file mode 100644
index 00000000..f6438638
--- /dev/null
+++ b/ui/WeatherLocation.qml
@@ -0,0 +1,41 @@
+ // Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Abstract component for alphanunumeric values.
+
+The Mark II card design requires the ability to have a text field's baseline sit on one
+of the 16 pixel grid lines. The benefit of this approach is consistent alignment of
+text fields that disregards the extra space that can be included around the text for
+ascenders and descenders.
+
+To implement this idea, a bounding box is defined around a label for alignment purposes.
+The baseline of the text sits on the bottom of the bounding box and the value is
+centered within the box.
+
+This code is specific to the Mark II device. It uses a grid of 16x16 pixel
+squares for alignment of items.
+*/
+import QtQuick 2.4
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.3
+
+WeatherLabel {
+ // City/state if in same country as device. City/country if in a different country
+ heightUnits: 4
+ fontSize: 48
+ fontStyle: "Medium"
+ text: sessionData.weatherLocation
+}
+
diff --git a/ui/animations/cloudy.json b/ui/animations/clouds.json
similarity index 100%
rename from ui/animations/cloudy.json
rename to ui/animations/clouds.json
diff --git a/ui/animations/partlycloudy.json b/ui/animations/partial_clouds.json
similarity index 100%
rename from ui/animations/partlycloudy.json
rename to ui/animations/partial_clouds.json
diff --git a/ui/animations/sunny.json b/ui/animations/sun.json
similarity index 100%
rename from ui/animations/sunny.json
rename to ui/animations/sun.json
diff --git a/ui/current_1_mark_ii.qml b/ui/current_1_mark_ii.qml
new file mode 100644
index 00000000..94f63bad
--- /dev/null
+++ b/ui/current_1_mark_ii.qml
@@ -0,0 +1,149 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+One of many screns that show when the user asks for the current weather.
+
+Shows an image representing current conditions, the current temperature, and
+the high/low temperature for today.
+
+This code is specific to the Mark II device. It uses a grid of 32x32 pixel
+squares for alignment of items.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+
+WeatherDelegateMarkII {
+ id: root
+
+ Item {
+ // Bounding box for the content of the screen.
+ id: card
+ height: parent.height
+ width: parent.width
+
+ WeatherLocation {
+ id: weatherLocation
+ }
+
+ GridLayout {
+ id: weather
+ anchors.left: parent.left
+ anchors.leftMargin: gridUnit * 2
+ anchors.top: weatherLocation.bottom
+ anchors.topMargin: gridUnit * 2
+ columns: 2
+ columnSpacing: gridUnit * 2
+ width: gridUnit * 20
+
+ Item {
+ // First column in grid
+ id: currentConditions
+ height: gridUnit * 18
+ width: parent.width
+
+ Image {
+ // Image depicting the current weather conditions (e.g. sunny, cloudy, etc.)
+ id: conditionsImage
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.horizontalCenterOffset: gridUnit * -2
+ fillMode: Image.PreserveAspectFit
+ height: gridUnit * 7
+ source: sessionData.weatherCondition
+ }
+
+ Label {
+ // Current temperature in the configured temperature unit.
+ id: currentTemperature
+ anchors.baseline: parent.bottom
+ anchors.baselineOffset: gridUnit * -1
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Noto Sans Display"
+ font.pixelSize: 176
+ font.styleName: "Bold"
+ text: sessionData.currentTemperature + "°"
+ }
+ }
+
+ Column {
+ // Second column in grid
+ id: highLowTemperature
+ height: gridUnit * 18
+ width: parent.width
+ spacing: gridUnit * 2
+
+ Item {
+ // High temperature for today
+ id: highTemperature
+ height: gridUnit * 8
+ width: parent.width
+
+ Image {
+ id: highTemperatureIcon
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: gridUnit * 2
+ anchors.left: highTemperature.left
+ anchors.leftMargin: gridUnit * 2
+ fillMode: Image.PreserveAspectFit
+ height: gridUnit * 4
+ source: "images/high_temperature.svg"
+ }
+
+ Label {
+ id: highTemperatureValue
+ anchors.baseline: parent.bottom
+ anchors.baselineOffset: gridUnit * -2
+ anchors.left: highTemperatureIcon.right
+ anchors.leftMargin: gridUnit * 2
+ font.family: "Noto Sans Display"
+ font.pixelSize: 118
+ font.styleName: "SemiBold"
+ text: sessionData.highTemperature + "°"
+ }
+ }
+
+ Item {
+ // Low temperature for today
+ id: lowTemperature
+ height: gridUnit * 8
+ width: parent.width
+
+ Image {
+ id: lowTemperatureIcon
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: gridUnit * 2
+ anchors.left: lowTemperature.left
+ anchors.leftMargin: gridUnit * 2
+ fillMode: Image.PreserveAspectFit
+ height: gridUnit * 4
+ source: "images/low_temperature.svg"
+ }
+
+ Label {
+ id: lowTemperatureValue
+ anchors.baseline: parent.bottom
+ anchors.baselineOffset: gridUnit * -2
+ anchors.left: lowTemperatureIcon.right
+ anchors.leftMargin: gridUnit * 2
+ font.family: "Noto Sans Display"
+ font.pixelSize: 118
+ font.styleName: "Light"
+ text: sessionData.lowTemperature + "°"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/ui/current_1_scalable.qml b/ui/current_1_scalable.qml
new file mode 100644
index 00000000..7b286f3b
--- /dev/null
+++ b/ui/current_1_scalable.qml
@@ -0,0 +1,68 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.import QtQuick.Layouts 1.4
+
+/*
+One of many screns that show when the user asks for the current weather.
+
+Shows an image representing current conditions and the current temperature.
+
+This code written to be scalable for different screen sizes. It can be used on any
+device not conforming to the Mark II screen's form factor.
+*/
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+import org.kde.kirigami 2.4 as Kirigami
+
+import Mycroft 1.0 as Mycroft
+import org.kde.lottie 1.0
+
+WeatherDelegateScalable {
+ id: root
+
+ spacing: proportionalGridUnit * 5
+
+ LottieAnimation {
+ // Animation depicting the current weather conditions (e.g. sunny, cloudy, etc.)
+ id: weatherAnimation
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredWidth: Math.min(root.contentWidth, proportionalGridUnit * 50)
+ Layout.preferredHeight: Layout.preferredWidth
+
+ source: Qt.resolvedUrl(getWeatherImagery(sessionData.weatherCode))
+
+ loops: Animation.Infinite
+ fillMode: Image.PreserveAspectFit
+ running: true
+
+ // Debug:
+ onSourceChanged: {
+ console.log(getWeatherImagery(sessionData.weatherCode));
+ }
+ onStatusChanged: {
+ console.log(weatherAnimation.status, errorString);
+ }
+ }
+
+ Label {
+ // Current temperature in the configured temperature unit
+ id: temperature
+ font.weight: Font.Bold
+ font.pixelSize: parent.height * 0.65
+ horizontalAlignment: Text.AlignHCenter
+ Layout.fillWidth: true
+ Layout.preferredHeight: proportionalGridUnit * 40
+ rightPadding: -font.pixelSize * 0.1
+ text: sessionData.currentTemperature + "°"
+ }
+}
diff --git a/ui/current_2_mark_ii.qml b/ui/current_2_mark_ii.qml
new file mode 100644
index 00000000..42d2efc8
--- /dev/null
+++ b/ui/current_2_mark_ii.qml
@@ -0,0 +1,96 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+One of many screns that show when the user asks for the current weather.
+
+Shows the current wind speed and percentage humidity.
+
+This code is specific to the Mark II device. It uses a grid of 32x32 pixel
+squares for alignment of items.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+
+WeatherDelegateMarkII {
+ id: root
+
+ Item {
+ // Bounding box for the content of the screen.
+ id: card
+ height: parent.height
+ width: parent.width
+
+ WeatherLocation {
+ id: weatherLocation
+ }
+
+ GridLayout {
+ // Two column grid containg wind and humidity data
+ id: weather
+ anchors.left: parent.left
+ anchors.leftMargin: gridUnit * 2
+ anchors.top: weatherLocation.bottom
+ anchors.topMargin: gridUnit * 2
+ columns: 2
+ columnSpacing: gridUnit * 2
+ rowSpacing: 0
+
+ Column {
+ // First column of the grid, displaying a wind icon and speed.
+ id: wind
+ height: gridUnit * 22
+ width: gridUnit * 20
+ spacing: gridUnit * 2
+
+ WeatherImage {
+ id: windIcon
+ heightUnits: 8
+ imageSource: "images/wind.svg"
+ }
+
+ WeatherLabel {
+ id: windSpeed
+ fontSize: 176
+ fontStyle: "Bold"
+ heightUnits: 8
+ text: sessionData.windSpeed
+ }
+ }
+
+ Column {
+ // Second column of the grid, displaying a humidity icon and speed.
+ id: humidity
+ height: gridUnit * 22
+ width: gridUnit * 20
+ spacing: gridUnit * 2
+
+ WeatherImage {
+ id: humidityIcon
+ heightUnits: 8
+ imageSource: "images/humidity.svg"
+ }
+
+ WeatherLabel {
+ id: humidityPercentage
+ fontSize: 176
+ fontStyle: "Bold"
+ heightUnits: 8
+ text: sessionData.humidity
+ }
+ }
+ }
+ }
+}
diff --git a/ui/current_2_scalable.qml b/ui/current_2_scalable.qml
new file mode 100644
index 00000000..9d650f96
--- /dev/null
+++ b/ui/current_2_scalable.qml
@@ -0,0 +1,57 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+One of many screns that show when the user asks for the current weather.
+
+Shows the high/low temperature for today.
+
+This code written to be scalable for different screen sizes. It can be used on any
+device not conforming to the Mark II screen's form factor.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+import org.kde.kirigami 2.4 as Kirigami
+
+import Mycroft 1.0 as Mycroft
+import org.kde.lottie 1.0
+
+WeatherDelegateScalable {
+ id: root
+
+ Label {
+ id: highTemperature
+ font.weight: Font.Bold
+ font.pixelSize: parent.height * 0.50
+ horizontalAlignment: Text.AlignHCenter
+ Layout.fillWidth: true
+ Layout.preferredHeight: proportionalGridUnit * 40
+ //The off-centering to balance the ° should be proportional as well, so we use the computed pixel size
+ rightPadding: -font.pixelSize * 0.1
+ text: sessionData.highTemperature + "°"
+ }
+
+ Label {
+ id: lowTemperature
+ font.pixelSize: parent.height * 0.50
+ font.styleName: "Thin"
+ font.weight: Font.Thin
+ horizontalAlignment: Text.AlignHCenter
+ Layout.fillWidth: true
+ Layout.preferredHeight: proportionalGridUnit * 40
+ rightPadding: -font.pixelSize * 0.1
+ text: sessionData.lowTemperature + "°"
+ }
+}
diff --git a/ui/daily_1_scalable.qml b/ui/daily_1_scalable.qml
new file mode 100644
index 00000000..70b10ed5
--- /dev/null
+++ b/ui/daily_1_scalable.qml
@@ -0,0 +1,34 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+One of many screns that show when the user asks for the current weather.
+
+Shows the first and second day of a four day forecast.
+
+This code written to be scalable for different screen sizes. It can be used on any
+device not conforming to the Mark II screen's form factor.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+import org.kde.kirigami 2.4 as Kirigami
+
+import Mycroft 1.0 as Mycroft
+import org.kde.lottie 1.0
+
+DailyDelegateScalable {
+ id: root
+ model: sessionData.forecast.first
+}
diff --git a/ui/daily_2_scalable.qml b/ui/daily_2_scalable.qml
new file mode 100644
index 00000000..7d09cfce
--- /dev/null
+++ b/ui/daily_2_scalable.qml
@@ -0,0 +1,34 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+One of many screns that show when the user asks for the current weather.
+
+Shows the third and fourth day of a four day forecast.
+
+This code written to be scalable for different screen sizes. It can be used on any
+device not conforming to the Mark II screen's form factor.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+import org.kde.kirigami 2.4 as Kirigami
+
+import Mycroft 1.0 as Mycroft
+import org.kde.lottie 1.0
+
+DailyDelegateScalable {
+ id: root
+ model: sessionData.forecast.second
+}
diff --git a/ui/daily_mark_ii.qml b/ui/daily_mark_ii.qml
new file mode 100644
index 00000000..3e1e3a76
--- /dev/null
+++ b/ui/daily_mark_ii.qml
@@ -0,0 +1,64 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.import QtQuick.Layouts 1.4
+
+/*
+Shows up to four days of forecasted weather.
+
+Will be displayed when the user asks for a daily weather forecast.
+
+This code is specific to the Mark II device. It uses a grid of 32x32 pixel
+squares for alignment of items.
+*/
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+import QtQuick.Layouts 1.4
+
+WeatherDelegateMarkII {
+ Item {
+ // Bounding box for the content of the screen.
+ id: dailyCard
+ height: parent.height
+ width: parent.width
+
+ WeatherLocation {
+ id: weatherLocation
+ }
+
+ RowLayout {
+ // Four rows, one for each hour of the forecast.
+ id: hourlyWeather
+ anchors.left: parent.left
+ anchors.leftMargin: gridUnit * 2
+ anchors.top: weatherLocation.bottom
+ anchors.topMargin: gridUnit * 2
+ spacing: gridUnit * 2
+
+ DailyColumn {
+ forecast: sessionData.dailyForecast.days[0]
+ }
+
+ DailyColumn {
+ forecast: sessionData.dailyForecast.days[1]
+ }
+
+ DailyColumn {
+ forecast: sessionData.dailyForecast.days[2]
+ }
+
+ DailyColumn {
+ forecast: sessionData.dailyForecast.days[3]
+ }
+ }
+ }
+}
diff --git a/ui/details.qml b/ui/details.qml
deleted file mode 100644
index b3eab96b..00000000
--- a/ui/details.qml
+++ /dev/null
@@ -1,110 +0,0 @@
-import QtQuick.Layouts 1.4
-import QtQuick 2.4
-import QtQuick.Controls 2.0
-import org.kde.kirigami 2.4 as Kirigami
-
-import Mycroft 1.0 as Mycroft
-import org.kde.lottie 1.0
-
-WeatherDelegate {
- id: root
-
- spacing: proportionalGridUnit
- Mycroft.AutoFitLabel {
- wrapMode: Text.WordWrap
- text: sessionData.location
- lineHeight: 0.6
- horizontalAlignment: Layout.alignLeft
- Layout.alignment: Qt.AlignLeft
- Layout.preferredHeight: proportionalGridUnit * 15
- Layout.preferredWidth : 300
- }
- LottieAnimation {
- id: weatherAnimation
- Layout.alignment: Qt.AlignHCenter
- Layout.preferredWidth: Math.min(root.contentWidth, proportionalGridUnit * 40)
- Layout.preferredHeight: Layout.preferredWidth
-
- source: Qt.resolvedUrl(getWeatherImagery(sessionData.weathercode))
-
- loops: Animation.Infinite
- fillMode: Image.PreserveAspectFit
- running: true
-
- // Debug:
- onSourceChanged: {
- console.log(getWeatherImagery(sessionData.weathercode));
- }
- onStatusChanged: {
- console.log(weatherAnimation.status, errorString);
- }
- }
-
- GridLayout {
- columns: 2
- columnSpacing: proportionalGridUnit * 5
- rowSpacing: proportionalGridUnit * 5
- Layout.alignment: Qt.AlignHCenter
- Layout.preferredWidth: Math.min(root.contentWidth, proportionalGridUnit * 50)
- ColumnLayout {
- Mycroft.AutoFitLabel {
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 3
- text: "Min:"
- }
- Mycroft.AutoFitLabel {
- font.weight: Font.Bold
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 15
- text: sessionData.min + "°"
- }
- }
- ColumnLayout {
- Mycroft.AutoFitLabel {
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 3
- text: "Max:"
- }
- Mycroft.AutoFitLabel {
- font.weight: Font.Bold
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 15
- text: sessionData.max + "°"
- }
- }
- ColumnLayout {
- Mycroft.AutoFitLabel {
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 3
- text: "Humidity:"
- }
- Mycroft.AutoFitLabel {
- font.weight: Font.Bold
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 15
- text: sessionData.humidity + "%"
- }
- }
- ColumnLayout {
- Mycroft.AutoFitLabel {
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 3
- text: "Windspeed:"
- }
- Mycroft.AutoFitLabel {
- font.weight: Font.Bold
- horizontalAlignment: Text.AlignLeft
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 15
- text: sessionData.wind
- }
- }
- }
-}
diff --git a/ui/forecast1.qml b/ui/forecast1.qml
deleted file mode 100644
index b8b321d4..00000000
--- a/ui/forecast1.qml
+++ /dev/null
@@ -1,12 +0,0 @@
-import QtQuick.Layouts 1.4
-import QtQuick 2.4
-import QtQuick.Controls 2.0
-import org.kde.kirigami 2.4 as Kirigami
-
-import Mycroft 1.0 as Mycroft
-import org.kde.lottie 1.0
-
-ForecastDelegate {
- id: root
- model: sessionData.forecast.first
-}
diff --git a/ui/forecast2.qml b/ui/forecast2.qml
deleted file mode 100644
index aad6da03..00000000
--- a/ui/forecast2.qml
+++ /dev/null
@@ -1,12 +0,0 @@
-import QtQuick.Layouts 1.4
-import QtQuick 2.4
-import QtQuick.Controls 2.0
-import org.kde.kirigami 2.4 as Kirigami
-
-import Mycroft 1.0 as Mycroft
-import org.kde.lottie 1.0
-
-ForecastDelegate {
- id: root
- model: sessionData.forecast.second
-}
diff --git a/ui/highlow.qml b/ui/highlow.qml
deleted file mode 100644
index 33e20308..00000000
--- a/ui/highlow.qml
+++ /dev/null
@@ -1,35 +0,0 @@
-import QtQuick.Layouts 1.4
-import QtQuick 2.4
-import QtQuick.Controls 2.0
-import org.kde.kirigami 2.4 as Kirigami
-
-import Mycroft 1.0 as Mycroft
-import org.kde.lottie 1.0
-
-WeatherDelegate {
- id: root
-
- Label {
- id: maxTemp
- font.weight: Font.Bold
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 40
- font.pixelSize: parent.height * 0.50
- //The off-centering to balance the ° should be proportional as well, so we use the computed pixel size
- rightPadding: -font.pixelSize * 0.1
- horizontalAlignment: Text.AlignHCenter
- text: sessionData.max + "°"
- }
-
- Label {
- id: minTemp
- Layout.fillWidth: true
- Layout.preferredHeight: proportionalGridUnit * 40
- font.pixelSize: parent.height * 0.50
- rightPadding: -font.pixelSize * 0.1
- font.weight: Font.Thin
- font.styleName: "Thin"
- horizontalAlignment: Text.AlignHCenter
- text: sessionData.min + "°"
- }
-}
diff --git a/ui/hourly_mark_ii.qml b/ui/hourly_mark_ii.qml
new file mode 100644
index 00000000..87f03d28
--- /dev/null
+++ b/ui/hourly_mark_ii.qml
@@ -0,0 +1,68 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Shows up to four hours of forecasted weather.
+
+Will be displayed when:
+ * the user asks for a hourly weather forecast.
+ * as the last screen when a user asks for current weather.
+
+This code is specific to the Mark II device. It uses a grid of 32x32 pixel
+squares for alignment of items.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+
+import Mycroft 1.0 as Mycroft
+
+WeatherDelegateMarkII {
+ Item {
+ // Bounding box for the content of the screen.
+ id: hourlyCard
+ height: parent.height
+ width: parent.width
+
+ WeatherLocation {
+ id: weatherLocation
+ }
+
+ RowLayout {
+ // Four rows, one for each hour of the forecast.
+ id: hourlyWeather
+ anchors.left: parent.left
+ anchors.leftMargin: gridUnit * 2
+ anchors.top: weatherLocation.bottom
+ anchors.topMargin: gridUnit * 2
+ spacing: gridUnit * 2
+
+ HourlyColumn {
+ forecast: sessionData.hourlyForecast.hours[0]
+ }
+
+ HourlyColumn {
+ forecast: sessionData.hourlyForecast.hours[1]
+ }
+
+ HourlyColumn {
+ forecast: sessionData.hourlyForecast.hours[2]
+ }
+
+ HourlyColumn {
+ forecast: sessionData.hourlyForecast.hours[3]
+ }
+ }
+ }
+}
diff --git a/ui/images/clouds.svg b/ui/images/clouds.svg
new file mode 100644
index 00000000..6ce35734
--- /dev/null
+++ b/ui/images/clouds.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/fog.svg b/ui/images/fog.svg
new file mode 100644
index 00000000..995e02d1
--- /dev/null
+++ b/ui/images/fog.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/high_temperature.svg b/ui/images/high_temperature.svg
new file mode 100644
index 00000000..f6ae4048
--- /dev/null
+++ b/ui/images/high_temperature.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/humidity.svg b/ui/images/humidity.svg
new file mode 100644
index 00000000..f6fba0dc
--- /dev/null
+++ b/ui/images/humidity.svg
@@ -0,0 +1,6 @@
+
diff --git a/ui/images/low_temperature.svg b/ui/images/low_temperature.svg
new file mode 100644
index 00000000..d98838f2
--- /dev/null
+++ b/ui/images/low_temperature.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/moon.svg b/ui/images/moon.svg
new file mode 100644
index 00000000..6d6a7084
--- /dev/null
+++ b/ui/images/moon.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/partial_clouds_day.svg b/ui/images/partial_clouds_day.svg
new file mode 100644
index 00000000..361aa1f6
--- /dev/null
+++ b/ui/images/partial_clouds_day.svg
@@ -0,0 +1,4 @@
+
diff --git a/ui/images/partial_clouds_night.svg b/ui/images/partial_clouds_night.svg
new file mode 100644
index 00000000..3bf749f5
--- /dev/null
+++ b/ui/images/partial_clouds_night.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/rain.svg b/ui/images/rain.svg
new file mode 100644
index 00000000..d941e79c
--- /dev/null
+++ b/ui/images/rain.svg
@@ -0,0 +1,6 @@
+
diff --git a/ui/images/snow.svg b/ui/images/snow.svg
new file mode 100644
index 00000000..584779b8
--- /dev/null
+++ b/ui/images/snow.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/storm.svg b/ui/images/storm.svg
new file mode 100644
index 00000000..4ca5bc3d
--- /dev/null
+++ b/ui/images/storm.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/sun.svg b/ui/images/sun.svg
new file mode 100644
index 00000000..b8c3c205
--- /dev/null
+++ b/ui/images/sun.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/sunrise.svg b/ui/images/sunrise.svg
new file mode 100644
index 00000000..b0f3b912
--- /dev/null
+++ b/ui/images/sunrise.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/sunset.svg b/ui/images/sunset.svg
new file mode 100644
index 00000000..98a94b91
--- /dev/null
+++ b/ui/images/sunset.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/images/wind.svg b/ui/images/wind.svg
new file mode 100644
index 00000000..44a66f2c
--- /dev/null
+++ b/ui/images/wind.svg
@@ -0,0 +1,3 @@
+
diff --git a/ui/single_day_mark_ii.qml b/ui/single_day_mark_ii.qml
new file mode 100644
index 00000000..a7138d96
--- /dev/null
+++ b/ui/single_day_mark_ii.qml
@@ -0,0 +1,155 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+One of many screns that show when the user asks for the current weather.
+
+Shows an image representing current conditions, the current temperature, and
+the high/low temperature for today.
+
+This code is specific to the Mark II device. It uses a grid of 32x32 pixel
+squares for alignment of items.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+
+WeatherDelegateMarkII {
+ id: root
+
+ Item {
+ // Bounding box for the content of the screen.
+ id: card
+ height: parent.height
+ width: parent.width
+
+ WeatherDate {
+ id: weatherDate
+ }
+
+ WeatherLocation {
+ id: weatherLocation
+ anchors.top: weatherDate.bottom
+ }
+
+ GridLayout {
+ id: weather
+ anchors.left: parent.left
+ anchors.leftMargin: gridUnit * 2
+ anchors.top: weatherLocation.bottom
+ anchors.topMargin: gridUnit * 2
+ columns: 2
+ columnSpacing: gridUnit * 2
+ width: gridUnit * 20
+
+ Item {
+ // First column in grid
+ id: weatherConditions
+ height: gridUnit * 14
+ width: parent.width
+
+ WeatherImage {
+ id: forecastCondition
+ heightUnits: 6
+ imageSource: sessionData.weatherCondition
+ }
+
+ WeatherLabel {
+ id: precipitation
+ anchors.top: forecastCondition.bottom
+ anchors.topMargin: gridUnit * 2
+ heightUnits: 6
+ fontSize: 118
+ fontStyle: "Regular"
+ text: sessionData.chanceOfPrecipitation + "%"
+ }
+
+ Label {
+ // Chance of precipitation for the day.
+ id: currentTemperature
+ anchors.baseline: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Noto Sans Display"
+ font.pixelSize: 118
+ font.styleName: "Light"
+ text: sessionData.chanceOfPrecipitation + "%"
+ }
+ }
+
+ Column {
+ // Second column in grid
+ id: highLowTemperature
+ height: gridUnit * 14
+ spacing: gridUnit * 2
+ width: parent.width
+
+ Item {
+ // High temperature for today
+ id: highTemperature
+ height: gridUnit * 6
+ width: parent.width
+
+ Image {
+ id: highTemperatureIcon
+ anchors.bottom: parent.bottom
+ anchors.left: highTemperature.left
+ anchors.leftMargin: gridUnit * 2
+ fillMode: Image.PreserveAspectFit
+ height: gridUnit * 4
+ source: Qt.resolvedUrl("images/high_temperature.svg")
+ }
+
+ Label {
+ id: highTemperatureValue
+ anchors.baseline: parent.bottom
+ anchors.left: highTemperatureIcon.right
+ anchors.leftMargin: gridUnit * 2
+ font.family: "Noto Sans Display"
+ font.pixelSize: 118
+ font.styleName: "SemiBold"
+ text: sessionData.highTemperature + "°"
+ }
+ }
+
+ Item {
+ // Low temperature for today
+ id: lowTemperature
+ height: gridUnit * 6
+ width: parent.width
+
+ Image {
+ id: lowTemperatureIcon
+ anchors.bottom: parent.bottom
+ anchors.left: lowTemperature.left
+ anchors.leftMargin: gridUnit * 2
+ fillMode: Image.PreserveAspectFit
+ height: gridUnit * 4
+ source: Qt.resolvedUrl("images/low_temperature.svg")
+ }
+
+ Label {
+ id: lowTemperatureValue
+ anchors.baseline: parent.bottom
+ anchors.left: lowTemperatureIcon.right
+ anchors.leftMargin: gridUnit * 2
+ font.family: "Noto Sans Display"
+ font.pixelSize: 118
+ font.styleName: "Light"
+ text: sessionData.lowTemperature + "°"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/ui/sunrise_sunset_mark_ii.qml b/ui/sunrise_sunset_mark_ii.qml
new file mode 100644
index 00000000..f34b61ca
--- /dev/null
+++ b/ui/sunrise_sunset_mark_ii.qml
@@ -0,0 +1,114 @@
+// Copyright 2021, Mycroft AI Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/*
+Screen for showing the sunrise and snset.
+
+This code is specific to the Mark II device. It uses a grid of 16x16 pixel
+squares for alignment of items.
+*/
+import QtQuick.Layouts 1.4
+import QtQuick 2.4
+import QtQuick.Controls 2.0
+
+WeatherDelegateMarkII {
+ id: root
+
+ Item {
+ // Bounding box for the content of the screen.
+ id: card
+ height: parent.height
+ width: parent.width
+
+ WeatherDate {
+ id: weatherDate
+ }
+
+ WeatherLocation {
+ id: weatherLocation
+ anchors.top: weatherDate.bottom
+ }
+
+ GridLayout {
+ id: sunriseSunset
+ anchors.left: parent.left
+ anchors.leftMargin: gridUnit * 2
+ anchors.top: weatherLocation.bottom
+ anchors.topMargin: gridUnit * 2
+ columns: 2
+ columnSpacing: gridUnit * 2
+ width: gridUnit * 20
+
+ Column {
+ // First column in grid
+ id: sunrise
+ height: gridUnit * 22
+ spacing: gridUnit * 2
+ width: parent.width
+
+ WeatherImage {
+ id: sunriseImage
+ heightUnits: 5
+ imageSource: "images/sunrise.svg"
+ }
+
+ WeatherLabel {
+ id: sunriseTime
+ heightUnits: 4
+ fontSize: 82
+ fontStyle: "Bold"
+ text: sessionData.sunrise
+ }
+
+ WeatherLabel {
+ id: sunriseAm
+ heightUnits: 2
+ fontSize: 60
+ fontStyle: "Regular"
+ text: sessionData.ampm ? "AM" : ""
+ }
+ }
+
+ Column {
+ // Second column in grid
+ id: sunset
+ height: gridUnit * 22
+ spacing: gridUnit * 2
+ width: parent.width
+
+ WeatherImage {
+ id: sunsetImage
+ heightUnits: 5
+ imageSource: "images/sunset.svg"
+ }
+
+ WeatherLabel {
+ id: sunsetTime
+ heightUnits: 4
+ fontSize: 82
+ fontStyle: "Bold"
+ text: sessionData.sunset
+ }
+
+ WeatherLabel {
+ id: sunsetPm
+ heightUnits: 2
+ fontSize: 60
+ fontStyle: "Regular"
+ text: sessionData.ampm ? "PM" : ""
+ }
+ }
+ }
+ }
+}
diff --git a/ui/weather.qml b/ui/weather.qml
deleted file mode 100644
index 1c7ce476..00000000
--- a/ui/weather.qml
+++ /dev/null
@@ -1,45 +0,0 @@
-import QtQuick.Layouts 1.4
-import QtQuick 2.4
-import QtQuick.Controls 2.0
-import org.kde.kirigami 2.4 as Kirigami
-
-import Mycroft 1.0 as Mycroft
-import org.kde.lottie 1.0
-
-WeatherDelegate {
- id: root
-
- spacing: proportionalGridUnit * 5
-
- LottieAnimation {
- id: weatherAnimation
- Layout.alignment: Qt.AlignHCenter
- Layout.preferredWidth: Math.min(root.contentWidth, proportionalGridUnit * 50)
- Layout.preferredHeight: Layout.preferredWidth
-
- source: Qt.resolvedUrl(getWeatherImagery(sessionData.weathercode))
-
- loops: Animation.Infinite
- fillMode: Image.PreserveAspectFit
- running: true
-
- // Debug:
- onSourceChanged: {
- console.log(getWeatherImagery(sessionData.weathercode));
- }
- onStatusChanged: {
- console.log(weatherAnimation.status, errorString);
- }
- }
-
- Label {
- id: temperature
- font.weight: Font.Bold
- Layout.fillWidth: true
- horizontalAlignment: Text.AlignHCenter
- Layout.preferredHeight: proportionalGridUnit * 40
- font.pixelSize: parent.height * 0.65
- rightPadding: -font.pixelSize * 0.1
- text: sessionData.current + "°"
- }
-}
diff --git a/vocab/ca-es/ClearAlternatives.voc b/vocab/ca-es/ClearAlternatives.voc
deleted file mode 100644
index 7192d353..00000000
--- a/vocab/ca-es/ClearAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similars a temps clar
-(nebulós|nebulosa|bromós|bromos|boira|boirós|boirosa|enlleganyat|enlleganyada|lleganyós|lleganyos|calitjós|calitjosa|núvol|ennuvolat|ennuvolada|encapotat|encapotada|fosc|fosca|cobert|coberta|tapat|tapada|emboirat|emboirada|nuvolós|nuvolosa|embromat|embromada|núvol|núvols)
diff --git a/vocab/ca-es/CloudyAlternatives.voc b/vocab/ca-es/CloudyAlternatives.voc
deleted file mode 100644
index 9c2f0d7d..00000000
--- a/vocab/ca-es/CloudyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similars a temps ennuvolat
-(clar|boirina|aigua|pluja|plovisqueja| pluja lleugera)
diff --git a/vocab/ca-es/FogAlternatives.voc b/vocab/ca-es/FogAlternatives.voc
deleted file mode 100644
index aa5a234f..00000000
--- a/vocab/ca-es/FogAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives per al temps de boira
-(clar|ennuvolat|núvols|parcialment ennuvolat)
diff --git a/vocab/ca-es/RainAlternatives.voc b/vocab/ca-es/RainAlternatives.voc
deleted file mode 100644
index e1c6e8b6..00000000
--- a/vocab/ca-es/RainAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similars a la pluja
-(neu|nevada lleugera|aiguaneu|boira)
diff --git a/vocab/ca-es/SnowAlternatives.voc b/vocab/ca-es/SnowAlternatives.voc
deleted file mode 100644
index bdf3bde1..00000000
--- a/vocab/ca-es/SnowAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Condicions similars a la neu
-(pluja|pluja lleugera)
diff --git a/vocab/ca-es/StormAlternatives.voc b/vocab/ca-es/StormAlternatives.voc
deleted file mode 100644
index a382d361..00000000
--- a/vocab/ca-es/StormAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similars a temps tempestuós
-(plugim|plovisqueig|pluja|pluja lleugera|neu|poca neu|boirós|boira|núvol|núvols|nuvolat|parcialment ennuvolat)
diff --git a/vocab/ca-es/ThreeDay.voc b/vocab/ca-es/ThreeDay.voc
deleted file mode 100644
index 03b292f3..00000000
--- a/vocab/ca-es/ThreeDay.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-3 dies
-tres dies
-pocs dies
diff --git a/vocab/ca-es/WeatherType.voc b/vocab/ca-es/WeatherType.voc
deleted file mode 100644
index fdcb1d9c..00000000
--- a/vocab/ca-es/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-pluja|plovent
-neu|nevada|nevant
-aiguaneu
-calamarsa|pedra|pedregant
-solejat|assolellat
-calent|càlid
-fred|gelat|fres
diff --git a/vocab/ca-es/simple.temperature.intent b/vocab/ca-es/simple.temperature.intent
deleted file mode 100644
index 7d8f4cb4..00000000
--- a/vocab/ca-es/simple.temperature.intent
+++ /dev/null
@@ -1 +0,0 @@
-temperatura
diff --git a/vocab/ca-es/what.is.multi.day.forecast.intent b/vocab/ca-es/what.is.multi.day.forecast.intent
deleted file mode 100644
index 1a212a3b..00000000
--- a/vocab/ca-es/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-temps|clima (en|sobre|per) els següents {num} dies
-com és el temps|clima (a|sobre|per) els pròxims {num} dies
-quin serà el temps (a|sobre|per) els següents|pròxims {num} dies
-com serà el temps|clima (a|sobre|per) als següents {num} dies
diff --git a/vocab/ca-es/what.is.three.day.forecast.intent b/vocab/ca-es/what.is.three.day.forecast.intent
deleted file mode 100644
index 80de0c01..00000000
--- a/vocab/ca-es/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-pronòstic a (3|tres) dies
-(explica'm|quál és) el|la (pronòstic|predicció meteorològica) (a 3 dies|a tres dies|ampliat)
diff --git a/vocab/ca-es/what.is.three.day.forecast.location.intent b/vocab/ca-es/what.is.three.day.forecast.location.intent
deleted file mode 100644
index 925569f9..00000000
--- a/vocab/ca-es/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1 +0,0 @@
-(explica'm|quál és) el pronòstic (a 3 dies|a tres dies|ampliat) (a|per a) {Location}
diff --git a/vocab/ca-es/what.is.two.day.forecast.intent b/vocab/ca-es/what.is.two.day.forecast.intent
deleted file mode 100644
index 6b160fd9..00000000
--- a/vocab/ca-es/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,3 +0,0 @@
-clima per a {day_one} i {day_two}
-com (estará| a ser) el clima el {day_one} i {day_two}
-com serà el clima (per a|en) {day_one} i {day_two}
diff --git a/vocab/ca-es/whats.weather.like.intent b/vocab/ca-es/whats.weather.like.intent
deleted file mode 100644
index 2de5ea39..00000000
--- a/vocab/ca-es/whats.weather.like.intent
+++ /dev/null
@@ -1,5 +0,0 @@
-pronòstic
-oratge|el temps|meteo
-quin temps fa (avui|)
-quin temps fa fora
-previsió meteorològica|pronòstic del temps
diff --git a/vocab/da-dk/AUTO_TRANSLATED b/vocab/da-dk/AUTO_TRANSLATED
deleted file mode 100644
index 11b245d4..00000000
--- a/vocab/da-dk/AUTO_TRANSLATED
+++ /dev/null
@@ -1 +0,0 @@
-Files in this folder is auto translated by mycroft-msk. Files in this folder is auto translated by mycroft-msk.
\ No newline at end of file
diff --git a/vocab/da-dk/ClearAlternatives.voc b/vocab/da-dk/ClearAlternatives.voc
deleted file mode 100644
index 7cbe3791..00000000
--- a/vocab/da-dk/ClearAlternatives.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Alternatives similar to clear weather
-# (fog|mist|clouds|cloud)
-(tåge|tåge|skyer|Sky)
diff --git a/vocab/da-dk/CloudyAlternatives.voc b/vocab/da-dk/CloudyAlternatives.voc
deleted file mode 100644
index 71cede88..00000000
--- a/vocab/da-dk/CloudyAlternatives.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Alternatives similar to clody weather
-# (clear|mist|fog|rain| light rain)
-(klar|tåge|tåge|regn| let regn)
diff --git a/vocab/da-dk/FogAlternatives.voc b/vocab/da-dk/FogAlternatives.voc
deleted file mode 100644
index 4a70db06..00000000
--- a/vocab/da-dk/FogAlternatives.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Alternatives to foggy weather
-# (clear|clouds|cloud|partially cloudy)
-(klar|skyer|Sky|delvis skyet)
diff --git a/vocab/da-dk/RainAlternatives.voc b/vocab/da-dk/RainAlternatives.voc
deleted file mode 100644
index 1ee1452a..00000000
--- a/vocab/da-dk/RainAlternatives.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Alternatives similar to rain
-# (snow|light snow|sleet|fog|mist)
-(sne|let sne|slud|tåge|tåge)
diff --git a/vocab/da-dk/SnowAlternatives.voc b/vocab/da-dk/SnowAlternatives.voc
deleted file mode 100644
index de5dee50..00000000
--- a/vocab/da-dk/SnowAlternatives.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Conditions similar to snow
-# (rain|light rain)
-(regn|let regn)
diff --git a/vocab/da-dk/StormAlternatives.voc b/vocab/da-dk/StormAlternatives.voc
deleted file mode 100644
index 13b5d314..00000000
--- a/vocab/da-dk/StormAlternatives.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Alternatives similar to stormy weather
-# (drizzle|rain|light rain|snow|light snow|sleet|fog|mist|clouds|cloud|partially cloudy)
-(støvregn|regn|let regn|sne|let sne|slud|tåge|tåge|skyer|Sky|delvis skyet)
diff --git a/vocab/da-dk/ThreeDay.voc b/vocab/da-dk/ThreeDay.voc
deleted file mode 100644
index 71b3c8ab..00000000
--- a/vocab/da-dk/ThreeDay.voc
+++ /dev/null
@@ -1,6 +0,0 @@
-# 3 day(s|)
-3 dage(s|)
-# three day(s|)
-tre dage(s|)
-# few days
-få dage
diff --git a/vocab/da-dk/WeatherType.voc b/vocab/da-dk/WeatherType.voc
deleted file mode 100644
index 6c9882f9..00000000
--- a/vocab/da-dk/WeatherType.voc
+++ /dev/null
@@ -1,16 +0,0 @@
-# rain|raining
-regn|regner
-# snow|snowing
-sne|sner
-# sleet
-slud
-# hail|hailing
-hagl|signalsystemet
-# sunny|sun
-solrig|sol
-# hot|warm
-hed|varm
-# cold|cool
-kold|fedt nok
-#
-
diff --git a/vocab/da-dk/simple.temperature.intent b/vocab/da-dk/simple.temperature.intent
deleted file mode 100644
index bad00a0e..00000000
--- a/vocab/da-dk/simple.temperature.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-# temperature
-temperatur
diff --git a/vocab/da-dk/what.is.multi.day.forecast.intent b/vocab/da-dk/what.is.multi.day.forecast.intent
deleted file mode 100644
index 7e518e38..00000000
--- a/vocab/da-dk/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,8 +0,0 @@
-# weather (in|over|for) the next {num} days
-vejr (i|over|til) den næste {num} dage
-# what is the weather (like|) (in|over|for) the next {num} days
-hvordan er vejret (synes godt om|) (i|over|til) den næste {num} dage
-# what will the weather be (like|) (in|over|for) the next {num} days
-hvad bliver vejret (synes godt om|) (i|over|til) den næste {num} dage
-# what is the weather (going to |gonna |)be (like |)(in|over|for) the next {num} days
-hvordan er vejret (går til |skal nok |)være (synes godt om |)(i|over|til) den næste {num} dage
diff --git a/vocab/da-dk/what.is.three.day.forecast.intent b/vocab/da-dk/what.is.three.day.forecast.intent
deleted file mode 100644
index 269bb1fa..00000000
--- a/vocab/da-dk/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-# (3|three) day forecast
-(3|tre) dag prognose
-# (tell me|what is) the (3 day|three day|extended) (forecast|weather forecast)
-(Fortæl mig|hvad er) det (3 dage|tre dage|udvidet) (Vejrudsigt|vejrudsigt)
diff --git a/vocab/da-dk/what.is.three.day.forecast.location.intent b/vocab/da-dk/what.is.three.day.forecast.location.intent
deleted file mode 100644
index 8686cc91..00000000
--- a/vocab/da-dk/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-# (tell me|what is) the (3 day|three-day|extended) (weather|forecast|weather forecast) (for|in) {Location}
-(Fortæl mig|hvad er) det (3 dage|tredages|udvidet) (vejr|Vejrudsigt|vejrudsigt) (til|i) {Location}
diff --git a/vocab/da-dk/what.is.two.day.forecast.intent b/vocab/da-dk/what.is.two.day.forecast.intent
deleted file mode 100644
index 0dfd0d6f..00000000
--- a/vocab/da-dk/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,6 +0,0 @@
-# weather (for|on|) (next|) {day_one} and {day_two}
-vejr (til|på|) (Næste|) {day_one} og {day_two}
-# what('s| is) the weather (going to |gonna |)be (like |)(for|on|) (next|) {day_one} and {day_two}
-hvad('s| er) vejret (går til |skal nok |)være (synes godt om |)(til|på|) (Næste|) {day_one} og {day_two}
-# what will the weather be (like |)(for|on|) (next|) {day_one} and {day_two}
-hvad bliver vejret (synes godt om |)(til|på|) (Næste|) {day_one} og {day_two}
diff --git a/vocab/da-dk/whats.weather.like.intent b/vocab/da-dk/whats.weather.like.intent
deleted file mode 100644
index 98c73763..00000000
--- a/vocab/da-dk/whats.weather.like.intent
+++ /dev/null
@@ -1,10 +0,0 @@
-# what is it like out (today|)
-hvordan er det ud (i dag|)
-# what is it like outside
-hvordan er det udenfor
-# weather
-vejr
-# forecast
-Vejrudsigt
-# weather forecast
-vejrudsigt
diff --git a/vocab/de-de/ClearAlternatives.voc b/vocab/de-de/ClearAlternatives.voc
deleted file mode 100644
index 7f2b86b8..00000000
--- a/vocab/de-de/ClearAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Ähnliche Alternativen zu schönem Wetter
-(Nebel|Wolken|Wolke)
diff --git a/vocab/de-de/CloudyAlternatives.voc b/vocab/de-de/CloudyAlternatives.voc
deleted file mode 100644
index 2ba67c34..00000000
--- a/vocab/de-de/CloudyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativen ähnlich zu bewölktem Wetter
-(klar|Nebel|Nebel|Regen|Nieselregen)
diff --git a/vocab/de-de/FogAlternatives.voc b/vocab/de-de/FogAlternatives.voc
deleted file mode 100644
index bdcdd64f..00000000
--- a/vocab/de-de/FogAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativen zu nebligem Wetter
-(klar|Wolken|Wolke|teilweise bewölkt)
diff --git a/vocab/de-de/RainAlternatives.voc b/vocab/de-de/RainAlternatives.voc
deleted file mode 100644
index df30d577..00000000
--- a/vocab/de-de/RainAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-Alternativen vergleichbar mit Regen
-(Schnee|leichter Schneefall|Schneeregen|Nebel|Nebel)
diff --git a/vocab/de-de/SnowAlternatives.voc b/vocab/de-de/SnowAlternatives.voc
deleted file mode 100644
index 38e0b6aa..00000000
--- a/vocab/de-de/SnowAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Bedingungen ähnlich wie Schneefall
-(Regen|leichter Regen)
diff --git a/vocab/de-de/StormAlternatives.voc b/vocab/de-de/StormAlternatives.voc
deleted file mode 100644
index 8abfddfc..00000000
--- a/vocab/de-de/StormAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativen ähnlich zu bewölktem Wetter
-(Nieselregen | Regen | leichter Regen | Schnee | leichter Schnee | Schneeregen | Nebel | Nebel | Wolken | Wolke | teilweise bewölkt)
diff --git a/vocab/de-de/ThreeDay.voc b/vocab/de-de/ThreeDay.voc
deleted file mode 100644
index 9ec24e83..00000000
--- a/vocab/de-de/ThreeDay.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-3 Tag(e|)
-drei Tag (e|)
-ein paar Tage
diff --git a/vocab/de-de/WeatherType.voc b/vocab/de-de/WeatherType.voc
deleted file mode 100644
index 5c523653..00000000
--- a/vocab/de-de/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-regnen|regnet
-schneien|schneit
-Schneeregen
-hageln|hagelt
-sonnig|Sonne
-heiß|warm
-kalt|kühl
diff --git a/vocab/de-de/simple.temperature.intent b/vocab/de-de/simple.temperature.intent
deleted file mode 100644
index 9d86c38a..00000000
--- a/vocab/de-de/simple.temperature.intent
+++ /dev/null
@@ -1 +0,0 @@
-Temperatur
diff --git a/vocab/de-de/what.is.multi.day.forecast.intent b/vocab/de-de/what.is.multi.day.forecast.intent
deleted file mode 100644
index 90a7925b..00000000
--- a/vocab/de-de/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-Wetter (in | über | für) die nächsten {num} Tage
-(wie wird |) das Wetter (in | für | über) die nächsten {num} Tage
-(wie wird|)das Wetter (in den| über die| für die) nächsten {num} Tagen sein
-(wie wird das |das|) Wetter (in |über|für) (|die|den) nächsten {num} Tagen sein
diff --git a/vocab/de-de/what.is.three.day.forecast.intent b/vocab/de-de/what.is.three.day.forecast.intent
deleted file mode 100644
index a7bafa9c..00000000
--- a/vocab/de-de/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-(3 | drei) Tage Vorhersage
-(sag mir |was ist) die (3 Tage |drei-Tages|verlängerte|wöchentliche|Wochen) (Vorhersage|Wettervorhersage)
diff --git a/vocab/de-de/what.is.three.day.forecast.location.intent b/vocab/de-de/what.is.three.day.forecast.location.intent
deleted file mode 100644
index a2fc8ea9..00000000
--- a/vocab/de-de/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1 +0,0 @@
-(sag mir|was ist) die (3 Tage|drei-Tages|verlängerte|wöchentliche|Wochen) (Wettervorhersage|Wettervorhersage) (für|in) {Location}
diff --git a/vocab/de-de/what.is.two.day.forecast.intent b/vocab/de-de/what.is.two.day.forecast.intent
deleted file mode 100644
index a7edb94b..00000000
--- a/vocab/de-de/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,3 +0,0 @@
-Wetter (für die| über die |) (nächsten |) {day_one} und {day_two}
-(wie wird|das ) Wetter (wird | sein |) (für | den |) (nächsten |) {day_one} und {day_two}
-Wie wird das Wetter (für | am |) (nächsten |) {day_one} und {day_two}
diff --git a/vocab/de-de/whats.weather.like.intent b/vocab/de-de/whats.weather.like.intent
deleted file mode 100644
index 761ac1f0..00000000
--- a/vocab/de-de/whats.weather.like.intent
+++ /dev/null
@@ -1,5 +0,0 @@
-Vorhersage
-Wetter
-wie ist es (heute |) drausen
-Wie ist es draußen
-Wettervorhersage
diff --git a/vocab/en-us/ClearAlternatives.voc b/vocab/en-us/ClearAlternatives.voc
deleted file mode 100644
index f6bdd087..00000000
--- a/vocab/en-us/ClearAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar to clear weather
-(fog|mist|clouds|cloud)
diff --git a/vocab/en-us/CloudyAlternatives.voc b/vocab/en-us/CloudyAlternatives.voc
deleted file mode 100644
index d3bf7f42..00000000
--- a/vocab/en-us/CloudyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar to clody weather
-(clear|mist|fog|rain| light rain)
diff --git a/vocab/en-us/FogAlternatives.voc b/vocab/en-us/FogAlternatives.voc
deleted file mode 100644
index 0bc78fe9..00000000
--- a/vocab/en-us/FogAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives to foggy weather
-(clear|clouds|cloud|partially cloudy)
diff --git a/vocab/en-us/RainAlternatives.voc b/vocab/en-us/RainAlternatives.voc
deleted file mode 100644
index 5ee042e6..00000000
--- a/vocab/en-us/RainAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar to rain
-(snow|light snow|sleet|fog|mist)
diff --git a/vocab/en-us/SnowAlternatives.voc b/vocab/en-us/SnowAlternatives.voc
deleted file mode 100644
index 0ce959b0..00000000
--- a/vocab/en-us/SnowAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Conditions similar to snow
-(rain|light rain)
diff --git a/vocab/en-us/StormAlternatives.voc b/vocab/en-us/StormAlternatives.voc
deleted file mode 100644
index df62273e..00000000
--- a/vocab/en-us/StormAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar to stormy weather
-(drizzle|rain|light rain|snow|light snow|sleet|fog|mist|clouds|cloud|partially cloudy)
diff --git a/vocab/en-us/Temperature.voc b/vocab/en-us/Temperature.voc
deleted file mode 100644
index ce033c2d..00000000
--- a/vocab/en-us/Temperature.voc
+++ /dev/null
@@ -1,6 +0,0 @@
-temperature
-cold
-chilly
-cool
-warm
-hot
diff --git a/vocab/en-us/ThreeDay.voc b/vocab/en-us/ThreeDay.voc
deleted file mode 100644
index e0ef09c4..00000000
--- a/vocab/en-us/ThreeDay.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-3 day(s|)
-three day(s|)
-few days
diff --git a/vocab/en-us/WeatherType.voc b/vocab/en-us/WeatherType.voc
deleted file mode 100644
index 79188010..00000000
--- a/vocab/en-us/WeatherType.voc
+++ /dev/null
@@ -1,8 +0,0 @@
-rain|raining
-snow|snowing
-sleet
-hail|hailing
-sunny|sun
-hot|warm
-cold|cool
-
diff --git a/vocab/en-us/When.voc b/vocab/en-us/When.voc
deleted file mode 100644
index 1a06d5b1..00000000
--- a/vocab/en-us/When.voc
+++ /dev/null
@@ -1,5 +0,0 @@
-when
-when's
-when will it
-when is it
-what time
diff --git a/vocab/en-us/what.is.multi.day.forecast.intent b/vocab/en-us/what.is.multi.day.forecast.intent
deleted file mode 100644
index 71d040d9..00000000
--- a/vocab/en-us/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-weather (in|over|for) the next {num} days
-what is the weather (like|) (in|over|for) the next {num} days
-what will the weather be (like|) (in|over|for) the next {num} days
-what is the weather (going to |gonna |)be (like |)(in|over|for) the next {num} days
diff --git a/vocab/en-us/what.is.three.day.forecast.intent b/vocab/en-us/what.is.three.day.forecast.intent
deleted file mode 100644
index 32f77149..00000000
--- a/vocab/en-us/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-(3|three) day forecast
-(tell me|what is) the (3 day|three day|extended) (forecast|weather forecast)
diff --git a/vocab/en-us/what.is.three.day.forecast.location.intent b/vocab/en-us/what.is.three.day.forecast.location.intent
deleted file mode 100644
index add0ff10..00000000
--- a/vocab/en-us/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1 +0,0 @@
-(tell me|what is) the (3 day|three-day|extended) (weather|forecast|weather forecast) (for|in) {Location}
diff --git a/vocab/en-us/what.is.two.day.forecast.intent b/vocab/en-us/what.is.two.day.forecast.intent
deleted file mode 100644
index 1a905ca0..00000000
--- a/vocab/en-us/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,3 +0,0 @@
-weather (for|on|) (next|) {day_one} and {day_two}
-what('s| is) the weather (going to |gonna |)be (like |)(for|on|) (next|) {day_one} and {day_two}
-what will the weather be (like |)(for|on|) (next|) {day_one} and {day_two}
diff --git a/vocab/en-us/whats.weather.like.intent b/vocab/en-us/whats.weather.like.intent
deleted file mode 100644
index 2229cb86..00000000
--- a/vocab/en-us/whats.weather.like.intent
+++ /dev/null
@@ -1,5 +0,0 @@
-what is it like out (today|)
-what is it like outside
-weather
-forecast
-weather forecast
diff --git a/vocab/es-es/WeatherType.voc b/vocab/es-es/WeatherType.voc
deleted file mode 100644
index 5fbb3284..00000000
--- a/vocab/es-es/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-lluvia|lloviendo
-nieve|nevando
-aguanieve
-granizo|granizando
-soleado|sol
-caliente|caluroso
-frío|fresco
diff --git a/vocab/fr-fr/WeatherType.voc b/vocab/fr-fr/WeatherType.voc
deleted file mode 100644
index 55cdaa8d..00000000
--- a/vocab/fr-fr/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-pluie|pluie
-neige|neiger
-neige fondue
-grêle|grêle
-ensoleillé|soleil
-chaud
-froid
diff --git a/vocab/gl-es/ClearAlternatives.voc b/vocab/gl-es/ClearAlternatives.voc
deleted file mode 100644
index d35fa5a0..00000000
--- a/vocab/gl-es/ClearAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas similares a tempo firme
-(nebuloso|neboeiro|néboa|nubes|nube)
diff --git a/vocab/gl-es/CloudyAlternatives.voc b/vocab/gl-es/CloudyAlternatives.voc
deleted file mode 100644
index b7bd2c9e..00000000
--- a/vocab/gl-es/CloudyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas semellantes ao tempo nubrado
-(claro|neblina|neboeiro|chuvia|chuvia miúda)
diff --git a/vocab/gl-es/FogAlternatives.voc b/vocab/gl-es/FogAlternatives.voc
deleted file mode 100644
index 1b4c2bab..00000000
--- a/vocab/gl-es/FogAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas ao tempo nubrado
-(despexado|nubes|nubrado|parcialmente nubrado)
diff --git a/vocab/gl-es/RainAlternatives.voc b/vocab/gl-es/RainAlternatives.voc
deleted file mode 100644
index 25142570..00000000
--- a/vocab/gl-es/RainAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas similares á chuvia
-(neve|neve leve|granizo|néboa|neblina)
diff --git a/vocab/gl-es/SnowAlternatives.voc b/vocab/gl-es/SnowAlternatives.voc
deleted file mode 100644
index 743a0434..00000000
--- a/vocab/gl-es/SnowAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Condicións similares para a neve
-(chuvia|chuvia leve)
diff --git a/vocab/gl-es/StormAlternatives.voc b/vocab/gl-es/StormAlternatives.voc
deleted file mode 100644
index 9c4f7fac..00000000
--- a/vocab/gl-es/StormAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas semellantes ao tempo tempestuoso
-(chuvisco|chuvia|chuvia fraca|neve|neve fraca|granizo|neboeiro|néboa|néboa|nubes|nube|parcialmente nubrado)
diff --git a/vocab/gl-es/ThreeDay.voc b/vocab/gl-es/ThreeDay.voc
deleted file mode 100644
index a1c9af09..00000000
--- a/vocab/gl-es/ThreeDay.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-3 días
-tres días
-próximos días
diff --git a/vocab/gl-es/WeatherType.voc b/vocab/gl-es/WeatherType.voc
deleted file mode 100644
index 3536ac70..00000000
--- a/vocab/gl-es/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-chuvia|chovendo
-neve|nevando
-granizo
-granizo|chovendo granizo
-(soleado|sol)
-quente|morno
-frío|conxelado
diff --git a/vocab/gl-es/simple.temperature.intent b/vocab/gl-es/simple.temperature.intent
deleted file mode 100644
index 7d8f4cb4..00000000
--- a/vocab/gl-es/simple.temperature.intent
+++ /dev/null
@@ -1 +0,0 @@
-temperatura
diff --git a/vocab/gl-es/what.is.multi.day.forecast.intent b/vocab/gl-es/what.is.multi.day.forecast.intent
deleted file mode 100644
index 693ccfb9..00000000
--- a/vocab/gl-es/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-o tempo (nos|para os) próximos {num} días
-como será o tempo nos próximos {num} días
-como será o tempo nos próximos {num} días
-cal é a previsión do tempo (nos|para os) próximos {num} días
diff --git a/vocab/gl-es/what.is.three.day.forecast.intent b/vocab/gl-es/what.is.three.day.forecast.intent
deleted file mode 100644
index a6b92ca2..00000000
--- a/vocab/gl-es/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-previsión para (3|tres) días
-(dime|cal é) a (previsión|previsión do tempo) (de 3 días|para tres días|prolongada|semanal| para a semana)
diff --git a/vocab/gl-es/what.is.three.day.forecast.location.intent b/vocab/gl-es/what.is.three.day.forecast.location.intent
deleted file mode 100644
index c5d2b786..00000000
--- a/vocab/gl-es/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1 +0,0 @@
-(dime|cal é) (o|a) (previsión do tempo| tempo|previsión) (para 3 días|de tres días|prolongada|semanal|para a semana) (para|en) {Location}
diff --git a/vocab/gl-es/what.is.two.day.forecast.intent b/vocab/gl-es/what.is.two.day.forecast.intent
deleted file mode 100644
index 8b496ba6..00000000
--- a/vocab/gl-es/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,3 +0,0 @@
-tempo (para|en) (próximo|) {day_one} e {day_two}
-como será o tempo (nos próximos|en) {day_one} e {day_two}
-como será o tempo (en|nos próximos) {day_one} e {day_two}
diff --git a/vocab/gl-es/whats.weather.like.intent b/vocab/gl-es/whats.weather.like.intent
deleted file mode 100644
index cd4bff33..00000000
--- a/vocab/gl-es/whats.weather.like.intent
+++ /dev/null
@@ -1,5 +0,0 @@
-previsión
-(tempo|clima)
-como está o tempo fóra (hoxe|)
-Como está o tempo fóra
-previsión meteorolóxica
diff --git a/vocab/it-it/ClearAlternatives.voc b/vocab/it-it/ClearAlternatives.voc
deleted file mode 100644
index 388d88cd..00000000
--- a/vocab/it-it/ClearAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternative simili a tempo sereno
-(nebbia|foschia|nuvole|nuvolo)
diff --git a/vocab/it-it/CloudyAlternatives.voc b/vocab/it-it/CloudyAlternatives.voc
deleted file mode 100644
index c2042ab4..00000000
--- a/vocab/it-it/CloudyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternative simili a tempo nuvoloso
-(chiaro|umido|nebbia|pioggia|pioggia leggera)
diff --git a/vocab/it-it/FoggyAlternatives.voc b/vocab/it-it/FoggyAlternatives.voc
deleted file mode 100644
index 0ec7481e..00000000
--- a/vocab/it-it/FoggyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives to foggy weather
-(sereno|nuvole|nube|parzialmente nuvoloso)
diff --git a/vocab/it-it/RainAlternatives.voc b/vocab/it-it/RainAlternatives.voc
deleted file mode 100644
index 059c6f98..00000000
--- a/vocab/it-it/RainAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar a pioggia
-(neve|neve leggera|nevischio|nebbia|nebbioso)
diff --git a/vocab/it-it/SnowAlternatives.voc b/vocab/it-it/SnowAlternatives.voc
deleted file mode 100644
index e47c6f94..00000000
--- a/vocab/it-it/SnowAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Conditions similar to neve
-(pioggia|pioggia leggera)
diff --git a/vocab/it-it/WeatherType.voc b/vocab/it-it/WeatherType.voc
deleted file mode 100644
index 8f70e733..00000000
--- a/vocab/it-it/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-pioggia|piove
-neve|nevica
-nevischio
-grandine|grandina
-soleggiato|sole
-caldo|calda
-freddo|fredda
diff --git a/vocab/it-it/simple.temperature.intent b/vocab/it-it/simple.temperature.intent
deleted file mode 100644
index 7d8f4cb4..00000000
--- a/vocab/it-it/simple.temperature.intent
+++ /dev/null
@@ -1 +0,0 @@
-temperatura
diff --git a/vocab/it-it/what.is.multi.day.forecast.intent b/vocab/it-it/what.is.multi.day.forecast.intent
deleted file mode 100644
index 32f21341..00000000
--- a/vocab/it-it/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-come sarà il tempo (per i|nei) prossimi {num} giorni?
-previsioni (per i|nei) prossimi {num} giorni?
diff --git a/vocab/it-it/what.is.three.day.forecast.intent b/vocab/it-it/what.is.three.day.forecast.intent
deleted file mode 100644
index c2dc125e..00000000
--- a/vocab/it-it/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,5 +0,0 @@
-
-(dimmi|com'è|qual'è) (il|le) (meteo|previsioni|previsioni meteo) (per|dei) (prossimi|prossima) (giorni|3 giorni|settimana)
-
-quali sono le previsioni per questa settimana
-com'è il tempo questa settimana
diff --git a/vocab/it-it/what.is.three.day.forecast.location.intent b/vocab/it-it/what.is.three.day.forecast.location.intent
deleted file mode 100644
index 1e5cf895..00000000
--- a/vocab/it-it/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-quali sono le previsioni per questa settimana a {location}
-com'è il tempo questa settimana a {location}
diff --git a/vocab/it-it/what.is.two.day.forecast.intent b/vocab/it-it/what.is.two.day.forecast.intent
deleted file mode 100644
index 7f27c3dc..00000000
--- a/vocab/it-it/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-il tempo per (i prossimi|) {day_one} e {day_two}
-come sarà il tempo per (i prossimi|) {day_one} e {day_two}
diff --git a/vocab/it-it/whats.weather.like.intent b/vocab/it-it/whats.weather.like.intent
deleted file mode 100644
index 508cd543..00000000
--- a/vocab/it-it/whats.weather.like.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-com'è il meteo (oggi|)
-come si sta fuori
diff --git a/vocab/nl-nl/WeatherType.voc b/vocab/nl-nl/WeatherType.voc
deleted file mode 100644
index c16355e0..00000000
--- a/vocab/nl-nl/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-regen|regenen
-sneeuw|sneeuwen
-ijzel
-hagel|hagelen
-zonnig|zon
-heet|warm
-koud|koel
diff --git a/vocab/pt-br/ClearAlternatives.voc b/vocab/pt-br/ClearAlternatives.voc
deleted file mode 100644
index b104b96c..00000000
--- a/vocab/pt-br/ClearAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas similares a tempo firme
-(nebuloso|nevoeiro|névoa|nuvens|nuvem)
diff --git a/vocab/pt-br/CloudyAlternatives.voc b/vocab/pt-br/CloudyAlternatives.voc
deleted file mode 100644
index 365e01e7..00000000
--- a/vocab/pt-br/CloudyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas semelhantes ao tempo nublado
-(claro|neblina|nevoeiro|chuva|chuva fraca)
diff --git a/vocab/pt-br/FogAlternatives.voc b/vocab/pt-br/FogAlternatives.voc
deleted file mode 100644
index a05fa844..00000000
--- a/vocab/pt-br/FogAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas para o tempo nublado
-(limpo|nuvens|nublado|parcialmente nublado)
diff --git a/vocab/pt-br/RainAlternatives.voc b/vocab/pt-br/RainAlternatives.voc
deleted file mode 100644
index c459c30e..00000000
--- a/vocab/pt-br/RainAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas similares à chuva
-(neve|neve leve|granizo|névoa|neblina)
diff --git a/vocab/pt-br/SnowAlternatives.voc b/vocab/pt-br/SnowAlternatives.voc
deleted file mode 100644
index 04d320f5..00000000
--- a/vocab/pt-br/SnowAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Condições similares à neve
-(chuva|chuva leve)
diff --git a/vocab/pt-br/StormAlternatives.voc b/vocab/pt-br/StormAlternatives.voc
deleted file mode 100644
index d796b6cb..00000000
--- a/vocab/pt-br/StormAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativas semelhantes ao tempo tempestuoso
-(chuvisco|chuva|chuva fraca|neve|neve fraca|granizo|nevoeiro|névoa|névoa|nuvens|nuvem|parcialmente nublado)
diff --git a/vocab/pt-br/ThreeDay.voc b/vocab/pt-br/ThreeDay.voc
deleted file mode 100644
index 92abadb1..00000000
--- a/vocab/pt-br/ThreeDay.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-3 dias
-três dias
-próximos dias
diff --git a/vocab/pt-br/WeatherType.voc b/vocab/pt-br/WeatherType.voc
deleted file mode 100644
index 79dbf06c..00000000
--- a/vocab/pt-br/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-chuva|chovendo
-neve|nevando
-granizo
-granizo|chovendo granizo
-(ensolarado|sol)
-quente|morno
-frio|gelado
diff --git a/vocab/pt-br/simple.temperature.intent b/vocab/pt-br/simple.temperature.intent
deleted file mode 100644
index 7d8f4cb4..00000000
--- a/vocab/pt-br/simple.temperature.intent
+++ /dev/null
@@ -1 +0,0 @@
-temperatura
diff --git a/vocab/pt-br/what.is.multi.day.forecast.intent b/vocab/pt-br/what.is.multi.day.forecast.intent
deleted file mode 100644
index f6634d4b..00000000
--- a/vocab/pt-br/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-tempo (nos|para os) próximos {num} dias
-como será o tempo nos próximos {num} dias
-como será o tempo nos próximos {num} dias
-qual é a previsão do tempo (nos|para os) próximos {num} dias
diff --git a/vocab/pt-br/what.is.three.day.forecast.intent b/vocab/pt-br/what.is.three.day.forecast.intent
deleted file mode 100644
index 34ad6836..00000000
--- a/vocab/pt-br/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-previsão para (3|três) dias
-(diga-me|qual é) a (previsão|previsão do tempo) (de 3 dias|para três dias|prolongada|semanal| para a semana)
diff --git a/vocab/pt-br/what.is.three.day.forecast.location.intent b/vocab/pt-br/what.is.three.day.forecast.location.intent
deleted file mode 100644
index 640d1b9d..00000000
--- a/vocab/pt-br/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1 +0,0 @@
-(diga-me|me diga|qual é) (o|a) (previsão do tempo| tempo|previsão) (para 3 dias|de três dias|prolongada|semanal|para a semana) (para|em) {Location}
diff --git a/vocab/pt-br/what.is.two.day.forecast.intent b/vocab/pt-br/what.is.two.day.forecast.intent
deleted file mode 100644
index 786e0cdd..00000000
--- a/vocab/pt-br/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,3 +0,0 @@
-tempo (para|em) (próximo|) {day_one} e {day_two}
-como será o tempo (nos próximos|em) {day_one} e {day_two}
-como será o tempo (em|nos próximos) {day_one} e {day_two}
diff --git a/vocab/pt-br/whats.weather.like.intent b/vocab/pt-br/whats.weather.like.intent
deleted file mode 100644
index 6f76530e..00000000
--- a/vocab/pt-br/whats.weather.like.intent
+++ /dev/null
@@ -1,5 +0,0 @@
-previsão
-(tempo|clima)
-como está lá fora (hoje|)
-como está lá fora
-previsão do tempo
diff --git a/vocab/ru-ru/WeatherType.voc b/vocab/ru-ru/WeatherType.voc
deleted file mode 100644
index 181ef683..00000000
--- a/vocab/ru-ru/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-дождь
-снег
-мокрый снег
-град
-солнечно
-жарко
-холодно
diff --git a/vocab/sv-se/ClearAlternatives.voc b/vocab/sv-se/ClearAlternatives.voc
deleted file mode 100644
index 9b47e62c..00000000
--- a/vocab/sv-se/ClearAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar to clear weather
-(dimma|dimmigt|moln|molnigt)
diff --git a/vocab/sv-se/CloudyAlternatives.voc b/vocab/sv-se/CloudyAlternatives.voc
deleted file mode 100644
index 6a67e263..00000000
--- a/vocab/sv-se/CloudyAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar to clody weather
-(klart|dimma|regn|lätt regn)
diff --git a/vocab/sv-se/FogAlternatives.voc b/vocab/sv-se/FogAlternatives.voc
deleted file mode 100644
index 3d357758..00000000
--- a/vocab/sv-se/FogAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives to foggy weather
-(klart|moln|spridda moln|molnigt)
diff --git a/vocab/sv-se/RainAlternatives.voc b/vocab/sv-se/RainAlternatives.voc
deleted file mode 100644
index bac31e9c..00000000
--- a/vocab/sv-se/RainAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternatives similar to rain
-(snö|snöa|lätt snö|snöfall|dimma)
diff --git a/vocab/sv-se/SnowAlternatives.voc b/vocab/sv-se/SnowAlternatives.voc
deleted file mode 100644
index e58f3f7e..00000000
--- a/vocab/sv-se/SnowAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Conditions similar to snow
-(regn|lätt regn|duggregn)
diff --git a/vocab/sv-se/StormAlternatives.voc b/vocab/sv-se/StormAlternatives.voc
deleted file mode 100644
index 18f366b8..00000000
--- a/vocab/sv-se/StormAlternatives.voc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Alternativ som liknar molnigt väder
-(duggregn|regn|lätt regn|snö|lätt snö|snöslask|dimma|molnigt|moln|delvis molnigt)
diff --git a/vocab/sv-se/ThreeDay.voc b/vocab/sv-se/ThreeDay.voc
deleted file mode 100644
index 2658e33c..00000000
--- a/vocab/sv-se/ThreeDay.voc
+++ /dev/null
@@ -1,3 +0,0 @@
-3 dag(ar|)
-tre dag(ar|)
-några dagar
diff --git a/vocab/sv-se/WeatherType.voc b/vocab/sv-se/WeatherType.voc
deleted file mode 100644
index 740692a7..00000000
--- a/vocab/sv-se/WeatherType.voc
+++ /dev/null
@@ -1,7 +0,0 @@
-regn|regnar
-snö|snöar
-snöblandat regn
-hagel|haglar
-soligt|sol
-het|varm
-kallt|kall
diff --git a/vocab/sv-se/simple.temperature.intent b/vocab/sv-se/simple.temperature.intent
deleted file mode 100644
index e8a58ef5..00000000
--- a/vocab/sv-se/simple.temperature.intent
+++ /dev/null
@@ -1 +0,0 @@
-temperatur
diff --git a/vocab/sv-se/what.is.multi.day.forecast.intent b/vocab/sv-se/what.is.multi.day.forecast.intent
deleted file mode 100644
index a270cbdb..00000000
--- a/vocab/sv-se/what.is.multi.day.forecast.intent
+++ /dev/null
@@ -1,4 +0,0 @@
-väder (i|över de|för de) kommande {num} dagarna
-vad är vädret (som|) (i|över|för de) kommande {num} dagarna
-vad blir vädret (som|) (i|över de| för de) kommande {num} dagarna
-hur (kommer vädret |kommer det |)vara (i|över de|för de) kommande {num} dagarna
diff --git a/vocab/sv-se/what.is.three.day.forecast.intent b/vocab/sv-se/what.is.three.day.forecast.intent
deleted file mode 100644
index b3b7bc8a..00000000
--- a/vocab/sv-se/what.is.three.day.forecast.intent
+++ /dev/null
@@ -1,2 +0,0 @@
-(3|tre) dagars prognos
-(berätta|vad är) (3 dagars|tre dagars|tredagars|den utökade) (prognosen|väderprognosen)
diff --git a/vocab/sv-se/what.is.three.day.forecast.location.intent b/vocab/sv-se/what.is.three.day.forecast.location.intent
deleted file mode 100644
index a77323dc..00000000
--- a/vocab/sv-se/what.is.three.day.forecast.location.intent
+++ /dev/null
@@ -1 +0,0 @@
-(berätta|vad är) (3 dagars|tre dagars|tredagars|den utökade) (prognosen|väderprognosen|väderleksrapporten) (för|i) {Location}
diff --git a/vocab/sv-se/what.is.two.day.forecast.intent b/vocab/sv-se/what.is.two.day.forecast.intent
deleted file mode 100644
index 4e2a0fc4..00000000
--- a/vocab/sv-se/what.is.two.day.forecast.intent
+++ /dev/null
@@ -1,3 +0,0 @@
-väder (för|på|) (nästa|) {day_one} och {day_two}
-hur (är vädret |kommer vädret vara|) (för|på|) (nästa|) {day_one} och {day_two}
-vad blir vädret (för|på|) (nästa|) {day_one} och {day_two}
diff --git a/vocab/sv-se/whats.weather.like.intent b/vocab/sv-se/whats.weather.like.intent
deleted file mode 100644
index fe998a05..00000000
--- a/vocab/sv-se/whats.weather.like.intent
+++ /dev/null
@@ -1,5 +0,0 @@
-prognos
-väder
-hur är det utomhus (idag|)
-hur ser det ut ute
-väderleksprognos